1 分鐘學會!使用 Lux API 自動視覺化 Pandas 資料

資料多了起來,反而不知道要如何繪圖,藉由 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')
image 3
策略報酬

雖然這是範例策略,不過績效也滿好的,歡迎大家自行調整修改成自己的策略喔!

顯示逐筆歷史交易

接下來我們可以把每一筆交易的資料給印出來:

trades = report.get_trades()
trades
image 4
策略的逐筆交易

這個 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
image 5
Lux 視覺自動化

這樣我們就能清楚瞭解這些資料之間的關連了!非常的實用,然而 Lux 與 FinlabDataFrame 可能會有點不兼容,所以建議程式碼跑完回測後,在 import lux 這樣才不會在運算 DataFrame 時報錯喔!

FinLab - 韓承佑

嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會 學術顧問、台北商業大學 創新育成中心 創業技術顧問與上市科技公司 量化交易顧問。當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。我們成立 FinLab 量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。希望可以在量化投資的路上,當大家的「武器製造商」!