回測

在戰略制定和實施之間切換平台/語言有什麼優勢?

  • February 2, 2012

我有興趣編寫中頻(交易幾分鐘到幾小時,持有幾天到幾週)量化交易策略並與盈透證券進行交易。

我在這裡看到很多人提到他們使用 Matlab(或 R、SAS 等)進行策略開發/回測,但他們更願意用 C++/C#/Java 編寫實時交易的執行程式碼。 將策略重新編碼為低級語言的優點和/或為策略開發和實施維護相同平台的缺點是什麼?

我的想法是,保持相同的平台允許人們隨著時間的推移輕鬆地將更新和改進整合到策略中,而 IBrokers 包和與 IB 的 API 的各種商業 Matlab 連接使得從開發平台直接與 IB 通信變得可行。我在這裡缺少什麼嗎?其他人試過這個嗎?

這是常青樹。我一直在和很多人討論這個問題——沒有任何明確的結論。答案和首選解決方案取決於您的交易風格(例如頻率)、您的技能、團隊規模以及許多其他因素。

為簡單起見,我將“研究”稱為 Matlab/R/等。環境,而“Live”是指重新程式的 C++/Java/C# 環境。

重新程式的支持者通常聲稱這兩種環境在性質上非常不同,即:

  • **健壯性:**研究本質上是臨時性的,您主要關心的不是速度、程式健壯性和風格。生產需要更強大和更快,並且您希望重用組件,例如價格流。
  • 數據研究通常在一個封閉的數據集上完成:您有一組樣本內數據,並且盡可能使用矩陣函式(例如在 Matlab 或 R 中)執行回測。在實時交易中,您正在處理增量數據,新資訊以不規則的間距出現。因此,實時交易更受事件驅動(至少對於更高頻率而言)。
  • 假設在回測中,您需要對填充率和價格做出假設,並且您通常會漸進地計算頭寸(即,作為您投資組合的百分比,無論您可以持有的最小頭寸大小如何)。在實時交易中,您不能這樣做。您需要根據期貨/股票/等的大小生成訂單。此外,你需要回饋你的實際位置(這取決於你得到的填充物),這是你在研究中不必擔心的事情。

人們通常會嘗試通過不同的策略來克服這些差異,例如:

  • Python 方式走中間路線,用可能同時滿足這兩個要求的高級語言建構所有內容。該策略的反對者聲稱,這樣你就不會得到最好的解決方案,無論是在研究還是在實時交易中。
  • Matlab/R 方式 以研究為中心的商店試圖圍繞 Matlab 建構一切。以我的經驗,這在一定規模下效果很好,但是對於更大的團隊,事情可能會變得非常難以維護。團隊之間組件的可重用性可能變得非常困難。
  • 重新程式這需要非常好的技能或專門的重新程式團隊。這通常既昂貴又困難,而且風險是增加錯誤。
  • 集成有一些平台允許您以多種語言部署策略(例如編譯的 matlab 程式碼、R 自動化等)。如果做得好,這可能是最好的解決方案。

對你自己來說,如果你是唯一一個致力於該策略的人,並且按照你提到的頻率,Matlab/R 方式聽起來像是要走的路。

引用自:https://quant.stackexchange.com/questions/1479