波動度與結構性斷點
將波動度視覺化有助於揭示時間序列中可能的結構性斷點。當你辨識出波動度似乎發生變化的時點後,就能更有根據地選擇斷點,進一步用於統計分析(例如 Chow 檢定)。
你將檢視 2008–2009 年投資銀行投資組合的兩種波動度視覺化結果,分別對應兩組可用的投資組合權重:weights_with_citi 與 weights_without_citi。這兩者分別代表包含花旗銀行與不包含花旗銀行的等權重投資組合;正如你在第 1 章所見,花旗銀行在該期間的四檔資產中展現了最高的波動度。
2008–2009 年包含花旗銀行的投資組合價格已提供為 prices_with_citi,不包含花旗銀行的則為 prices_without_citi。
本練習屬於課程
Python 量化風險管理
練習說明
- 使用
weights_with_citi與weights_without_citi找出兩個投資組合的報酬序列。 - 計算兩個投資組合的 30 天移動視窗標準差。
- 將兩個 Pandas
Series合併為一個名為「vol」的 DataFrame 物件。 - 繪製
vol物件的內容,比較兩個投資組合隨時間變化的波動度。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Find the time series of returns with and without Citibank
ret_with_citi = prices_with_citi.____.dot(weights_with_citi)
ret_without_citi = prices_without_citi.pct_change().____(____)
# Find the average 30-day rolling window volatility as the standard deviation
vol_with_citi = ret_with_citi.____.std().dropna().rename("With Citi")
vol_without_citi = ret_without_citi.rolling(30).____.dropna().rename("Without Citi")
# Combine two volatilities into one Pandas DataFrame
vol = pd.concat([____, ____], axis=1)
# Plot volatilities over time
vol.____().set_ylabel("Losses")
plt.show()