資料多了起來,反而不知道要如何繪圖,藉由 Lux API 我們可以很快速的自動產生出非常多有意義的圖表,Lux 常常會帶給我資料處的靈感,希望你也可以從中感受到 Lux 強大之處。
例如,我們回測完的結果,通常會存在 report.get_trades() 之中,由於 trades 是一張 pd.DataFrame,我們就可以使用 Lux 來幫我們產生有用的圖表,讓我們掌握每一筆交易的盈虧!
安裝 Lux Package
安裝 lux 非常的簡單,只要使用 pip 即可安裝:
pip install lux-api > log.txt
pip install finlab > log.txt
撰寫策略
這邊我們也安裝 finlab package 來寫回測使用,我們以一個簡單的「股價淨值比」策略為範例:
from finlab import data
from finlab import backtest
收盤價 = data.get('price:收盤價')
股價淨值比 = data.get("price_earning_ratio:股價淨值比")
# 條件 1
收盤價大於五 = 收盤價 > 5
# 條件 2
季線 = 收盤價.rolling(60).mean()
收盤價在季線之上 = 收盤價 > 季線
# 條件 3
總條件 = (收盤價 * 股價淨值比)[收盤價大於五&收盤價在季線之上].is_smallest(20)
report = backtest.sim(總條件, resample='Q')
雖然這是範例策略,不過績效也滿好的,歡迎大家自行調整修改成自己的策略喔!
顯示逐筆歷史交易
接下來我們可以把每一筆交易的資料給印出來:
trades = report.get_trades()
trades
這個 trades 中有很多交易資料,包含:
* 最大下跌(MDD)
* 潛在最大獲利(MFE)
* 潛在最大虧損(MAE)
* 潛在最大虧損發生前的最大獲利(BMFE)
* 持有多長的時間(pdays)
非常多數據,有點不清楚它們之間的關係,沒關係,讓 Lux 幫你將這些數據整理視覺化。
Lux 資料視覺化
import lux
import pandas as pd
from google.colab import output
output.enable_custom_widget_manager()
trades = report.get_trades()
trades = pd.DataFrame(trades.values, index=trades.index, columns=trades.columns)
trades.intent = ['return']
trades
這樣我們就能清楚瞭解這些資料之間的關連了!非常的實用,然而 Lux 與 FinlabDataFrame 可能會有點不兼容,所以建議程式碼跑完回測後,在 import lux 這樣才不會在運算 DataFrame 時報錯喔!