在 Python 中使用 GARCH 預測股票收益
我看過這篇文章:在 Python 中正確應用 GARCH,它展示瞭如何使用該
arch
庫在 Python 中正確應用 GARCH 模型。現在我想知道如何獲得提前一步的回報預測。所有指南都指的是獲得波動率預測,而不是回報。我的直覺是:
- 檢索提前一步的條件均值和波動率預測
- 從用於擬合 GARCH 模型的分佈中抽取 X 個隨機數。
- 計算
mean + volatility * random_number
所有隨機抽取的創新。- 取上述的平均值來獲得回報的點預測。
這種方法合理嗎?提前致謝!
首先讓我先說我不習慣使用 Python。另一件事是,您可能想再次考慮您的標題,更具體地說,“正確”一詞:似乎沒有證據支持您可以 100% 準確地預測股票收益。也許,您可以查看有效市場假設,更精確地了解半強形式與 GARCH 模型的關係。
我想您可以使用您所描述的這種方法,但是據我所知,無需自己實際計算,當您最後取平均值時,您就有效地消除了它的隨機性。也就是說,當您生成 X 個不同的點預測時,理論上它們應該按照創新中的假設分佈(即 IID(0,1))進行分佈,並與(相同的)波動率預測和均值進行縮放,因此,當最後取平均值,您只需獲得一個接近預測條件平均值的數字。
我會簡單地使用您在 GARCH 中假設的分佈的隨機生成值,例如標準正態分佈。請記住,您假設 $ e \sim IID(0,1) $ . 您可以研究一步提前滾動預測方案,也許只是檢查一下您的滾動預測與實際觀察到的回報相比如何。
您可以做的另一件事是查看參數密度預測,您可以在其中實際預測波動率,然後使用這種波動率縮放假設的創新分佈。
添加 GARCH 編輯
沒有均值的 GARCH(1,1) 過程如下所示:
$$ r_t = \sigma_t \epsilon_t, ~~~~~~ \sigma_t^2 = \omega + \alpha r_{t-1}^2 + \beta\sigma_{t-1}^2, $$
當您假設收益遵循 GARCH 過程時,您只需說收益由條件波動率 ( $ \sigma_t $ ) 乘以隨機生成的數字 ( $ \epsilon_t $ ) 來自您指定的分佈。如果您想包含平均值,只需將其添加到 $ r_t $ .
EMH 編輯
我建議您看一下有效市場假設以及對創新的相關影響如何對應於 GARCH 模型。一個好的流行詞是鞅差。Fan & Yao, 2017 The Elements of Financial Econometrics關於這個主題的一個很好的參考。