跳轉到

更新日誌

0.3.18 (2023-03-28)

  • (Breaking): update shioaji >= 1.0.0. Please refer to finlab.inline module
  • (feat): finlab.ml (document are not ready yet)
  • (feat): support qlib data
  • (feat): report add yearly and monthly return table
  • (fix): backtest entry exit signal both activate conflict

0.3.12 (2022-11-29)

  • (Breaking): report.get_stats() has new format
  • (feat): data.get now read expire date from server and update data dynamically
  • (feat): add a bunch of analysis for backtesting report
  • (feat): getpass password to hide api_token
  • (fix): report.weight and report.next_weights remove considering of price changed
  • (fix): backtest(..., resample_offset='10d') fix backtesting display date
  • (fix): finlab.online.order_executor show_alerting_stocks fix price
  • (fix): fugle order status not change even when it is filled
  • (fix): support update price of fraction lot size

0.3.11 (2022-11-10)

  • (Fix) finlab backtest asset shorting fee miner adjust
  • (Fix) finlab.report.weights and finlab.report.next_weights not defined
  • (Fix) fugle-trade remove flag accoding to 0.4.0
  • (Fix) fugle-trade fetch other source when stock.close is nan
  • (Fix) fugle-trade FugleAccount.get_position not latest position
  • (Feat) finlab.data.universe('STOCK_FUTURE') subset of TWII stocks
  • (Feat) add yearly return when upload report
  • (Feat) add fugle_trade version not compatable warning

0.3.10 (2022-10-13)

0.3.9 (2022-10-13)

  • (Fix) finlab.online.sinopac_account order_lot position zero
  • (Fix) finlab.online.fugle_account order_lot position duplicated
  • (Fix) finlab.backtest weight display remove normalized
  • (Fix) finlab.data windows FileStorage fix
  • (Fix) finlab.data indicator exception error

0.3.8 (2022-9-27)

  • (Fix) finlab.online.order_executor price +-10% limit order restricted
  • (Fix) finlab.online.order_executor Position.from_report handle price=0, weight=0, and duplicated stock id
  • (Fix) finlab.plot.StrategySunburst compatibility
  • (Fix) finlab.report.display display multiple chart

0.3.8.dev1 (2022-9-27)

  • (Fix) talib abstract module incompatible
  • (Fix) backtest result: alpha and beta
  • (Fix) finlab.online.panel
  • (Fix) finlab.online.fugle_account stock not traded error
  • (Fix) add cert custom password for sinopac
  • (Fix) remove duplicated columns from unnumeric_dtype.
  • (Fix) KY company disclosure deadline
  • (Chore) Candlestick data format generalized
  • (Chore) raise error when data.get not found
  • (Chore) logger.info to logger.warning in finlab.data
  • (Chore) fig return for report.display
  • (Feat) add retain_cost_when_rebalance flag

0.3.7.dev1 (2022-8-8)

  • 針對 touched_exit 做更細部的回測:
  • 原本觸價反彈後不會被列入觸價賣出,現在會模擬觸價賣出
  • 原本開盤跳空,會沒辦法賣在0.07,現在也會賣在更低的位置

0.3.5.dev (2022-7-18)

  • 新增 finlab.optimize 枚舉條件組合回測
  • 新增 mae_mfe 圖表
  • mae_mfe 做空分析
  • report.get_trades()['position'] 改成 weighting
  • backtest touched_exit 修正
  • 修復 finlab.analysis bugs

0.3.3.dev (2022-7-1)

Bugs 修正

  • 修正放空股票的 weight 權重顯示問題
  • TreeMap 繪圖修正
  • 財報公佈歷史時間修正

Analysis 分析回測結果

新增 Analysis 架構,可以將回測結果完整分析。 之後的分析都將繼承 Analysis 並且顯示圖表,讓 report 使用起來更豐富!

liquidityAnalysis 流動性測試

策略會模擬股票在收盤或開盤價買進賣出,但實際上,股票也有可能沒辦法順利交易,例如遇到處置股、全額交割股,或是長跌停板。 liquidityAnalysis 會檢測回測時,是否有買到這類行的標的,並且計算比例,已確保策略的流動性符合您的資金需求。 查看更詳細的教學文章。

report.run_analysis('LiquidityAnalysis')

inequalityAnalysis 不等式測試

原本已經有策略,想要額外加入其他技術指標、籌碼、獲利指標,可以透過 inequalityAnalaysis 來檢視是否能夠提高選股績效。 以股價淨值比而言,我們想觀察以股價淨值比來進一步篩選股票的績效,可以用以下的方式:

report.run_analysis('InequalityAnalysis', name='price_earning_ratio:股價淨值比')

要如何看結果,可以參考更詳細的教學文章。

0.3.2.dev (2022-6-23)

SunBurst 檢視策略部位

可以顯示當前的股票,有哪些產業,產業的偏重是哪一塊,查看詳細內容

做空以及個股權重

FinLab Package 終於支援做空了,假如你原本就有一個好策略,可以做空 0050 試試看,雖然報酬率可以能會下降,但是風險也會大幅縮小!非常適合我們做多檔股票資產配置使用。

另外值得一提的是,新的版本 position 除了以前的布林訊號 (True/False) 外,也可以使用權重!所以下方程式碼,就是 50% 比重給 2330 做多,50% 給 1101 做空。

這樣的權重分配方式,完全兼容之前的版本,也就是 position 是 True / False 的狀況,因為 True 在電腦運算中,本來就代表 1 ,而 False 代表 0。權重都是 1 的情況下,程式就會跟以前一樣平均分配資產喔。

from finlab import data
from finlab import backtest

close = data.get('price:收盤價')

position = close < 0
position['2330'] = 0.5
position['1101'] = -0.5

r = backtest.sim(position)
r.display()

支援 Pandas_ta 計算技術指標

Pandas_ta 最近一兩年算是計算技術指標的後起之秀,原因在於 TaLib 有時候實太難安裝了,而且技術指標就只有那100個,都是老調重彈,沒有更新。有鑒於此,Pandas_ta 採用純 Pandas 計算技術指標,跟不同的作業系統有比較好的相容性。另外,Pandas_ta 也有很多最新的技術指標,例如 supertrend indicator。有非常多沒有看過的指標,像是「Even Better Sinewave 」,聽起來實在是非常有趣呀!這些都可以在 Pandas_ta 文檔中找到。

from finlab import data

values = data.indicator('supertrend')