第一章 Backtrader簡介
新事物的出現總是讓人難以理解 。當火車剛開始出現時,有些英國人嘲笑說這笨重的大鐵塊有什么用,隨著火車的轟鳴的蒸汽噴往各處,卻促進了經濟的極大發(fā)展 , 嘲諷也如烏云散去 。量化交易剛出現時,也是遭受不少人的懷疑,冰冷的計算機會作出決策,簡直天方夜譚 。
資本市場的魅力在于充滿多樣性,任何人可以探索不同的投資路徑 。十年前如果有人對你說:“讓電腦來選出股票進行交易”,你會認為他腦殼被門擠了 。西蒙斯以及很多前輩已經用碩果累累的戰(zhàn)績來證明其路徑的可靠性 。
一個人可能一時幸運,但幸運女神是多情的不會永遠鐘情于某一個人 。也就是說,短期內矚目的成績并不代表其高超的技藝 。說起股神巴菲特,令人嘖嘖稱奇的是幾十年的年化收益率達到了20.23%,但有一個猛人超級猛,其歷史年化收益率為39%,這人是西蒙斯 。未扣除基金管理費用的收益率更是達到驚人66.1% 。
西蒙斯作為先驅,一直在努力,不停的嘗試 ??嘈娜耍觳回?,終成正果 。
如圖是1988-2018收益:

文章插圖
pnl 未扣除費用的收益年均66.1%pnlcomm 扣除費用后的收益率 。年均39.1%
就是這么猛,猛的難以相信!很多在交易路上不得志的投資人,在西蒙斯事跡的鼓舞下,加入了量化團隊中 , 前路豁然開朗,開辟了新的天地 。
量化交易并不是天方夜譚,并不是偶然的概率 。在世界各地,已經踴躍出不少的優(yōu)秀的量化交易者 。在中國,量化交易也得到廣泛認可,不少量化交易者取得成功,成就自己的事業(yè)和美滿家庭生活 。
在過去 , 計算機技術還只是少部分人的技術;在過去 , 關于金融的編程技術更是門可羅雀 。計算機性能的提高 , 金融編程的發(fā)展極大的降低了量化準入的門檻 。
有種精神叫做奉獻 , 有種奉獻叫做開源 。著名的量化框架Backtrader就是開源的 。現在即使優(yōu)秀的量化團隊也在使用backtrader,正如其作者所說華爾街不少量化交易者使用量化開源框架Backtrader 。彼有之,吾亦有之;彼能成,吾為何不能成!
量化交易難在交易的理念,而不是實現的技術 。
網上認識一位老哥,也是做量化交易 , 七八年的年均收益率為20% 。這很厲害,但是量化交易的工具竟然是excel ??梢姽ぞ卟⒉皇钦嬲碾y點 , 最寶貴的是交易模型 。實現的技術有優(yōu)良之分,但是策略才是重中之重 。當然 , 使用excel來處理數據的工作量是遠大于交易框架 。沒必要神話量化交易框架,就是能夠極大的減輕工作量 , 可以花更多的時間和精力在交易邏輯上 。
backtrader官方文檔已經很詳細 , 那么本文存在的意義又是什么:
畢竟是英語文檔,中英文閱讀存在一定的差異 。文檔是海納百川,有的地方講的太詳細,側重于細枝末節(jié)則易失主干 。本文有的放矢,力求讓讀者徹底明白框架運行的結構 。本文會增加一些交易思維的講解,當然這個見仁見智 。增加一些經典策略的代碼實現 。
本文尚在持續(xù)更新中 。若有需求可私信,或者在csdn網上搜“南萬壽”或者文章“量化交易Backtrader核心掌握” 。
1.1 Backtrader是什么
眾所周知,實踐是檢驗真理的唯一標準,回測是檢驗量化交易的重要手段 。未來不可知難以驗證準確,真金白銀實戰(zhàn)的踩坑填坑得不償失,回測就是利用過去的數據提高交易的準確性 。當然回測框架也可以用來實盤交易 。
Backtrader回測框架是大浪淘中,眾多框架中的優(yōu)秀作品 。Backtrader作者說,他不知道誰在使用,但是他知道華爾街很多量化交易者在使用 。
Backtrader不僅得到了華爾街量化交易者的喜愛,在國內也有一眾粉絲 。很多的人量化交易學習也是從Backtrader開始
1.2 Backtrader特性
Backtrader 是基于python語言的量化工具,可以支持多種資產 。
Backtrader優(yōu)點眾多,網上介紹很多 。比如組件多 , 支持pandas矢量計算,內置百種技術指標 。Backtrader最大的特點就是簡單易用,靈活 。
Backtrader在官方文檔中提到

