経済指標をcsvへ保存

経済指標をcsvへ保存

import os
import pandas as pd
import matplotlib.pyplot as plt
from full_fred.fred import Fred
from datetime import datetime

# フォント設定(任意)
plt.rcParams['font.family'] = 'Times New Roman'

# --- FRED APIキー設定 ---
# 環境変数から取得(事前に設定しておくか、以下のように直接記述しても可)
# os.environ['FRED_API_KEY'] = 'あなたのAPIキー'
fred = Fred()
print(f"FRED APIキーが環境変数に設定されている:{fred.env_api_key_found()}")

# --- データ取得関数 ---
def get_fred_data(name, start="2013-01-01", end=""):
    df = fred.get_series_df(name)[["date", "value"]].copy()
    df["date"] = pd.to_datetime(df["date"])
    df["value"] = pd.to_numeric(df["value"], errors="coerce")
    df = df.set_index("date")

    if end == "":
        df = df.loc[f"{start}":]
    else:
        df = df.loc[f"{start}":f"{end}"]
    return df

# --- グラフ表示関数 ---
def MakeGraphFromFred(name, start):
    if type(name) != list:
        df = get_fred_data(name, start=start)
        data1 = df.reset_index()
        fig, axes = plt.subplots(1, 1, figsize=(6, 4), tight_layout=False, facecolor="whitesmoke")
        axes.plot(data1['date'], data1['value'])
        axes.set_xlabel('date')
        axes.set_ylabel(name)
        axes.set_title(name)
    else:
        num = len(name)
        fig, axes = plt.subplots(num, 1, figsize=(10, 4 * num / 2), tight_layout=False, sharex=True, facecolor="whitesmoke")
        for i in range(num):
            df = get_fred_data(name[i], start=start)
            data1 = df.reset_index()
            axes[i].plot(data1['date'], data1['value'])
            axes[i].set_xlabel('date')
            axes[i].set_ylabel(name[i])
    plt.show()

# --- CSV保存関数 ---
def save_fred_data_to_csv(series_name, start="1980-01-01", end=""):
    df = get_fred_data(series_name, start=start, end=end)

    # 保存ディレクトリ作成
    save_dir = "./fred_data"
    os.makedirs(save_dir, exist_ok=True)

    # 日付範囲取得(YYYY)
    start_date = df.index.min().strftime("%Y")
    end_date = df.index.max().strftime("%Y")

    # ファイル名作成
    filename = f"{series_name}_{start_date}_{end_date}.csv"
    filepath = os.path.join(save_dir, filename)

    # CSV保存
    df.reset_index().to_csv(filepath, index=False, encoding="utf-8-sig")
    print(f"保存完了: {filepath}")

# --- 実行例(UNRATE) ---
if __name__ == "__main__":
    # データ取得とグラフ表示
    MakeGraphFromFred("UNRATE", start="1980-01-01")

    # CSV保存
    save_fred_data_to_csv("UNRATE", start="1980-01-01")

として保存

これを実行するとグラフが表示され

 python unrate_csv.py 
FRED APIキーが環境変数に設定されている:True
保存完了: ./fred_data/UNRATE_1980_2025.csv

となって
fred_data の中に失業率のcsvファイルが作成される

他に取得できるものを探す

✅ よく使われるFREDの経済指標一覧(コード付き)
分類 指標名 シリーズID(コード) 内容
✅ 雇用関連 失業率 UNRATE 米国の失業率(月次)
非農業部門雇用者数 PAYEMS 米国の雇用者数(非農業)
労働参加率 CIVPART 労働人口比率
✅ 物価・インフレ 消費者物価指数 CPIAUCSL インフレの代表的指標(都市部)
コアCPI(食料・エネルギー除く) CPILFESL より安定したインフレ指標
PCEデフレーター PCEPI FRBが重視する物価指標
コアPCE PCEPILFE 食料とエネルギー除いたPCE
✅ 金融・金利 FFレート(政策金利) FEDFUNDS FOMCが決定する金利
米国10年国債利回り GS10 長期金利の指標
2年国債利回り GS2 短期金利
金利差(10年−2年) 自作可能 景気後退の予兆(逆イールド)
✅ 経済成長 実質GDP(四半期) GDPC1 インフレ調整済みGDP
名目GDP GDP 実額ベースのGDP
景気先行指数 USSLIND 将来の景気動向予測に使用
✅ 消費・支出 小売売上高 RSAFS 米国小売業の売上(月次)
個人消費支出 PCE GDPの約7割を占める項目
✅ 住宅関連 住宅着工件数 HOUST 新築住宅の開始件数
住宅価格指数(FHFA) USSTHPI 米国住宅価格の推移
建設支出 TTLCONS 総建設支出(月次)
✅ 信用・金融 家計債務残高 TOTALSL 個人の借入総額
クレジットカード貸出残高 REVOLSL リボ払い・カード債務
✅ その他 マネーサプライM2 M2SL 通貨供給量
ビットコイン価格(Coinbase) CBBTCUSD 仮想通貨指標(参考値)

