跳轉到

finlab.plot

finlab.plot.plot_tw_stock_candles(stock_id, recent_days=400, adjust_price=False, resample='D', overlay_func=None, technical_func=None)

繪製台股技術線圖圖組

Parameters:

Name Type Description Default
stock_id str

台股股號,ex:'2330'

required
recent_days int

取近n個交易日資料。

400
adjust_price bool

是否使用還原股價計算。

False
resample str

技術指標價格週期,ex: D 代表日線, W 代表週線, M 代表月線。

'D'
overlay_func dict

K線圖輔助線,預設使用布林通道。

from finlab.data import indicator

overlay_func={
             'ema_5':indicator('EMA',timeperiod=5),
             'ema_10':indicator('EMA',timeperiod=10),
             'ema_20':indicator('EMA',timeperiod=20),
             'ema_60':indicator('EMA',timeperiod=60),
            }

None
technical_func list

技術指標子圖,預設使用KD技術指標單組子圖。

設定多組技術指標:

from finlab.data import indicator

k,d = indicator('STOCH')
rsi = indicator('RSI')
technical_func = [{'K':k,'D':d},{'RSI':rsi}]

None

Returns:

Type Description
plotly.graph_objects.Figure

技術線圖

Examples:

from finlab.plot import plot_tw_stock_candles
from finlab.data import indicator

overlay_func={
              'ema_5':indicator('EMA',timeperiod=5),
              'ema_10':indicator('EMA',timeperiod=10),
              'ema_20':indicator('EMA',timeperiod=20),
              'ema_60':indicator('EMA',timeperiod=60),
             }
k,d = indicator('STOCH')
rsi = indicator('RSI')
technical_func = [{'K':k,'D':d},{'RSI':rsi}]
plot_tw_stock_candles(stock_id='2330',recent_days=600,adjust_price=False,overlay_func=overlay_func,technical_func=technical_func)

finlab.plot.create_treemap_data(start, end, item='return_ratio', clip=None)

產生台股板塊圖資料

產生繪製樹狀圖所用的資料,可再外加FinLab資料庫以外的指標製作客製化DataFrame, 並傳入plot_tw_stock_treemap(treemap_data=treemap_data)。

Parameters:

Name Type Description Default
start str

資料開始日,ex:"2021-01-02"

required
end str

資料結束日,ex:"2021-01-05"

required
item str

決定板塊顏色深淺的指標。 除了可選擇依照 start 與 end 計算的"return_ratio"(報酬率), 亦可選擇FinLab資料庫內的指標顯示近一期資料。 example:

  • 'price_earning_ratio:本益比' - 顯示近日產業的本益比高低。
  • 'monthly_revenue:去年同月增減(%)' - 顯示近月的單月營收年增率。
'return_ratio'
clip tuple

將item邊界外的值分配給邊界值,防止資料上限值過大或過小,造成顏色深淺變化不明顯。 ex:(0,100),將數值低高界線,設為0~100,超過的數值。

Note

參考pandas文件更了解pd.clip細節。

None

Returns:

Type Description
pd.DataFrame

台股個股指標

Examples:

欲下載所有上市上櫃之價量歷史資料與產業分類,只需執行此函式:

from finlab.plot import create_treemap_data
create_treemap_data(start= '2021-07-01',end = '2021-07-02')
stock_id close turnover category market market_value return_ratio country
1101 20 57.85 水泥工業 sii 111 0.1 TW-Stock
1102 20 58.1 水泥工業 sii 111 -0.1 TW-Stock

finlab.plot.plot_tw_stock_treemap(start=None, end=None, area_ind='market_value', item='return_ratio', clip=None, color_continuous_scale='Temps', treemap_data=None)

繪製台股板塊圖資料

巢狀樹狀圖可以顯示多維度資料,將依照產業分類的台股資料絢麗顯示。

Parameters:

Name Type Description Default
start str

資料開始日,ex:'2021-01-02'

None
end str

資料結束日,ex:'2021-01-05'

None
area_ind str

決定板塊面積數值的指標。 可選擇["market_value","turnover"],數值代表含義分別為市值、成交金額。

'market_value'
item str

決定板塊顏色深淺的指標。 除了可選擇依照 start 與 end 計算的"return_ratio"(報酬率), 亦可選擇FinLab資料庫內的指標顯示近一期資料。 example:

  • 'price_earning_ratio:本益比' - 顯示近日產業的本益比高低。
  • 'monthly_revenue:去年同月增減(%)' - 顯示近月的單月營收年增率。
'return_ratio'
clip tuple

將 item 邊界外的值分配給邊界值,防止資料上限值過大或過小,造成顏色深淺變化不明顯。 ex:(0,100),將數值低高界線,設為 0~100,超過的數值。

Note

參考pandas文件更了解pd.clip細節。

None
color_continuous_scale str

顏色變化序列的樣式名稱

'Temps'
treemap_data pd.DataFrame

客製化資料,格式參照 create_treemap_data() 返回值。

None

Returns:

Type Description
plotly.graph_objects.Figure

樹狀板塊圖

Examples:

ex1: 板塊面積顯示成交金額,顏色顯示'2021-07-01'~'2021-07-02'的報酬率變化,可以觀察市場資金集中的產業與漲跌強弱。

