跳轉到

finlab.report

finlab.analysis.Report

Report(creturn, position, fee_ratio, tax_ratio, trade_at, next_trading_date, market_info)

Bases: Report

策略回測基礎報告 Args: creturn (pd.Series): 策略報酬率時間序列。 position (pd.DataFrame): 策略報酬率時間序列。 fee_ratio (float): 交易手續費率,預設為台灣無打折手續費 0.001425。可視個人使用的券商優惠調整費率。 tax_ratio (float): 交易稅率,預設為台灣普通股一般交易交易稅率 0.003。若交易策略的標的皆為 ETF,記得設成 0.001。 trade_at (str): 選擇回測之還原股價以收盤價或開盤價計算,預設為 close。可選 close 或 open。 next_trading_date (str): 預期下期換股日。 market_info (str or MarketInfo): 可選擇'TWSTOCK', 'CRYPTO',分別為台股或加密貨幣, 或繼承 finlab.market_info.MarketInfo 開發回測市場類別。 Attributes: benchmark (pd.Series): 對標報酬率曲線的時間序列,用於 Report.display() 顯示策略報酬率比較標準。 update_date (str): 用於 Report.display() 顯示策略對標的報酬率曲線。 asset_type (str): 資產類別, tw_stock 或 crypto。 last_trading_date (str): 最近產生交易訊號的日期。

Source code in finlab/analysis/__init__.py
def __init__(self, creturn, position, fee_ratio, tax_ratio, trade_at, next_trading_date, market_info):
    """策略回測基礎報告
    Args:
      creturn (pd.Series): 策略報酬率時間序列。
      position (pd.DataFrame): 策略報酬率時間序列。
      fee_ratio (float): 交易手續費率,預設為台灣無打折手續費 0.001425。可視個人使用的券商優惠調整費率。
      tax_ratio (float): 交易稅率,預設為台灣普通股一般交易交易稅率 0.003。若交易策略的標的皆為 ETF,記得設成 0.001。
      trade_at (str): 選擇回測之還原股價以收盤價或開盤價計算,預設為 close。可選 close 或 open。
      next_trading_date (str): 預期下期換股日。
      market_info (str or MarketInfo): 可選擇`'TWSTOCK', 'CRYPTO'`,分別為台股或加密貨幣,
                                                                 或繼承 `finlab.market_info.MarketInfo` 開發回測市場類別。
    Attributes:
      benchmark (pd.Series): 對標報酬率曲線的時間序列,用於 Report.display() 顯示策略報酬率比較標準。
      update_date (str): 用於 Report.display() 顯示策略對標的報酬率曲線。
      asset_type (str): 資產類別, tw_stock 或 crypto。
      last_trading_date (str): 最近產生交易訊號的日期。
    """
    super().__init__(creturn, position, fee_ratio, tax_ratio, trade_at, next_trading_date, market_info)

display

display(lagacy=False, save_report_path=None)

顯示回測報告

PARAMETER DESCRIPTION
lagacy

True, 使用舊版報告格式。False, 使用新版報告格式。

TYPE: bool DEFAULT: False

save_report_path

報告儲存路徑,預設為 None,即不儲存報告。

TYPE: str DEFAULT: None

RETURNS DESCRIPTION

None

Source code in finlab/analysis/__init__.py
def display(self, lagacy=False, save_report_path=None):
    """ 顯示回測報告

    Args:
        lagacy (bool): True, 使用舊版報告格式。False, 使用新版報告格式。
        save_report_path (str): 報告儲存路徑,預設為 None,即不儲存報告。

    Returns:
        None
    """

display_mae_mfe_analysis

display_mae_mfe_analysis(violinmode='group', mfe_scatter_x='mae', **kwargs)

顯示波動分析圖組

分析使用說明。 Args: violinmode (str): violin 型態統計圖樣式,模式分為 group 與 overlay。 預設為 group,group 模式為將交易勝敗分群統計',overlay 採取全數統計。 mfe_scatter_x (str): 子圖 2-1、2-2 MFE 散點圖的X軸比較項目設定,可選'mae' or 'return'。 **kwargs (dict): 其餘圖表外觀(layout)參數。 Returns: (plotly.graph_objects.Figure): 波動分析圖組

Examples:

group : 波動分析圖組

overlay : 波動分析圖組

Source code in finlab/analysis/__init__.py
def display_mae_mfe_analysis(self, violinmode='group', mfe_scatter_x='mae', **kwargs):
    """ 顯示波動分析圖組

    [分析使用說明](https://www.finlab.tw/display_mae_mfe_analysis/)。
    Args:
      violinmode (str): violin 型態統計圖樣式,模式分為 group 與 overlay。
                        預設為 group,group 模式為將交易勝敗分群統計',overlay 採取全數統計。
      mfe_scatter_x (str): 子圖 2-1、2-2 MFE 散點圖的X軸比較項目設定,可選`'mae' or 'return'`。
      **kwargs (dict): 其餘圖表外觀(layout)參數。
    Returns:
      (plotly.graph_objects.Figure): 波動分析圖組

    Examples:
      group :
      ![波動分析圖組](img/analysis/display_mae_mfe_group.png)

      overlay :
      ![波動分析圖組](img/analysis/display_mae_mfe_overlay.png)
    """
    return super().display_mae_mfe_analysis(violinmode, mfe_scatter_x, **kwargs)