✅ FXで重要とされる経済指標【総合ランキング】
ランク 経済指標 内容 市場への影響
⭐️1位 米国雇用統計(Nonfarm Payrolls: NFP) 毎月第一金曜、米国の雇用者増減 ドル、株、金利全てに影響
⭐️2位 消費者物価指数(CPI) 物価上昇率。インフレ判断基準 利上げ/利下げの判断材料
⭐️3位 FOMC政策金利(FEDFUNDS) 米国金利の発表(8回/年) ドルと世界中の金利に影響
⭐️4位 GDP成長率 経済成長の総合評価 景気の健全性判断
⭐️5位 小売売上高 個人消費の動向 GDPと景気の先行指標
⭐️6位 ISM製造業指数 景況感(PMI) 50を境に好不況判断
⭐️7位 PCEデフレーター FRBが重視するインフレ指標 CPIより重視される場合あり
⭐️8位 新規失業保険申請件数 週間ベースの雇用動向 NFPの先行指標
⭐️9位 貿易収支 輸出入のバランス 通貨需給に直接影響
⭐️10位 住宅着工件数/中古住宅販売 住宅市場の健全性 米経済の構造に深く関与

✅ FREDで取得できる代表的なFX関連指標とID
指標カテゴリ 指標名 シリーズID 内容
雇用 非農業部門雇用者数 PAYEMS 米国雇用統計(NFP)
雇用 失業率 UNRATE NFPと並ぶ重要指標
雇用 初回失業保険申請件数 ICSA 毎週発表、先行性あり
物価 CPI CPIAUCSL インフレ判断基準
物価 コアCPI CPILFESL 食品・エネルギー除く
物価 PCEデフレーター PCEPI FRBの注目指標
金利 FFレート(政策金利) FEDFUNDS FOMC発表後更新
金利 2年国債利回り GS2 市場予想の反映が早い
金利 10年国債利回り GS10 長期金利の代表格
金利 利回りスプレッド (GS10 – GS2) 景気後退の兆候(逆イールド)
景況感 ISM製造業指数 NAPM または外部API PMIとして注目
景気 実質GDP GDPC1 経済成長を確認
貿易 経常収支 NETEXP 通貨需給に影響
消費 小売売上高 RSAFS 景気動向の先行指標
住宅 新築住宅着工件数 HOUST 金利の影響を受けやすい

✅ 補足:為替相場への影響の仕組み(簡易図解)

コピーする編集する
CPI上昇 → インフレ懸念 → 利上げ期待↑ → 金利上昇 → 通貨価値↑ → 通貨買い(USD/JPY↑)
GDP減速 → 景気不安 → 利下げ期待↑ → 金利低下 → 通貨価値↓ → 通貨売り(USD/JPY↓)

✅ 使い方の例(Python × FRED)

# 雇用統計データ(NFP)取得してCSV保存
save_fred_data_to_csv("PAYEMS", start="2010-01-01")

# CPIデータ取得
save_fred_data_to_csv("CPIAUCSL", start="2010-01-01")

# 政策金利データ取得
save_fred_data_to_csv("FEDFUNDS", start="2010-01-01")

🔧 応用アイデア
* 経済指標発表カレンダーと自動連動
* 発表前後のUSD/JPYの値動きを自動分析
* SQLiteやNeo4jに格納して分析基盤を構築

ご希望あれば、指標発表日とFXチャートを自動で重ねる可視化スクリプトや、Neo4jでの因果関係分析のテンプレートも提供可能です!

これらを取得するように

import os
import pandas as pd
from full_fred.fred import Fred
from datetime import datetime

# --- FRED APIキー設定(環境変数が必要) ---
fred = Fred()
assert fred.env_api_key_found(), "FRED_API_KEYが環境変数に設定されていません。"