文章插圖
該平臺有兩個主要目標 。一是簡單易用,二是請參考第一條 。其格式類似于投資大師巴菲特投資名言:“第一保證本金安全,永遠不要虧損;第二條請參考第一條”
得益于作者強大編程能力,backtrader框架使用簡單,量化交易者可以集中精力放在交易邏輯的編寫 。使用backtrader就像搭積木一樣,需要什么模塊,拿來組裝就可以 。
backtrader也有一定的局限 , 因為python語言的本身,速度相對較慢,不太適合高頻交易者 。Backtrader適合投中低頻率的交易者 。
backtrader作者運用大量的元編程技術,如果運行出現問題 , 需要一定的python知識才能夠解決問題 。
1.3基本使用
1.3.1 backtrader安裝
推薦使用python 包管理工具anaconda.推薦使用清華鏡像源 。
pip install backtrader
下載經常使用的數據分析的包
conda install numpyconda install pandaspip install matplotlib==3.2.2
由于backtrader不支持matplotlib新版本,所以安裝matplotlib==3.2.2的版本
1.3.2 backtrader的基本運行
Backtrader平臺的最重要的兩個模塊:策略Strategy和大腦Cerebro 。所以使用backtrader最主要的兩個基本步驟:
*創(chuàng)建策略類*創(chuàng)建Cerebro大腦引擎
策略就是買賣的邏輯 。比如高于20日均線買入,低于20均線賣出,這就是個策略 。策略是最重要的 , 策略指導代碼的編寫,策略的成功才能保證盈利 。
Cerebro可以理解成一個框架 , 里面可以裝很多東西 。比如數據、策略、繪圖等等 。Cerebro翻譯就是大腦,協(xié)調組織各個模塊 , 共同完成工作 。
一個小案例
import pandas as pdimport backtrader as btfrom datetime import datetime#添加策略class TestStrategy(bt.Strategy): passif name ==”main”:# (1)大腦實體化 cerebro = bt.Cerebro()# (2)添加策略 cerebro.addstrategy(TestStrategy)##簡單靈活# 初始化投資總金額 cerebro.broker.setcash(10000.00) print(f初始投資金額:{round(cerebro.broker.getvalue(),2)}) cerebro.run() print(f最后投資金額:{round(cerebro.broker.getvalue(),2)})
整個代碼做了什么:
繼承了bt.startegy編寫了我們自己的策略 , 現在這個策略為空 。實例化一個大腦Cerebro,來管理交易策略 。cerebro.run()運行回測
這是最簡單的案例,但卻包含著backtrader的基本運用
這就是backtrader簡單靈活之處,量化交易這編寫代碼可以更側重于交易的邏輯,而不是內部復雜的執(zhí)行 。
后續(xù)的文章會詳細講述策略Strategy和Cerebro以及其他模塊 。
1.4backtrader組成部分
backtrader中包含很多模塊 。最重要的上面已說過是Cerebro和Strategy,還有其他模塊 。先簡單說明模塊的功能 。
Data Feeds 數據 。資產的數據信息,例如股票K線信息,基本面信息 。數據需要經過處理 , 采取一定的標準格式 。Strategy 策略就是買賣的邏輯 。比如高于20日均線買入 , 低于20均線賣出,這就是個策略 。策略是最重要的,策略指導代碼的編寫 , 策略的成功才能保證盈利 。Cerebro Cerebro可以理解成一個框架,里面可以裝很多東西 。比如數據、策略、繪圖等等 。Cerebro翻譯就是大腦,協(xié)調組織各個模塊,共同完成工作 。Indicators 指標,某種判斷形態(tài) 。既可以是技術形態(tài)也可以是基本面 。比如20日移動平均線和每股收益 。很多人容易把策略Strategy和指標indicators搞混 。策略是買入賣出的整體邏輯,在策略中會使用指標的 。比如收盤價高于20日移動平均線買入,這就是一個策略,在這個策略中包含了20日移動平均線指標Analyzers 分析,交易結束之后需要做評價 , 比如收益率,風險收益等等 。Analyzers內置了大量的金融分析模塊 。Orders 訂單 。一般在策略使用的訂單模塊,進行買賣操作 。Sizers 倉位 。Broker 代理人 。證券交易商提供的接口observers 觀察者 。觀察回測中的狀態(tài)Plotting 繪制 。繪制圖形
看上去很多模塊,但用起來很簡單,甚至有些模塊用不到 。一下是運行回測的簡略圖:

文章插圖
【量化框架Backtrader簡介】首先是交易邏輯的策略還有交易的數據,然后就交給backtrader框架運行回測就可以 。
- 簡介Java全棧Web開發(fā)框架Hilla
- 什么是三大框架?SSH和SSM的區(qū)別在哪里?
- 自律需要練習,先養(yǎng)成習慣,然后在框架中放手
- 初中化學整本書的“知識框架圖”,讓孩子完美逆襲!(建議收藏)
- 成功父母的終極秘訣:大框架、會放手、好榜樣
- 量化金融|首屆中國西部量化金融大賽正式啟動
