我們這集的內容主要解讀我們上一集所跑出來的回測結果,也就是
bt.summary()這張報表的意義。而因為risk/return這個部份我們會需要一些額外的金融知識,我們會留到下一集進行說明,我們這邊主要會講前面部份,從days到winrate

因為這個套件並沒有提供文檔說明,我們必須回頭看一看原始碼,看看程式大致來說是怎麼運作的,所以我們來到github並點入這個專案,在pybacktest這個程式檔主要寫了怎麼生成bt這個東西

首先,我們看到report這一行,這一行說明,我們的報表主要是由performance這個模組下面處理的,並且用equity這個屬性來當作input進行計算,在呼叫summary這個方法。而summary這個方法基本上就是將我們報表的資訊印出顯示在螢幕上,在理解這層關係後,我們這邊會分成兩個部份來解釋回測的計算
第一部份:equity這個屬性是什麼意思
第二部份:performance怎麼進行計算
首先,第一部份,equity是從我們的trade的資料計算而來,根據說明,這個是我們資產差值的series,所以,如果我們做連加回來就是我們當時時點的資產價值。

第二部份:在performance這邊,我們看看我們報表的數值怎麼計算出來的,首先關於回測時間的部份應該很好理解,我們這邊主要講中間performance的部份

我們先看winrate,這個很好理解,就是交易的勝率,在計算的程式這邊,因為我們的input是資產的差值,所以我們就是計算有幾個差值是大於零,然後除上整個series的長度
然後是profit,這個就是把所有差值加起來,加起來就是最後一期的資產價值減上第一期的資產價值
再來我們先看averages的部份,這邊的gain就是這邊average_gain的計算出來的結果,就是每次交易轉錢的平均賺錢值,而average_loss就是賠的時候平均的賠的值,而trade的值就是總平均
而payoff是就是平均賺得錢除上平均賠得錢的比率
而PF是賺到的錢除上賠到的錢的絕對值
而RF是總得失除上最大回撤
而這個模組也提供一些方式來將我們的回測結果視覺化,我們介紹plot_equity以及plot_trades兩個函數
這邊plot_equity可以把我們的資產價值畫出來,而plot_trades則可以把價格資料以及交易時間點畫出來


首先,這邊我們可以看到,我們策略的績效一開始賠了一些,然後一路成長到2018年,然後開始一路往下
然後我們可以在plot_trade來檢視我們的想法,在這邊,我們把長短均線一起畫上,可以看到一開始做空賠了一點,後來開始作多並一路資產價格上升,到了賣出點並開始做空,但是價格就往上,所以開始賠,然後到買入點,價格卻開始往下這也對應到資產變化圖。