保證金建模以回測期貨投資策略
假設我可以訪問 E-mini S&P 500 指數期貨 20 多年的連續每日時間序列數據。我有一個多頭/空頭策略來回測,可以在開盤或收盤時下達訂單。保證金的管理對回測的性能有影響,我不確定如何對保證金進行建模。
- 如何建模追加保證金通知?例如,最好的做法是使用全部資本購買盡可能多的合約,還是使用一半資本購買合約並將剩餘的一半投資於國債作為追加保證金的抵押品?
- 如何模擬保證金利率?例如,最好的做法是假設沒有保證金利率還是使用 3 個月的國庫券利率?
- 如何模擬保證金提取?例如,假設盡可能將多餘的保證金再投資於新合約,這是最佳實踐嗎?
第 1 點和第 3 點的潛在解決方案可能是假設在一天結束時將保證金恢復到初始保證金,並將多餘的流動性再投資於新合約或在需要流動性以恢復保證金時出售合約。
答案應該針對最佳實踐,同時不會在 python 中實現太多錯誤,並且相當代表歷史性能。
交易所要求的每份期貨合約的保證金金額並不是頭寸規模的良好指南。它旨在保護交易所在特別糟糕的日子**裡 免於失敗。使用這麼大的槓桿太危險了,尤其是如果您的交易持續了很多天;您通常希望交易的合約數量少於允許的最大數量。
期貨交易中的交易規模問題是:如果你有 $ E $ 在時間 t 在您的期貨交易賬戶中的美元,您應該在下一次交易中買入/賣出多少份合約。
從廣義上講,有兩種方法(可能有許多變體和中間情況):
由 Ralph Vince (1990) 提出的固定分數頭寸調整方法僅基於風險管理考慮。您必須持有足夠小的頭寸,以便您可以在連續 N 次虧損中倖免於難,而不會耗盡您的賬戶。文斯說你估計每份契約的最大損失 $ L $ 使用歷史數據,然後交易的合約數量為
$ \textbf{contracts} = \frac{1}{N}\frac{E}{|L|} $
文斯建議分數 $ f=\frac{1}{N} $ 應設置為 0.05(即 $ \frac{1}{20} $ )。如果您願意承擔高風險,有些人建議使用 0.10。估計是合理的 $ L $ 在相關交易範圍內使用 95% 的 ValueAtRisk,而不是回測中的最大損失。
一種更先進的頭寸調整方法是基於凱利準則及其變體。這涉及優化長期增長率,並且需要了解收益和損失的分佈(而不僅僅是最大的損失)。它具有理想的特性,即對一個特別有利可圖的交易系統進行更大的賭注(對於一個剛剛收支平衡的交易系統根本不下注)。參見凱利標準。缺點是難以準確估計參數;根據我的經驗,由於各種心理和統計偏差,系統在最初開發時的盈利能力往往被高估。出於這個原因,我推薦基於風險的方法,至少從一開始就是這樣。