初學者的Python金融分析日記 EP8-解讀回測結果

我們這集的內容主要解讀我們上一集所跑出來的回測結果,也就是

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來檢視我們的想法,在這邊,我們把長短均線一起畫上,可以看到一開始做空賠了一點,後來開始作多並一路資產價格上升,到了賣出點並開始做空,但是價格就往上,所以開始賠,然後到買入點,價格卻開始往下這也對應到資產變化圖。

Share

One thought on “初學者的Python金融分析日記 EP8-解讀回測結果

  1. Thank you for each of your hard work on this web page. My aunt really likes going through investigations and it’s really obvious why. Most of us learn all of the lively method you offer practical strategies through this web site and even increase participation from some other people on the issue so our favorite girl is in fact learning a lot of things. Take advantage of the rest of the year. You are always doing a really good job.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *