FREDの米国経済指標をpythonでグラフ化

# 主旨
Fredモジュールを用いて下記米国経済指標をグラフ化するpythonコードをまとめました。

# 米国経済指標
- 米国失業率
- 長短金利差（10年米国債と2年米国債）
- 長期金利　10年
- 短期金利　2年
- 消費者物価指数CPI
- SP500
- 米国政策金利

# 事前準備
FredのAPI利用登録ページでアカウントを作成し、APIキーを取得してください。([参考](#参考))
取得したAPIキーを、新しい環境変数``FRED_API_KEY``に登録してください。
- FRED® API: https://fred.stlouisfed.org/docs/api/fred/

# import
```python:python.py
import os
import pandas as pd
import seaborn as sns
from full_fred.fred import Fred
import matplotlib.pyplot as plt

#pandas:1.3.5で本プログラムは動作確認しています。
print('pandas:', pd.__version__)
```



# コード
```python:python.py
# FRED_API_KEY = os.getenv('FRED_API_KEY')
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_UNRATE = get_fred_data(name, start=start)
        data1 = df_UNRATE
        data1 = data1.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_UNRATE = get_fred_data(name[i], start=start)
            data1 = df_UNRATE
            data1 = data1.reset_index()
            axes[i].plot(data1['date'], data1['value'])
            axes[i].set_xlabel('date')
            axes[i].set_ylabel(name[i])
#             axes[i].set_title(name[i])
        
    plt.show()
    return

plt.rcParams['font.family'] = 'Times new roman' #
#[ 'serif' | 'sans-serif' | 'cursive' | 'fantasy' | 'monospace' ]
```
## 米国失業率
- ソース：https://fred.stlouisfed.org/series/UNRATE
```python:python.py
MakeGraphFromFred("UNRATE", start="2010-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/c578dac8-8ce3-1000-756a-69841d3d016f.png">

## 長短金利差（10年米国債と2年米国債）
**10-Year Treasury Constant Maturity Minus 2-Year Treasury Constant Maturity**  
ソース：https://fred.stlouisfed.org/graph/?g=pKyy
```python:python.py
MakeGraphFromFred("T10Y2Y", start="1950-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/e70abbdd-a2a6-1b5c-ccf9-446c3c067fc0.png">

## 長期金利　10年
**Market Yield on U.S. Treasury Securities at 10-Year Constant Maturity, Quoted on an Investment Basis**
- ソース：https://fred.stlouisfed.org/series/DGS10
```python:python.py
MakeGraphFromFred("DGS10", start="1900-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/9f4f045f-c2f1-b89a-f207-f714fcb74738.png">


## 短期金利　2年
- ソース：https://fred.stlouisfed.org/series/DGS2
```python:python.py
MakeGraphFromFred("DGS2", start="1900-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/a32807ae-fd29-f65d-aabd-a149758f6e52.png">


## 消費者物価指数CPI
- ソース：https://fred.stlouisfed.org/series/MEDCPIM158SFRBCLE
```python:python.py
MakeGraphFromFred("MEDCPIM158SFRBCLE", start="2000-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/c1ae0ffd-0f80-4537-dc8e-9148c54a435b.png">


## SP500
- ソース：https://fred.stlouisfed.org/series/SP500
```python:python.py
MakeGraphFromFred("SP500", start="2008-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/d50436a1-ce34-86a2-7beb-f097f1f8d894.png">


## 米国政策金利
政策金利にも数種類ある
- アメリカ政策金利上限値（2008年以降）: Federal Funds Target Range - Upper Limit (DFEDTARU)
- アメリカ政策金利下限値(2008年以降) : Federal Funds Target Range - Lower Limit (DFEDTARL)
- Effective Federal Funds Rate (EFFR)
```python:python.py
MakeGraphFromFred("DFEDTARU", start="2008-01-01")
#MakeGraphFromFred("DFEDTARL", start="2008-01-01")
#MakeGraphFromFred("EFFR", start="2008-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/a36f3d46-8768-14a7-3ec0-a85be49fc0a9.png">

## まとめて
```python:python.py
cols = ["UNRATE", "MEDCPIM158SFRBCLE", "T10Y2Y", "DFEDTARU", "SP500"]
MakeGraphFromFred(cols, start="2008-01-01")
```
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577096/a38fd3d2-ef5b-be88-cdf5-afcb148ba463.png">

# 参考
- [pythonでFREDの経済データを分析してみよう！](https://www.youtube.com/watch?v=OjlMTN4Uq0k&ab_channel=K_DM%E3%80%90%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92xPython%E3%80%91)