# 殖利率曲線倒掛

## 本文重點概要

• 文章難度：★★☆☆☆
• 閱讀建議：本文會利用Python實作視覺化過程，需要讀者對視覺化以及程式有基本認識。

## 編輯環境及模組需求

```#######################3
from datetime import datetime, timedelta
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#########################3
import tejapi
import plotly.graph_objects as go
import plotly.io as pio
##################
pio.renderers.default = 'browser'       ##PLOT IN WEB```

TEJ PRO 總體經濟資料庫

## 資料導入

`df=pd.read_excel("C:\Users/user/Desktop/Tej/美國公債殖利率.xlsx")`

`df.dropna(inplace=True)`
`df.reset_index(drop=True,inplace=True)`

## 資料處理 step1 計算指標

```df["dif2Y"]=df.US10Y-df.US2Y
df["invertkeepday"]=df["dif2Y"].apply(lambda x : 1 if x < 0 else 0 )```
```df["cross"]=np.nan
df["notcross"]=np.nan```

```startday=[]
endday  =[]
keep = 0
df=df.copy()
for i in range(len(df)):
if df["invertkeepday"][i]  >0 :
if keep == 0:
df["cross"][i]=df["US10Y"][i]
startday.append(df["日期"][i])
keep = 1
elif  keep == 1 :
df["notcross"][i]=df["US10Y"][i]```
```if  df["invertkeepday"][i] < 1 :
endday.append(df["日期"][i])
keep = 0```

`for start , end  in zip(startday,endday):`
`    print(start , end, end-start)`

```inverted=pd.DataFrame(endday,startday)
inverted.reset_index(inplace=True)
inverted["year"]=inverted["index"].dt.year
datetime=inverted.groupby('year')
datetime=list(datetime)
getstart=[]
getend  =[]
for i  in datetime :
i[1].reset_index(drop=True,inplace=True)
start = i[1]["index"][0]
end = i[1][ 0][len(i[1])-1]
getstart.append(start)
getend.append(end)
for start , end  in zip(getstart,getend):
print(start , end, end-start)```

1990 , 1998 ,2000 ,2005~2007 , 2019, 2022 ，一共發生六次

`df.set_index("日期",inplace=True)`
```plt.figure(figsize=(12.2,4.5))
plt.scatter(df.index,df['cross'],color='red', label='cross!',marker='x',alpha=1)
plt.scatter(df.index,df['notcross'],color='green', label='Notcross',marker='o',alpha=1)
plt.plot(df["US2Y"], label='2Y', alpha=0.35)
plt.plot(df["US10Y"], label='10Y', alpha=0.35)
plt.plot(df["dif2Y"], label='dif', alpha=0.35)```
```plt.title('Close Price Buy & Sell Signals')
plt.xticks(rotation=45)
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.grid()```
`df[df["US2Y"]==0]`
`df.drop(index="2017-04-14",axis=1,inplace=True)`
`##因為資料有0 影響畫圖`

## 結論

1. 近五次的衰退，有四次股票續創新高
2. 三次發生衰退時，皆處於降息循環，兩次未發生衰退時，美國正處於升息循環

Procesing