我們在設計量化交易系統時有一個非常重要的效能指標,即“內部響應時間”。該指標為從系統收到資訊(比如價格資料)到發出委託的時間間隔。該指標只和量化交易系統內部處理資料的效能相關,和交易所、經紀商、天氣或其他任何外部環境都無關聯(也就是純粹是您自己程式設計水平的問題)。
如果一個投資者的交易系統有更短的內部響應時間,那麼在其他條件相同的情況下,他就能更快地發出委託,更快地成交。如果眾多投資者採用相同或比較相似的策略(多虧了我們的科普工作,現在您也知道專業機構的策略思路了),那麼速度最快的那個投資者就會佔據最有利的地位,不但能夠第一個入場成交,還能先人一步去止盈止損。
由於目前國內主要期貨交易所的行情一般是500毫秒(1毫秒為千分之一秒)一個切片,我們的交易一般也就在毫秒級別完成。
如何去衡量策略程式碼的執行速度呢?
神通廣大的Python可以實現的方式有很多,比如timeit函式。
還記得我們曾經介紹過如何用真格量化跑tick策略麼,當時用的是Numpy裡的array來處理一系列tick資料。這是否是最快的方法呢?我們可以用timeit來測測速度。
比如我們拿一個2×1000的陣列來模仿針對tick資料的佇列操作,即用一個佇列儲存5行資料,每行兩個整數,有新的一行資料時就對這個佇列進行先入先出的更新:
我們選來進行速度競賽的選手包括Numpy、Pandas和Deque(還有其他的選手您可以自己試試),看看誰跑得更快。
測試結果如下:
Deque :
0.00146322382114秒
Pandas :
2.10415453728秒
Numpy Array :
0.00657957320599秒
跑得最快的Deque居然只用1。46毫秒就完成了操作,Numpy用了6。58毫秒,而Pandas用了驚人(慢得驚人)的2。1秒!
在這個佇列操作上,Deque的速度是Pandas的1438倍,Numpy的速度是Pandas的320倍。
我們可以說,如果您不加考慮就使用Pandas來頻繁處理佇列資料,那很可能就輸在了起跑線上。您的策略程式“內部響應”時間就已經將您排除在高頻交易的朋友圈之外了。
如果您還在抱怨程式跑不快,不妨用timeit檢查一下到底是哪個地方掉了鏈子。
— — — — — — E N D — — — — — —
往期文章:
Numpy處理tick級別資料技巧
真正賺錢的期權策略曲線是這樣的
多品種歷史波動率計算
如何實現全市場自動盯盤
AI是怎樣看懂研報的
真格量化策略debug秘籍
真格量化對接實盤交易
常見高頻交易策略簡介
如何用撤單函式改進套利成交
真格量化可訪問:
真格量化 - 期貨期權實盤量化平臺
https://
51zhenge。com
真格量化微信公眾號,長按關注:
遇到了技術問題?歡迎加入真格量化Python技術交流QQ群 726895887