iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
自我挑戰組

金融量化交易系列 第 15

15. 時間序列預測

  • 分享至 

  • xImage
  •  

使用 Python 生態系中的主要工具來解決單變量時間序列 (univariate time series) 的預測問題。金融量化研究員的目標是透過統計時間序列技術,從歷史金融數據中辨識趨勢 (trends)季節性波動 (seasonal fluctuations)相依性 (dependencies),最終產生可執行的交易訊號。

一、資料準備與特徵工程

首先,我們將使用 yfinance 獲取 S&P 500 (^GSPC) 指數的歷史數據作為分析對象。

1. 資料載入與探索

時間序列資料在 pandas 中通常以 Series 的形式表示,其索引是時間標籤。我們載入資料後,會計算對數報酬率 (log returns),因為報酬率序列通常比價格序列更接近定態 (stationary),這對於統計建模至關重要。

# 計算對數報酬率
Re = np.log(df).diff().dropna() # 等同於 np.log(df / df.shift(1))

2. 基本特徵工程 (Basic Feature Engineering)

為了將時間序列問題轉換為監督式學習問題,我們需要建構輸入特徵 (X) 和輸出目標 (y)。

  • 延遲特徵 (Lag Features): 最經典的方法。我們使用過去時間點的值來預測未來的值。例如,用時間點 t-1 的值作為輸入,來預測時間點 t 的值。

    # t-2, t-1, t
    2012.66, 2016.71, 1990.26
    
  • 滾動窗口統計 (Rolling Window Statistics): 計算滑動窗口內數據的統計量(如平均值),作為新的特徵。這有助於平滑數據並捕捉短期趨勢。

    # 計算前兩個時間點的平均值
    window = shifted.rolling(window=2)
    means = window.mean()
    
  • 擴展窗口統計 (Expanding Window Statistics): 窗口包含從序列開始到當前的所有數據,有助於追蹤觀測數據的整體變化。


上一篇
14.回歸診斷
下一篇
16.時間序列視覺化
系列文
金融量化交易25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言