get_mae_mfe

get_mae_mfe()

取得 mae_mfe 時序資料

RETURNS DESCRIPTION
DataFrame

波動時序資料

Source code in finlab/analysis/__init__.py
def get_mae_mfe(self):
    """取得 mae_mfe 時序資料

    Returns:
      (pd.DataFrame): 波動時序資料
    """
    return super().get_mae_mfe()

get_stats

get_stats(resample='1d', riskfree_rate=0.02)

取得策略統計數據 取得數據如:年化報酬、勝率、夏普率、索提諾比率、最大回檔、近期各年月報酬率統計、alpha_beta... Args: resample (str): 報酬率檢測週期,其他常用數值為 W、 M 、Q(每週、每月、每季換股)。 riskfree_rate (float): 無風險利率,與夏普率計算有關。 Returns: (dict): 策略指標數據

Source code in finlab/analysis/__init__.py
def get_stats(self, resample='1d', riskfree_rate=0.02):
    """取得策略統計數據
    取得數據如:年化報酬、勝率、夏普率、索提諾比率、最大回檔、近期各年月報酬率統計、alpha_beta...
    Args:
        resample (str): 報酬率檢測週期,其他常用數值為 W、 M 、Q(每週、每月、每季換股)。
        riskfree_rate (float): 無風險利率,與夏普率計算有關。
    Returns:
        (dict): 策略指標數據
    """
    return super().get_stats(resample, riskfree_rate)

get_trades

get_trades()

取得回測逐筆交易紀錄

RETURNS DESCRIPTION
DataFrame

交易紀錄,欄位包含:

  • entry_sig_date:進場訊號產生日。
  • exit_sig_date:出場訊號產生日。
  • entry_date:進場日。
  • exit_date:出場日。
  • position:持有佔比。
  • period:持有天數。
  • return:報酬率。
  • trade_price@entry_date:進場價。
  • trade_price@exit_date:出場價。
  • mae:持有期間最大不利報酬率幅度。
  • gmfe:持有期間最大有利報酬率幅度。
  • bmfe:mae發生前的最大有利報酬率幅度。
  • mdd:持有期間最大回撤。
  • pdays:處於獲利時的天數。
Source code in finlab/analysis/__init__.py
def get_trades(self):
    """取得回測逐筆交易紀錄

    Returns:
      (pd.DataFrame): 交易紀錄,欄位包含:

        * entry_sig_date:進場訊號產生日。
        * exit_sig_date:出場訊號產生日。
        * entry_date:進場日。
        * exit_date:出場日。
        * position:持有佔比。
        * period:持有天數。
        * return:報酬率。
        * trade_price@entry_date:進場價。
        * trade_price@exit_date:出場價。
        * mae:持有期間最大不利報酬率幅度。
        * gmfe:持有期間最大有利報酬率幅度。
        * bmfe:mae發生前的最大有利報酬率幅度。
        * mdd:持有期間最大回撤。
        * pdays:處於獲利時的天數。
    """
    return super().get_trades()

position_info

position_info()

取得近期持有部位與預期換股資訊 Returns: (dict): 部位資訊

Source code in finlab/analysis/__init__.py
def position_info(self):
    """取得近期持有部位與預期換股資訊
    Returns:
      (dict): 部位資訊
    """
    return super().position_info()

run_analysis

run_analysis(analysis, display=True, **kwargs)

執行策略分析外掛模組 Args: analysis (str or object): finlab.analysis內的分析模組名稱,ex:'liquidityAnalysis'。 display (bool): 是否顯示模組分析圖表。 **kwargs (mapping, optional): 分析模組參數調整。 Returns: (pd.DataFrame or plotly.graph_objects.Figure): 分析結果

Source code in finlab/analysis/__init__.py
def run_analysis(self, analysis, display=True, **kwargs):
    """執行策略分析外掛模組
    Args:
      analysis (str or object): `finlab.analysis`內的分析模組名稱,ex:`'liquidityAnalysis'`。
      display (bool): 是否顯示模組分析圖表。
      **kwargs (mapping, optional): 分析模組參數調整。
    Returns:
      (pd.DataFrame or plotly.graph_objects.Figure): 分析結果
    """
    return super().run_analysis(analysis, display=display, **kwargs)

upload

upload(name=None)

上傳回測報告資料到量化平台網站 Args: name (str): 策略名稱。

Source code in finlab/analysis/__init__.py
def upload(self, name=None):
    """上傳回測報告資料到量化平台網站
    Args:
      name (str): 策略名稱。
    """
    return super().upload(name)