算法交易

用python建構一個可定制的交易引擎

  • October 26, 2014

我計劃從頭開始在 python 中建構完全可定制的回測交易引擎作為一個開源項目,我正在考慮的主要功能是,

  • 它應該從上到下完全可定制
  • 定制非常簡單,任何人都可以用python的基本知識進行定制
  • 它有一個內置的報告模板引擎,也是可定制的
  • 任何人都可以根據自己的交易風格對其進行自定義

那麼建構交易引擎時我必須考慮的基本事項是什麼?哪些是對這個項目有用的python模組所以任何人都知道有關此共享連結的任何材料將非常有幫助….

首先,您可能會被引導考慮Zipline。值得一看,但我認為這不是一個好的起點,因為:

  1. Quantopian 的開發人員沒有財務背景,這在 Zipline 原始碼中有所體現。
  2. 如果您將 Zipline 與在已編譯的應用程序中具有回測功能的任何商業平台進行比較,甚至是低端零售交易平台(例如 NinjaTrader、Sierra、TradeStation),它的速度非常慢。
  3. Zipline 對於交易多種產品不是很方便。我認為具有這種功能水平的最便宜的產品是 Deltix。

現代處理器應該能夠在 OPRA 提要(所有產品)的一整天內對移動平均交叉策略進行回測,而無需在一夜之間安排它。任何功能更少或速度更慢,您的開發人員都很差。(我記得高盛在 2007-2008 年有 12 到 14 台伺服器處理實時 OPRA,兩個人在一個週末從頭重寫了整個東西,以針對 128 位架構。沒有理由為什麼 Zipline 的多年開發不匹配在 Stack Exchange 存在之前的一個週末,有 2 名開發人員。)

以下是在建構回測引擎之前必須考慮的一些主要考慮因素:

  1. 您將如何在磁碟和記憶體中儲存/序列化您的市場數據?
  • 一個窮人的方法是將它包裹在一個pandas數據框上,但這是以抽象為代價的,並且會減慢你的回測引擎。pandas非常適合數據探索,但不適用於您將重複多次的任務。
  • 您將如何處理大小超過可用記憶體的數據源?
  • 您將如何處理非結構化市場數據?
  1. 你將如何儲存你的輸出?
  • 一個明顯的、幼稚的問題是,如果應用程序在中途崩潰,您不想重新啟動一個需要 1 晚才能執行的回測。另一個天真的例子是,您應該能夠訪問 6 個月前的舊結果,而無需重複回測循環。
  1. 你的填充邏輯是什麼?
  2. 你的 API 應該暴露什麼?(例如市價單、限價單、工具/價格/交易量查詢、填充邏輯更改)

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