WonderTrader
是一個基於C++
核心模組的,適應全市場全品種交易的,高效率、高可用的量化交易開發框架。
WonderTrader
依託高速的C++
核心框架,高效易用的應用層框架(wtpy),致力於打造一個從研發、交易、到營運、調度,全部環節全自動一站式的量化研發交易場景。
WonderTrader
於0.9
開啟了一個新的UFT引擎,針對超低延時交易的需求進行實現,經過一系列的最佳化以後,系統延遲在175奈秒之內。
WonderTrader
的實盤運作架構
WonderTrader
的優勢豐富的交易引擎
- CTA引擎,也叫同步策略引擎,一般適用於標的較少,計算邏輯較快的策略,事件+時間驅動。典型的應用場景包括單標的擇時、中頻以下的套利等。 Demo中提供的DualThrust策略,單次重算平均耗時,Python實作版本約70多微秒,C++實作版本約4.5微秒。
- SEL引擎,也叫非同步策略引擎,一般適用於標的較多,計算邏輯耗時較長的策略,時間驅動。典型應用情境包括多因子選股策略、截面多空策略等。
- HFT引擎,也叫高頻策略引擎,主要針對高頻或低延時策略,事件驅動,系統延遲在1-2微秒之間
- UFT引擎,也叫極速策略引擎,主要針對超高頻或超低延時策略,事件驅動,系統延遲在200奈秒內
完善的開發介面
- 高效易用的數據介面:每個策略都會有獨立的上下文模組,上下文會自動快取策略所需的數據,策略直接呼叫即可。
- 簡潔的訊號介面:策略只需要設定目標部位,後台自動執行。
- 上下文無關的策略邏輯:策略不需要自己記錄任何數據,每次只需要向介面查詢即可,資料全部快取在記憶體中,存取效率有保障。
專業的策略管理
- 策略組合統一管理:採用策略組合的方式,主要為了配合專業機構的產品管理。一個組合盤,對應若干個策略的若干個標的,再設定一個基本的單位資金量,這就是產品管理的基本組合盤,方便擴展。
- 目標部位合併執行:目標部位合併以後,避免了自成交的風險,同時降低了保證金佔用和佣金開銷。
- 理論部位獨立儲存:策略的理論部位是獨立儲存的,組合盤的整體績效也是獨立會計的,輕鬆勝任內部管理。
- 多帳戶並發執行:組合的目標部位確定以後,就透過多個交易通道同步執行,可以有效的保障不同的帳戶的績效的一致性。
全類型的回測支持
- 語言支援全:不論是
C++
開發的策略還是wtpy
下開發的python
策略,或是其他語言子框架下開發的策略,都在統一的回測引擎中統一回測。- 回測效率高:回測引擎採用
C++
開發,回測效率高,速度快。不管是C++
策略還是Python
策略,都能快速驗證。- 策略支援完備:除了CTA策略、 SEL策略可以回測, HFT策略、 UFT策略和執行單元也能回測
高效率的數據伺服
- 本地資料伺服:
WonderTrader
內建的儲存引擎採用本地存儲,在本地建立資料伺服,透過udp
埠廣播即時行情,實現1+N
的服務結構,可以同時向多個組合磁碟提供無差別資料服務。專業資料供應商層級的架構,支援建立多層分發體系,輕鬆應付各種需求情境。- 快取歷史資料:交易過程中,歷史資料全部快取到記憶體中,同時採用記憶體直接引用記憶體資料切片的機制,從根本上避免資料拷貝,提高存取效率。
- 高效率儲存引擎:即時資料採用
mmap
文件,讀寫高速且不會遺失資料。同時支援mysql資料庫儲存歷史數據,更方便在此基礎上建立自有的投研資料庫。
靈活的風險控制
- 組合盤資金風控:組合盤有預設的資金規模,可以針對組合盤的虛擬資金,進行組合盤的資金風控。最大的優點是,如果組合盤處於下行階段,觸發風控以後,即使資金帳戶沒有打到風控線,也不會再繼續下行了。
- 通道流量風控:主要針對合規風險,控制的是總撤單筆數、短時間內下單次數和撤單次數等指標。
- 帳戶資金風控:和一般意義上的資金風控一致,主要控制帳戶資金的回檔等。
- 緊急人工介入:提供一個緊急的人工介入的入口,透過上傳一個配置文件,達到控制的目的。主要適用於單一品種出現風險,若全市場風險,人工停止系統即可。
- 離合器機制:離合器機制依託於訊號和執行分離的機制的,主要是如果策略或組合發生風險,透過離合器機制,直接斷開訊號執行。優點是不影響策略的邏輯,只斷開訊號的執行,可以繼續觀察策略在特定行情階段的表現,和理論研究相互印證。
強大的控制台(wtpy的監控服務)
- 組合盤運行監控:可查看即時運行日誌、策略理論資料、交易通道資料等,並提供手動啟動停止的入口。
- 自動調度服務:全自動調度定時任務(啟動、停止、重新啟動),支援按週設定任務重複,支援進程守護。
- 即時事件通知:監控服務接收組合磁碟推播的事件,然後轉送給監控端,提示給使用者。
- 回測檢視器:使用WtBtSnooper模組,可以進行回測資料的檢視分析。
- 全自動遠端部署(在建) :全自動線上遠端部署,提供回測環境、實盤環境等多種應用場景的自動化部署服務。
團隊內控策略組合管理的方式,為團隊內部管理提供了完美的解決方案。
C++
等級的程式碼可以提供最大的策略保密性,投研人員不用擔心策略的洩漏;多帳戶交易(多產品配置) 對於不同行情週期下的策略組合,一般團隊都會有一個當下最適應的策略組合。但同一時期,團隊可能會同時管理很多帳戶,而其實這些帳戶用到的策略組合都是相同的。這時候WonderTrader
平台提供的M+1+N執行架構就能夠完美的滿足這個需求。
假如某組合盤P基本資金規模為500w,預期收益30%,最大回撤10%,收益風險比3:1;A賬戶使用該組合盤P交易,A賬戶的資金量為1000w,可以接受的最大回撤也是10%;B帳戶也使用該組合盤P交易,資金量也是1000w,但是可以接受的最大回撤為20%;這個時候因為A帳戶風險參數和基本盤一致,所以A帳戶的手數放大倍率為資金規模/基本盤的資金規模=1000w/500w=2倍;B帳戶因為可以忍受最大回檔20%,所以手數比例還要再放大一倍,也就是B帳號可以配置4倍。
多標的跟踪一些用解釋型語言(如Python
)開發核心模組的量化交易平台,在標的數不多的情況下,能夠勝任各種不同的應用場景。但是當需要追蹤的標的數達到100個以上,甚至是50個以上時,就無法滿足需求了。一方面資源佔用大,利用multiprocess
等機制,雖然各個標的獨立運行,但是上百個標的就要新建上百個進程,內存和CPU開銷都非常大;另一方面策略效率低,資源爭強嚴重的情況下,策略反應也會變慢。 WonderTrader
核心採用C++
開發,資料伺服更是一開始就設計成向多個組合同時提供服務的架構,同時策略和執行剝離,訊號執行和策略運算完全在兩個不同的執行緒中獨立運作。在這樣的架構下,就能夠很好的滿足多標的追蹤的需求。
大計算量策略有些策略計算量會非常驚人,比較典型的就是選股策略,不管是用多因子也好,還是基本面也好,都會從數千隻股票中,逐步篩選,從而得到最後的目標股池。另外,一些多標的的多因子框架也具有較大的計算量。這樣的策略,計算量非常龐大,耗時也長。 WonderTrader
的SEL
引擎就是為了滿足這方面的需求而訂製的。 SEL
引擎採用非同步時間驅動的模式,透過向引擎註冊重算時間調度(支援日內,每日、每週、每月的等多種週期),定時觸發重算,然後調整多標的的目標倉位,從而輸出訊號。
極速交易WonderTrader
使用C++
作為底層核心開發語言,一個最重要的目的是追求極致性能,所以WonderTrader
的使用場景中高頻交易或者極速交易有一個非常大的佔比。 WonderTrader
於v0.9
版本開設了一個新的UFTEngine ,專門針對極速交易的場景。 和原來的HFTEngine
不同, HFTEngine
針對的是一般高頻,專注於向應用層提供高性能的底層組件,會考慮更多的兼容性問題以及應用層對接的問題,系統延遲在1-2微秒之間。而UFTEngine
則完全從WtCore
專案剝離,不向應用層提供接口,全部在C++
進行開發實現,系統延遲在200ns以內。
演算法交易WonderTrader
有一個獨立的執行器入口模組WtExecMon
,使用者可以在此基礎上實現演算法交易。 WonderTrader
的M+1+N執行架構中, 1+N執行部分剝離出來,就可以當作一個獨立演算法交易執行器來使用。使用者在使用的時候,透過設定指定標的的目標頭寸,演算法執行單元就可以依照預設的演算法進行交易下單。 使用者可以透過實作自己的WtExecFact
模組,來增加更多的演算法執行單元。高效率的C++
底層,可以給演算法執行單元的執行效果提供強大的保障。
wtpy
簡介WonderTrader
核心模組之上的,使用Python3
開發的WonderTrader
的Python3
子框架Python
作為量化領域最受歡迎的語言,在時序資料處理上有許多非常受歡迎的強大的第三方函式庫Python
作為一種解釋型語言,程式碼編寫和調試都非常方便,不需要編譯就可以直接運行Python
的跨平台屬性也讓Python
可以應用在更多的場景中wtpy
主要功能是作為WonderTrader
在Python
語言的外延wtpy
也內建了一個強大的監控服務元件WtMonSvr
。該元件提供了遠端的webui
的監控介面,可以即時監控策略組合的運作情況,還提供全天24×7
的自動調度服務,為你的交易保駕護航。 WonderTrader
怎麼獲取WonderTrader
github
網址:https://github.com/wondertrader/wondertradergitee
網址:https://gitee.com/wondertrader/wondertraderwtpy
github
網址:https://github.com/wondertrader/wtpygitee
網址:https://gitee.com/wondertrader/wtpywtpy
取得位址:https://pypi.org/project/wtpy/ wtpy
可以直接在python3.8
以上的版本安裝pip install wtpy --upgrade
WonderTrader
延伸項目wtpy
作為底層回測引擎的強化學習框架Wt4ElegantRL
https://github.com/drlgistics/Wt4ElegantRL wondertrader
,可以收到WonderTrader
的即時資訊610730738
(已滿) 二群367916500
(加入前請先star
一下, 然後提供github
用戶名)WonderTrader
的文件請看https://docs.wondertrader.com/WonderTrader
半官方文件https://dumengru.github.io/docs_wondertrader/WonderTrader
學習筆記https://zzzzhej.github.io/WonderTrader-Learning-Notes/