# --- データ取得関数 ---
def get_fred_data(series_id, start="1980-01-01", end=""):
    df = fred.get_series_df(series_id)[["date", "value"]].copy()
    df["date"] = pd.to_datetime(df["date"])
    df["value"] = pd.to_numeric(df["value"], errors="coerce")
    df = df.set_index("date")

    if end:
        df = df.loc[start:end]
    else:
        df = df.loc[start:]
    return df

# --- CSV保存関数 ---
def save_fred_data_to_csv(series_id, label, start="1980-01-01", end=""):
    df = get_fred_data(series_id, start=start, end=end)

    # 保存ディレクトリ作成
    save_dir = "./fred_data_fx"
    os.makedirs(save_dir, exist_ok=True)

    # 実際の取得範囲の年月
    start_date = df.index.min().strftime("%Y")
    end_date = df.index.max().strftime("%Y")

    # ファイル名(シリーズID_年範囲.csv)
    filename = f"{series_id}_{start_date}_{end_date}.csv"
    filepath = os.path.join(save_dir, filename)

    # CSVとして保存
    df.reset_index().to_csv(filepath, index=False, encoding="utf-8-sig")
    print(f"✅ {label} を保存しました → {filepath}")

# --- 重要指標リスト(シリーズIDと名前) ---
indicators = [
    ("PAYEMS", "非農業部門雇用者数 (NFP)"),
    ("UNRATE", "失業率"),
    ("ICSA", "新規失業保険申請件数"),
    ("CPIAUCSL", "消費者物価指数 (CPI)"),
    ("CPILFESL", "コアCPI"),
    ("PCEPI", "PCEデフレーター"),
    ("FEDFUNDS", "FFレート(政策金利)"),
    ("GS2", "2年国債利回り"),
    ("GS10", "10年国債利回り"),
    ("GDPC1", "実質GDP"),
    ("RSAFS", "小売売上高"),
    ("HOUST", "住宅着工件数"),
    ("NETEXP", "経常収支"),
]

# --- 一括実行 ---
if __name__ == "__main__":
    for series_id, label in indicators:
        try:
            save_fred_data_to_csv(series_id, label, start="1980-01-01")
        except Exception as e:
            print(f"⚠️ {label} ({series_id}) の保存に失敗しました: {e}")

として実行する

 python economic_index.py 
✅ 非農業部門雇用者数 (NFP) を保存しました → ./fred_data_fx/PAYEMS_1980_2025.csv
✅ 失業率 を保存しました → ./fred_data_fx/UNRATE_1980_2025.csv
✅ 新規失業保険申請件数 を保存しました → ./fred_data_fx/ICSA_1980_2025.csv
✅ 消費者物価指数 (CPI) を保存しました → ./fred_data_fx/CPIAUCSL_1980_2025.csv
✅ コアCPI を保存しました → ./fred_data_fx/CPILFESL_1980_2025.csv
✅ PCEデフレーター を保存しました → ./fred_data_fx/PCEPI_1980_2025.csv
✅ FFレート(政策金利) を保存しました → ./fred_data_fx/FEDFUNDS_1980_2025.csv
✅ 2年国債利回り を保存しました → ./fred_data_fx/GS2_1980_2025.csv
✅ 10年国債利回り を保存しました → ./fred_data_fx/GS10_1980_2025.csv
✅ 実質GDP を保存しました → ./fred_data_fx/GDPC1_1980_2025.csv
✅ 小売売上高 を保存しました → ./fred_data_fx/RSAFS_1992_2025.csv
✅ 住宅着工件数 を保存しました → ./fred_data_fx/HOUST_1980_2025.csv
✅ 経常収支 を保存しました → ./fred_data_fx/NETEXP_1980_2025.csv

とした
これで経済指標がある程度は保存できている

