python學習筆記(calculate monthly annualized volatility and complete visualization)

import pandas as pd
import numpy as np
df = pd.read_csv('spx.csv')
df.head()

在這裏插入圖片描述

import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib.patches as mpatches
from datetime import datetime

for i in range(len(df.date)):
    df.date[i]=datetime.strptime(df.date[i],'%d-%b-%y')

df = df.set_index('date')
df

在這裏插入圖片描述

df["daily return"] = df.pct_change()
df.head()

在這裏插入圖片描述

df.dropna()

在這裏插入圖片描述

df = df.resample("M", closed = "right",label="right").std()
df.head()

在這裏插入圖片描述

df["daily return"] = df["daily return"]*(12**0.5)
df.head()

在這裏插入圖片描述

plt.figure(figsize=(20,5))
ax = plt.subplot()
ax.plot(df["daily return"])
plt.title("Figure 1. Monthly Annualized vol - Black Monday and 2008 Financial Crisis highlighted",y=-0.3)
plt.xlabel("year", fontsize=12)
plt.ylabel("monthly annualized vol", fontsize=12)
plt.axvspan('1987', '1989', facecolor='r', alpha=0.5)
plt.axvspan('2008', '2010', facecolor='r', alpha=0.5)
red_patch = mpatches.Patch(color='red', label="Black Monday & '08 Crash")
plt.legend(handles=[red_patch])
plt.show()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章