跳轉到

繪圖函數(Ploting)

pyfolio.plotting.show_perf_stats

顯示績效與風險指標。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • factor_returns: pd.Series, optional 計算 beta 所需的指標報酬率,通常設定為市場報酬。
  • positions: pd.DataFrame, optional 每日標的與現金部位表。
  • transactions: pd.DataFrame, optional 交易策略的交易資料,一列為一筆交易。
  • turnover_denom: str 周轉率計算方式,有 AGB 和 portfolio_value 兩種,預設為 AGB, 計算方法為 (買進總額 + 賣出總額絕對值) / (AGB or portfolio_value), AGB = portfolio-value - cash。
  • live_start_date: datetime, optional
    回測期間之後,開始 live trading 日期,相當於區分 In-sample 與 out-of sample 檢測,預設 = None,日期必須標準化。
  • bootstrap: boolean, optional 對各項指標進行拔靴法測試,預設 = False。
  • header_rows: dict or OrderedDict, optional 在表格 start date yyyy-mm-dd 上額外增加列,預設為None。

Returns:

pd.DataFrame

Return to Menu

pyfolio.plotting.show_worst_drawdown_periods

顯示前 n 大的交易回落期間。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • top: int, optional 決定 n,預設為 5。

Returns:

pd.DataFrame

Return to Menu

pyfolio.plotting.show_and_plot_top_positions

製作多單持有量前十、空單持有量前十與綜合持有量的標的持有部位比率表格,並且繪製各時間點持有比率圖。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • positions_alloc: pd.DataFrame 個股標的的持有部位分布。
  • show_and_plot: int, optional 1. 若為 0,僅繪圖。 2. 若為 1,僅製表。 3. 若為 2,同時製作圖與表。
  • hide_positions: boolean, optional 若為 True,隱藏標的名稱。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_rolling_returns

繪製出累積交易策略報酬率與指標報酬率。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • factor_returns: pd.Series, optional 指標報酬率,通常設定為市場報酬。
  • live_start_date: datetime, optional
    回測期間之後,開始 live trading 日期,相當於區分 In-sample 與 out-of sample 檢測,預設 = None,日期必須標準化。
  • logy: boolean, optional 是否使用對數報酬,預設 = False。
  • cone_std: float or tuple, optional 設定 out_of_sample 時,交易策略預期報酬率的標準差區間。 若為 float,則設定單一標準差區間。 若為 tuple,則設定多個標準差區間。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • volatility_match: boolean, optional 是否將交易策略與指標的報酬率以波動度進行標準化,以便比較相同風險下的報酬差異。
  • cone_function: function, optional 用來計算 out_of_sample 期間,預測報酬率的函式。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_returns

繪製每日交易策略報酬圖。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • live_start_date: datetime, optional 回測期間之後,開始 live trading 日期,相當於區分 In-sample 與 out-of sample 檢測,預設 = None,日期必須標準化。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_rolling_beta

繪製六個月與十二個月的移動 beta 值。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • factor_returns: pd.Series 計算 beta 所需的指標報酬率,通常設定為市場報酬。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_rolling_volatility

繪製移動波動度圖表

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • factor_returns: pd.Series, optional 計算指標波動度所需的指標報酬率,通常設定為市場報酬。
  • rolling_window: int, optional 計算移動波動度所需之窗格大小。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_rolling_sharpe

繪製移動波動度圖表

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • factor_returns: pd.Series, optional 計算指標夏普值所需的指標報酬率,通常設定為市場報酬。
  • rolling_window: int, optional 計算移動波動度所需之窗格大小。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_drawdown_periods

繪製前 n 大回撤期間於累積報酬圖。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • top: int, optional 決定 n,預設為 10。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

import pyfolio
pyfolio.plotting.plot_drawdown_periods(returns)

pyfolio.plotting.plot_drawdown_underwater

繪製策略 underwater 程度。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_drawdown_underwater(returns)

pyfolio.plotting.plot_monthly_returns_heatmap

以熱力圖繪製交易策略每月報酬。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_monthly_returns_heatmap(returns)

pyfolio.plotting.plot_annual_returns

繪製交易策略每年報酬。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_annual_returns(returns)

pyfolio.plotting.plot_monthly_returns_dist

