協整對交易 - 如何使用蒙地卡羅測試交易規則?
我正在做一個研究練習,我有兩個價格系列 $ X_t, Y_t $ 我相互回歸併測試協整。
一旦我確認它們是協整的(使用 CADF 或 Johansen 檢驗),我推導出差的方程為
$$ spread_t = Y_t - (\alpha + \beta X_t) $$ 或者
$$ spread_t = Y_t - \beta X_t $$
在哪裡 $ \alpha $ 是截距和 $ \beta $ 是回歸的斜率係數 $ Y_t $ 上 $ X_t $ .
作為下一步,我想做蒙特卡羅模擬來測試簡單的交易規則。
- 如果價差高於 2 st.dev wrt 均衡買入 X 賣出 Y;
- 如果價差低於 2 st.dev wrt 均衡,則賣出 X 並買入 Y;
但不知道如何為模擬建構蒙地卡羅路徑。
有人可以解釋如何進行模擬嗎?
大多數教科書和研究論文都解釋瞭如何找到資產對並測試它們的協整性。有些人解釋了對歷史數據的回溯測試。我還沒有找到任何解釋如何使用蒙特卡羅模擬來測試這種交易策略。
應該只是在類似 AR(1) 的過程中建模的價差嗎?似乎無論如何都需要模擬資產價格。我應該使用向量自回歸模型(VAR)嗎?我在這裡的理解是,這將再次給我一些等式,其中價差將以滯後資產價格的單位表示。
這兩種資產中的每一種都不必是均值回歸。如果我獨立地對價格進行建模,那麼它們之間的關係(協整)將如何保留?
我有點錯過問題目標的客觀性或獨特性。不過,這裡是我所理解的結論。
第 I 步:定義並確定您需要的最小數據點數量,以確定 $ \alpha $ 和 $ \beta $ 並將這個最小數量稱為 CHUNK 或 QUANTUM 或 BUNDLE。還定義增量步長,例如 $ \mathscr{step_size} $ ,塊將及時向前移動。為一個 $ \mathscr{chunk_size} $ = 1000 和 $ \mathscr{step_size} $ = 200,輸入數據從0移動到1000;200 至 1200;400 至 1400;600 到 1600 等等,我們稱之為 SEGMENTS。
第 II 步:每個 SEGMENT(在測試協整之後)會給出不同的值 $ \alpha $ 和 $ \beta $ 這將給出不同的值 $ \mathscr{spread_t} $ 形成一組隨機數,儘管種子非常緊密。根據這些 SEGMENT 值,可以進行決策。
注意 1:我認為這是您希望為模擬創建 MonteCarlo 路徑的第一步。使用 C++,它可以使用 OpenMP 來完成,儘管它對於 MonteCarlo 之類的東西來說是相當原始的石器時代,但通過一些巧妙的技巧,它通常會預設程序員的意願。注2:方法的關鍵是保持 $ \mathscr{step_size} $ 足夠短;通過它,許多緊密間隔和隨機(這是一個悖論;因此是準隨機的)值 $ \mathscr{spread_t} $ 可以生成。注 3:蒙特卡羅模擬基本上用於條件的參數形式已經建立並且需要進行大量實驗以確定所需變數的值的情況。在這種情況下,可以判斷確定的參數形式 $ \mathscr{spread_t} $ 已經確定,因此可以執行蒙地卡羅程序,在模型中引入隨機非線性權重函式 $ \mathscr{spread_t} $ (見下文)。請注意,這些 $ \mathscr{chunk_size} $ 和 $ \mathscr{step_size} $ 它們本身可以是隨機的,這可能需要進行更多的實驗。
鑑於這個問題,我個人的方法會有所不同,大致如下:
第 I 步:在確認協整檢驗後修改價差,因為這建立了關係的線性。引入一個功能,例如, $ f(t) = k+e^{-\zeta(t, \sigma(t), \eta(t), \delta, \gamma, \cdots)} $ , 在哪裡 $ k $ 是一個實數,移位因子, $ \delta $ 是一個函式,它給出 0 到 1 之間的隨機數,考慮正規化的市場雜訊(這個函式模仿所謂的 $ \epsilon_i $ ,隨機分量,在回歸分析中),其中 $ \eta(t) $ 只是因果函式。我將介紹另一個乘法變數 $ \gamma $ 取決於歷史權重和主要股東的可量化決策模式。(如果 $ X_t $ 和 $ Y_t $ 是道瓊斯指數或標準普爾 500 指數的組成部分,因為這些公司很容易獲得主要的持股數據和股東本身的資訊)。請注意,我特意在這種關係中引入受控非線性,以便動態評估 $ \mathscr{spread_t} $ . 在這裡,我建構了一個函式 $ \eta(t) $ 對於只有 8 個數據點的 NASDAQ:AAPL,雖然它非常原始,但它確實說明了 2016 年 8 月 19 日附近股票的方式和未來趨勢。
$$ \eta(\tau) = \sin \left( 0.04545\tau \right) \times e^{1.22\sin \tau + \cos \tau} - 0.00840 \times \sin ({\tau}) \times \mathscr{e} ^{-\tau \sin(\tau)} $$ 我用過 $ \tau $ 用於方程中視覺清晰度的時間變數。 下面給出的是 this 的移位變體 $ \eta(\tau-0.77) $ 這是最終的輸出(儘管由於缺乏 HP 計算,它非常粗糙,因此精確定位的時間不是很可靠。
第二步:現在,從這裡開始,我可以繼續按照上面的標準程序,用 C++ 編寫 OpenMP 循環來進行盡可能多的迭代,而不會掛起核心,以鎖定 $ \mathscr{spread_t} $ . 一旦完成對預定義交易頻寬的鎖定,就可以根據所需條件執行自動交易。
注1成對交易(以及各種其他隨機二元系統分析/估計程序)中的協整的概念基本上來源於這樣一個事實,即從長遠來看,資產,或者一般來說,變數的協整對,通常趨於平衡(或平均回歸);所謂的“長期均衡”(請注意,這只是一個非正式的類比)。現在,蒙地卡羅模擬向後工作,即從所有可能結果的體積或空間,並將這個體積或空間解釋為機率;儘管蒙地卡羅的分析和通常的教學法通常會顯示蒙地卡羅估計與給定明確定義和不同條件下所有可能結果的期望值的等價性(隨後呼叫“
我還沒有找到任何解釋如何使用蒙特卡羅模擬來測試這種交易策略。
此外,由於協整在兩個隨機遊走之間建立了線性關係,並且蒙特卡羅模擬通常不適用於具有線性模型的系統。這就是為什麼我在我的方法中引入了超驗非線性。儘管如此,還是取得了一些進展,請參閱此連結. 現在,為了回答您的第一個問題,理論上可以對資產進行孤立建模(沒有協整和回歸特徵,動態或其他方式,以及各種其他因變數統計工具,只需巧妙地使用時間序列屬性)但是這不會產生現實的結果。我在第一個範例中使用了 NASDAQ Composite 和 NASDAQ:AAPL。為了回答第二個問題,在我看來,更多的是在保持協整檢驗建立的線性和未來價格估計的現實結果之間做出選擇。我選擇了後者,因為這在我的方法中很明顯。請注意,到目前為止,我還沒有看到任何線性二元系統的蒙特卡羅模擬。我可能錯了。
注 2 對於線性關係的參數形式及其比例常數,其確定是所有類型模擬中的關鍵問題,當被迫進行蒙地卡羅模擬時,至少要求該關係不是微不足道地依賴於非-隨機項和函式,因為它限制了此類過程的模擬路徑並產生不必要的時間和記憶體複雜性。任何強迫真正的蒙地卡羅的嘗試都會消除基本關係的線性。為模擬協整系統而提出的各種方法似乎很好,並且可以以其原始形式進行程式,而無需呼叫 MonteCarlo 方法來獲得所需的輸出。