from finlab.plot import plot_tw_stock_treemap
plot_tw_stock_treemap(start= '2021-07-01',end = '2021-07-02',area_ind="turnover",item="return_ratio")
成交佔比/報酬率板塊圖 ex2: 板塊面積顯示市值(股本*收盤價),顏色顯示近期本益比,可以觀察全市場哪些是權值股?哪些產業本益比評價高?限制數值範圍在(0,50), 將過高本益比的數值壓在50,不讓顏色變化突兀,能分出高低階層即可。
from finlab.plot import plot_tw_stock_treemap
plot_tw_stock_treemap(area_ind="market_value",item="price_earning_ratio:本益比",clip=(0,50), color_continuous_scale='RdBu_r')
市值/本益比板塊圖

finlab.plot.plot_tw_stock_radar(portfolio, feats=None, mode='line_polar', line_polar_fill=None, period=None, cut_bins=10, title=None, custom_data=None)

繪製台股雷達圖

比較持股組合的指標分級特性。若數值為nan,則不顯示分級。

Parameters:

Name Type Description Default
portfolio list

持股組合,ex:['1101','1102']

required
feats list

選定FinLab資料庫內的指標組成資料集。預設為18項財務指標。 ex:['fundamental_features:營業毛利率','fundamental_features:營業利益率']

None
mode str

雷達圖模式 ,ex:'line_polar','bar_polar','scatter_polar'

'line_polar'
line_polar_fill str

將區域設置為用純色填充 。ex:None,'toself','tonext' 'toself'將跡線的端點(或跡線的每一段,如果它有間隙)連接成一個封閉的形狀。 如果一條完全包圍另一條(例如連續的等高線),則'tonext'填充兩條跡線之間的空間,如果之前沒有跡線, 則其行為類似於'toself'。如果一條跡線不包含另一條跡線,則不應使用'tonext'

None
period str

選擇第幾期的特徵資料,預設為近一季。 ex: 設定數值為'2020-Q2,取得2020年第二季資料比較。

None
cut_bins int

特徵分級級距。

10
title str

圖片標題名稱。

None
custom_data pd.DataFrame

客製化指標分級,欄名為特徵 格式範例:

stock_id 營業毛利率 營業利益率 稅後淨利率
1101 2 5 3
1102 1 8 4
None

Returns:

Type Description
plotly.graph_objects.Figure

雷達圖

Examples:

ex1:比較持股組合累計分數,看持股組合偏重哪像特徵。

from finlab.plot import plot_tw_stock_radar
plot_tw_stock_radar(portfolio=["1101", "2330", "8942", "6263"], mode="bar_polar", line_polar_fill='None')
持股組合雷達圖 ex2:看單一個股特徵分級落點。
from finlab.plot import plot_tw_stock_radar
feats = ['fundamental_features:營業毛利率', 'fundamental_features:營業利益率', 'fundamental_features:稅後淨利率',
         'fundamental_features:現金流量比率', 'fundamental_features:負債比率']
plot_tw_stock_radar(portfolio=["9939"], feats=feats, mode="line_polar", line_polar_fill='toself', cut_bins=8)
單檔標的子選指標雷達圖

finlab.plot.plot_tw_stock_river(stock_id='2330', start=None, end=None, mode='pe', split_range=8)

繪製台股河流圖

使用 PE or PB 的最高與最低值繪製河流圖,判斷指標所處位階。

Parameters:

Name Type Description Default
stock_id str

台股股號,ex:'2330'

'2330'
start str

資料開始日,ex:'2020-01-02'

None
end str

資料結束日,ex:'2022-01-05'

None
mode str

'pe' or 'pb' (本益比或股價淨值比)。

'pe'
split_range int

河流階層數。

8

Returns:

Type Description
plotly.graph_objects.Figure

河流圖

Examples:

from finlab.plot import plot_tw_stock_river
plot_tw_stock_river(stock_id='2330', start='2015-1-1', end='2022-7-1', mode='pe', split_range=10)
單檔標的子選指標雷達圖

finlab.plot.StrategySunburst()

繪製策略部位旭日圖

監控多策略。

get_strategy_df(select_strategy=None)

獲取策略部位與分配權重後計算的資料

Parameters:

Name Type Description Default
select_strategy dict

選擇策略名稱並設定權重,預設是抓取權策略並平分資金比例到各策略。 ex:{'低波動本益成長比':0.5,'研發魔人':0.2, '現金':0.2}

None

Returns:

Type Description
pd.DataFrame

strategies data

plot(select_strategy=None, path=None, color_continuous_scale='RdBu_r')

繪圖

Parameters:

Name Type Description Default
select_strategy dict

選擇策略名稱並設定權重,預設是抓取權策略並平分資金比例到各策略。 ex:{'低波動本益成長比':0.5,'研發魔人':0.2, '現金':0.2}

None
path list

旭日圖由裡到外的顯示路徑,預設為['s_name', 'market', 'category', 'stock_id']['market', 'category','stock_id','s_name']也是常用選項。

None
color_continuous_scale str

顏色變化序列的樣式名稱

'RdBu_r'

Returns:

Type Description
plotly.graph_objects.Figure

策略部位旭日圖

Examples:

from finlab.plot import StrategySunburst

# 實例化物件
strategies = StrategySunburst()
strategies.plot().show()
strategies.plot(select_strategy={'高殖利率烏龜':0.4,'營收強勢動能瘋狗':0.25,'低波動本益成長比':0.2,'現金':0.15},path =  ['market', 'category','stock_id','s_name']).show()

ex1:策略選到哪些標的? 市值/本益比板塊圖

ex2:部位被哪些策略選到,標的若被不同策略選到,可能有獨特之處喔! 市值/本益比板塊圖