繪製交易策略每月報酬之分布圖。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_monthly_returns_dist(returns)

pyfolio.plotting.plot_return_quantiles

繪製交易策略日、週、月頻率的報酬盒狀圖。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • live_start_date: datetime, optional 回測期間之後,開始 live trading 日期,相當於區分 In-sample 與 out-of sample 檢測,預設 = None,日期必須標準化。
  • ax: matplotlib.Axes, optional matplotlib 的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_return_quantiles(returns, live_start_date=pd.Timestamp("2018-07-02", tz='UTC'))

pyfolio.plotting.plot_exposures

繪製多空曝險部位圖。

1. Long = 多頭部位總價值/所有部位總價值
2. Short = 空頭部位總價值/所有部位總價值
3. Net = 現金部位以外總價值/所有部位總價值

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • positions_alloc: pd.DataFrame 個股標的的持有部位分布。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_exposures(returns, positions)

pyfolio.plotting.plot_max_median_position_concentration

繪製多空集中程度 (concentration) 的最大值與中位數。

1. max_long = 多頭部位集中程度最大值
2. max_short = 空頭部位集中程度最大值
3. median_long = 多頭部位集中程度中位數
4. median_short = 空頭部位集中程度中位數

Parameters:

  • positions_alloc: pd.DataFrame 個股標的的持有部位分布。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_max_median_position_concentration(positions)

pyfolio.plotting.plot_holdings

繪製持有股數。 1. Daily holdings: 每日持有股數 2. Average daily holdings, by month: 每月日均持有數 3. Average daily holdings, Total: 日均持有數

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • positions: pd.DataFrame 每日標的與現金部位表。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_holdings(returns, positions)

pyfolio.plotting.plot_long_short_holdings

繪製多空頭持有股數。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • positions: pd.DataFrame 每日標的與現金部位表。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_long_short_holdings(returns, positions)

pyfolio.plotting.plot_gross_leverage

繪製毛槓桿 (gross leverage),gross leverage = (long exposure - short exposure)/net asset value。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • positions: pd.DataFrame 每日標的與現金部位表。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_gross_leverage(returns, positions)

pyfolio.plotting.plot_turnover

繪製周轉率圖,周轉率計算方法請見下方 turnover_denom。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • transactions: pd.DataFrame 交易策略的交易資料,一列為一筆交易。
  • positions: pd.DataFrame 每日標的與現金部位表。
  • turnover_denom: str, optional 周轉率計算方式,有 AGB 和 portfolio_value 兩種,預設為 AGB, 計算方法為 (買進總額 + 賣出總額絕對值) / (AGB or portfolio_value), AGB = portfolio-value - cash。
  • legend_loc: plt.lengend_loc, optional 圖表中圖例的位置。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_turnover(returns, transactions, positions)

pyfolio.plotting.plot_daily_volume

繪製每日交易量。

Parameters:

  • returns: pd.Series 交易策略的日報酬率。
  • transactions: pd.DataFrame 交易策略的交易資料,一列為一筆交易。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_daily_volume(returns, transactions)

pyfolio.plotting.plot_daily_turnover_hist

繪製每日周轉率分布圖,周轉率計算方法請見下方 turnover_denom。

Parameters:

  • transactions: pd.DataFrame 交易策略的交易資料,一列為一筆交易。
  • positions: pd.DataFrame 每日標的與現金部位表。
  • turnover_denom: str, optional 周轉率計算方式,有 AGB 和 portfolio_value 兩種,預設為 AGB, 計算方法為 (買進總額 + 賣出總額絕對值) / (AGB or portfolio_value), AGB = portfolio-value - cash。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_daily_turnover_hist(transactions, positions)

pyfolio.plotting.plot_txn_time_hist

繪製交易時間分布圖。(僅適用於日內資料)

Parameters:

  • transactions: pd.DataFrame 交易策略的交易資料,一列為一筆交易。
  • bin_minutes: float, optional 時間區間間隔,預設為 5 分鐘。
  • tz: str, optional 時區。
  • ax: matplotlib.Axes, optional matplotlib 中的尺標。

Returns:

matplotlib.Axes

Return to Menu

pyfolio.plotting.plot_txn_time_hist(transactions, tz = 'Asia/Taipei')