追加で
✅ よく使われるFREDの経済指標一覧(コード付き)
分類 指標名 シリーズID(コード) 内容
✅ 雇用関連 失業率 UNRATE 米国の失業率(月次)
非農業部門雇用者数 PAYEMS 米国の雇用者数(非農業)
労働参加率 CIVPART 労働人口比率
✅ 物価・インフレ 消費者物価指数 CPIAUCSL インフレの代表的指標(都市部)
コアCPI(食料・エネルギー除く) CPILFESL より安定したインフレ指標
PCEデフレーター PCEPI FRBが重視する物価指標
コアPCE PCEPILFE 食料とエネルギー除いたPCE
✅ 金融・金利 FFレート(政策金利) FEDFUNDS FOMCが決定する金利
米国10年国債利回り GS10 長期金利の指標
2年国債利回り GS2 短期金利
金利差(10年−2年) 自作可能 景気後退の予兆(逆イールド)
✅ 経済成長 実質GDP(四半期) GDPC1 インフレ調整済みGDP
名目GDP GDP 実額ベースのGDP
景気先行指数 USSLIND 将来の景気動向予測に使用
✅ 消費・支出 小売売上高 RSAFS 米国小売業の売上(月次)
個人消費支出 PCE GDPの約7割を占める項目
✅ 住宅関連 住宅着工件数 HOUST 新築住宅の開始件数
住宅価格指数(FHFA) USSTHPI 米国住宅価格の推移
建設支出 TTLCONS 総建設支出(月次)
✅ 信用・金融 家計債務残高 TOTALSL 個人の借入総額
クレジットカード貸出残高 REVOLSL リボ払い・カード債務
✅ その他 マネーサプライM2 M2SL 通貨供給量
ビットコイン価格(Coinbase) CBBTCUSD 仮想通貨指標(参考値)

も取得したい

import os
import pandas as pd
from full_fred.fred import Fred
from datetime import datetime

# --- FRED APIキー確認 ---
fred = Fred()
assert fred.env_api_key_found(), "❌ FRED_API_KEYが環境変数に設定されていません。"

# --- データ取得関数 ---
def get_fred_data(series_id, start="1980-01-01", end=""):
    df = fred.get_series_df(series_id)[["date", "value"]].copy()
    df["date"] = pd.to_datetime(df["date"])
    df["value"] = pd.to_numeric(df["value"], errors="coerce")
    df = df.set_index("date")
    if end:
        df = df.loc[start:end]
    else:
        df = df.loc[start:]
    return df

# --- CSV保存関数 ---
def save_fred_data_to_csv(series_id, label, start="1980-01-01", end=""):
    df = get_fred_data(series_id, start=start, end=end)
    save_dir = "./fred_data_all"
    os.makedirs(save_dir, exist_ok=True)
    start_date = df.index.min().strftime("%Y")
    end_date = df.index.max().strftime("%Y")
    filename = f"{series_id}_{start_date}_{end_date}.csv"
    filepath = os.path.join(save_dir, filename)
    df.reset_index().to_csv(filepath, index=False, encoding="utf-8-sig")
    print(f"✅ {label} を保存しました → {filepath}")

# --- 保存対象の指標一覧(シリーズIDとラベル) ---
indicators = [
    # ✅ 雇用関連
    ("UNRATE", "失業率"),
    ("PAYEMS", "非農業部門雇用者数"),
    ("CIVPART", "労働参加率"),

    # ✅ 物価・インフレ
    ("CPIAUCSL", "消費者物価指数 (CPI)"),
    ("CPILFESL", "コアCPI"),
    ("PCEPI", "PCEデフレーター"),
    ("PCEPILFE", "コアPCE"),

    # ✅ 金融・金利
    ("FEDFUNDS", "政策金利(FFレート)"),
    ("GS10", "10年国債利回り"),
    ("GS2", "2年国債利回り"),

    # ✅ 経済成長
    ("GDPC1", "実質GDP"),
    ("GDP", "名目GDP"),
    ("USSLIND", "景気先行指数"),

    # ✅ 消費・支出
    ("RSAFS", "小売売上高"),
    ("PCE", "個人消費支出"),

    # ✅ 住宅関連
    ("HOUST", "住宅着工件数"),
    ("USSTHPI", "住宅価格指数(FHFA)"),
    ("TTLCONS", "建設支出"),

    # ✅ 信用・金融
    ("TOTALSL", "家計債務残高"),
    ("REVOLSL", "クレジットカード貸出残高"),

    # ✅ その他
    ("M2SL", "マネーサプライM2"),
    ("CBBTCUSD", "ビットコイン価格(Coinbase)"),
]

# --- 一括取得・保存 ---
if __name__ == "__main__":
    for series_id, label in indicators:
        try:
            save_fred_data_to_csv(series_id, label, start="1980-01-01")
        except Exception as e:
            print(f"⚠️ {label} ({series_id}) の保存に失敗しました: {e}")

とすることで取得可能

次は商品関連の取得

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です