backtrader好慢,提速法(調(diào)試、參數(shù)回測)
本文是引子,核心方法見付費文章。耗時幾天完成此文,挺貴介意付費勿點。
該文主要解決backtrader使用者調(diào)試代碼,耗時費力、編碼生產(chǎn)效率奇低的問題。
耗時來源分析及解決
重復(fù)計算耗時
backtrader其實最耗時的地方是自定義的Strategy的__init__方法中對各種指標(biāo)線的計算,比如筆者曾今使用滬深300股票池,在策略中初始化了5條均線,就需要計算1500根移動均線,這些均線的值理論上是穩(wěn)定不變的,所以思路是:
把均線提前計算保存,存db用時取 或
數(shù)據(jù)插入到自定義的datafeed中作為datafeed的一個字段(本質(zhì)就是第一種)。
那上面的思路解決的是計算數(shù)耗費的時間,在爭分奪秒、或者反復(fù)使用的場景下有價值。
但,我們這里不提供不討論不展示具體的示例代碼。
獲取數(shù)據(jù)耗時
數(shù)據(jù)存本地,數(shù)據(jù)存本地,數(shù)據(jù)存本地,數(shù)據(jù)存本地。
網(wǎng)絡(luò)IO是最慢的,對于需要重復(fù)的取數(shù)據(jù)行為,放本地,放db、csv隨意。
懟硬件也能提速
給CPU換代升級
機械盤換SSD
擴內(nèi)存容量
backtrader框架提供的提速手段
大佬寫的文章:optMaster:再次實測backtrader回測速度,提速要點stdstats=False,含源碼
還有官方文檔提供的:

紅框中的官方文檔地址:
Cerebro - Memory Savings - Backtrader
Cerebro - Optimization - Improvements - Backtrader
中文翻譯文檔地址(付費的親,介意勿點,打攪了):
Backtrader官方中文文檔:第五章Cerebro大腦
框架耦合帶來的耗時
這個核心技巧,就不細說了~~~
backtrader實戰(zhàn):如何提高backtrader調(diào)試及回測的代碼執(zhí)行速度
付費文章適合以下場景的讀者:
要求讀者已經(jīng)解決基本的backtrader安裝和使用問題,可以編寫策略
讀者策略使用數(shù)據(jù)量大以及指標(biāo)計算量大,需要將數(shù)據(jù)完整加載執(zhí)行策略,但是回測跑代碼十分耗時,比如調(diào)試一次代碼,加載和預(yù)處理數(shù)據(jù)要十幾分鐘甚至幾十分鐘的
參數(shù)調(diào)優(yōu)場景下的倍數(shù)級計算量以及規(guī)避耗內(nèi)存的問題
非用backtrader不可(潛臺詞其他框架也不是不能用,但各有各的坑)
理論上節(jié)約的時間是以你回測或調(diào)試的次數(shù)來算的,拍個腦袋,以前1個小時可以調(diào)試4次,用了此法調(diào)個20次不在話下。時間就是金錢我的朋友!
文檔掃碼可得,再次強調(diào),挺貴介意勿點
