skfolio.portfolio.BasePortfolio#
- class skfolio.portfolio.BasePortfolio(returns, observations, name=None, tag=None, annualized_factor=252.0, fitness_measures=None, risk_free_rate=0.0, compounded=False, min_acceptable_return=None, value_at_risk_beta=0.95, entropic_risk_measure_theta=1.0, entropic_risk_measure_beta=0.95, cvar_beta=0.95, evar_beta=0.95, drawdown_at_risk_beta=0.95, cdar_beta=0.95, edar_beta=0.95)[来源]#
skfolio中所有投资组合的基础投资组合类。
- Parameters:
- returnsarray-like of shape (n_observations,)
投资组合收益的向量。
- observationsarray-like of shape (n_observations,)
投资组合观察的向量。
- namestr, optional
投资组合的名称。
默认值(None)是使用对象ID。- tagstr, optional
分配给投资组合的标签。
标签用于操作来自Population的投资组合组。- fitness_measureslist[measures], optional
健身指标列表。 健身指标用于计算投资组合的健身度,进而用于计算支配。 默认值(
None)是使用列表 [PerfMeasure.MEAN, RiskMeasure.VARIANCE]- annualized_factorfloat, default=252.0
用于根据平方根法则年化以下度量的因子:
年化均值 = 均值 * 因子
年化方差 = 方差 * 系数
年化半方差 = 半方差 * 因子
年化标准差 = 标准差 * sqrt(因子)
年化半偏差 = 半偏差 * sqrt(因子)
年化夏普比率 = 夏普比率 * sqrt(factor)
年化Sortino比率 = Sortino比率 * sqrt(因子)
- risk_free_ratefloat, default=0.0
无风险利率。默认值为
0.0。- compoundedbool, default=False
如果将其设置为 True,则累计收益会被复利计算。 默认值是
False。- min_acceptable_returnfloat, optional
用于区分“下行”和“上行”收益以计算下部偏差矩的最低可接受回报:
首个下部分矩
半方差
半偏差
默认值 (
None) 是使用平均值。- value_at_risk_betafloat, default=0.95
投资组合VaR(风险价值)的置信水平,表示最差(1-beta)%观察值的回报。 默认值是
0.95。- entropic_risk_measure_thetafloat, default=1.0
投资组合熵风险度量的风险厌恶水平。 默认值为
1.0。- entropic_risk_measure_betafloat, default=0.95
投资组合熵风险度量的置信水平。 默认值为
0.95。- cvar_betafloat, default=0.95
投资组合CVaR(条件风险价值)的置信水平,表示在最坏的 (1-beta)% 观察值上的预期VaR。默认值为
0.95。- evar_betafloat, default=0.95
投资组合 EVaR(熵风险价值)的置信水平。
默认值为0.95。- drawdown_at_risk_betafloat, default=0.95
投资组合风险下跌的置信水平 (DaR) 代表在最差的 (1-beta)% 观察中的下跌。默认值为
0.95。- cdar_betafloat, default=0.95
组合CDaR(条件风险下跌)的置信水平代表在最差(1-beta)%观察值上的预期下跌。 默认值为
0.95。- edar_betafloat, default=0.95
投资组合EDaR(风险下行熵)的置信水平。 默认值为
0.95。
- Attributes:
n_observationsfloat观察数量
- meanfloat
投资组合收益的平均值。
- annualized_meanfloat
按年化计算的均值 \(mean \times annualization\_factor\)
- mean_absolute_deviationfloat
平均绝对偏差。偏差是回报与最低可接受回报之间的差异(
min_acceptable_return)。- first_lower_partial_momentfloat
第一个下部矩。第一个下部矩是低于最低可接受回报的收益的平均值(
min_acceptable_return)。- variancefloat
方差(第二矩)
- annualized_variancefloat
年化方差由 \(variance \times annualization\_factor\)
- semi_variancefloat
半方差(第二低部分矩)。半方差是低于最低可接受收益的收益的方差(
min_acceptable_return)。- annualized_semi_variancefloat
半方差年化由 \(semi\_variance \times annualization\_factor\)
- standard_deviationfloat
标准差(第二矩的平方根)。
- annualized_standard_deviationfloat
年化标准差为 \(standard\_deviation \times \sqrt{annualization\_factor}\)
- semi_deviationfloat
半偏差(第二个下偏部分矩的平方根)。 半标准偏差是低于最低可接受回报的收益的标准偏差(
min_acceptable_return)。- annualized_semi_deviationfloat
半偏差年化 \(semi\_deviation \times \sqrt{annualization\_factor}\)
- skewfloat
偏斜度。偏斜度是分布不对称性的量度。对称分布的偏斜度为零。较高的偏斜度对应于更长的右尾。
- kurtosisfloat
峰度。这是分布尾部厚度的一个测量指标。更高的峰度对应着更大的偏差极端性(肥尾)。
- fourth_central_momentfloat
第四中心矩。
- fourth_lower_partial_momentfloat
第四下部分矩。它是衡量返回值低于最低可接受回报(
min_acceptable_return)的下行尾部的沉重程度的指标。更高的第四下部分矩对应于下行偏差的更大极端性(下行肥尾)。- worst_realizationfloat
最糟糕的认知,即最糟糕的回报。
- value_at_riskfloat
历史VaR(风险价值)。 VaR是在给定置信水平下的最大损失(
value_at_risk_beta)。- cvarfloat
历史CVaR(条件风险价值)。CVaR(或尾部VaR)代表在指定置信水平下的平均损失(
cvar_beta)。- entropic_risk_measurefloat
历史熵风险度量。这是一种风险度量,依赖于投资者定义的风险厌恶(
entropic_risk_measure_theta),通过在给定置信水平下的指数效用函数(entropic_risk_measure_beta)。- evarfloat
历史EVaR(熵值风险)。这是一种一致的风险度量,它是VaR和CVaR的上限,从给定的置信水平(
evar_beta)的切尔诺夫不等式中获得。EVaR可以使用相对熵的概念表示。- drawdown_at_riskfloat
历史风险损失。它是在给定置信水平下的最大回撤 (
drawdown_at_risk_beta)。- cdarfloat
在给定置信水平下的历史CDaR(条件最大回撤风险) (
cdar_beta)。- max_drawdownfloat
最大回撤。
- average_drawdownfloat
平均回撤。
- edarfloat
EDaR(风险下行熵)。它是一种一致的风险度量,作为风险下行和CDaR的上限,基于给定置信水平(
edar_beta)的切尔诺夫不等式获得。EDaR可以通过相对熵的概念来表示。- ulcer_indexfloat
溃疡指数
- gini_mean_differencefloat
基尼均值差异(GMD)。它是两个实现之间的预期绝对差。GMD是非正态分布的变异性优越度量,优于方差。它可以用于形成二次随机占优的必要条件,而方差则无法实现。
- mean_absolute_deviation_ratiofloat
平均绝对偏差比率。 它是超额收益(平均值 - 无风险利率)除以平均绝对偏差。
- first_lower_partial_moment_ratiofloat
第一个下偏差动量比率。 它是超额收益(平均收益 - 无风险利率)除以第一个下偏差动量。
- sharpe_ratiofloat
夏普比率。它是超额收益(均值 - 无风险利率)除以标准差。
- annualized_sharpe_ratiofloat
夏普比率年度化为 \(sharpe\_ratio \times \sqrt{annualization\_factor}\).
- sortino_ratiofloat
Sortino 比率。 它是超额平均值(平均值 - 无风险利率)除以半标准偏差。
- annualized_sortino_ratiofloat
Sortino比率按年化计算 \(sortino\_ratio \times \sqrt{annualization\_factor}\).
- value_at_risk_ratiofloat
VaR 比率。 它是超额收益率(平均值 - 无风险利率)除以风险价值(VaR)。
- cvar_ratiofloat
CVaR比率。 它是超额平均(平均 - 无风险利率)除以条件风险值(CVaR)。
- entropic_risk_measure_ratiofloat
熵风险度量比率。它是超额收益(收益 - 无风险利率)除以熵风险度量。
- evar_ratiofloat
EVaR比率。 这是超额平均值(平均值 - 风险无风险利率)除以EVaR(熵值风险)。
- worst_realization_ratiofloat
最差实现比率。 它是超额收益(平均收益 - 无风险收益率)与最差实现(最差收益)之比。
- drawdown_at_risk_ratiofloat
风险下行比例。它是超额均值(均值 - 无风险利率)除以风险下行。
- cdar_ratiofloat
CDaR 比率。 它是超额平均值(平均值 - 风险自由利率)除以 CDaR(条件风险下的回撤)。
- calmar_ratiofloat
Calmar比率。 它是超额收益(平均值 - 无风险利率)除以最大回撤。
- average_drawdown_ratiofloat
平均回撤比率。 它是超额均值(均值 - 无风险利率)除以平均回撤。
- edar_ratiofloat
EDaR 比率。 它是超额平均(平均 - 风险无风险利率)除以 EDaR(风险下的熵回撤)。
- ulcer_index_ratiofloat
溃疡指数比率。 这是超额平均值(平均值 - 无风险利率)除以溃疡指数。
- gini_mean_difference_ratiofloat
基尼均差比。 它是超额收益(均值 - 无风险利率)除以基尼均差。
方法
clear()清除所有指标、适应度、累计收益和插槽中的回撤
contribution(measure[, spacing, to_df])计算每个资产对给定指标的贡献
copy()复制投资组合属性而不带其度量值。
dominates(other[, idx])投资组合主导。
get_measure(measure)返回给定度量的值。
绘制投资组合组成。
plot_contribution(measure[, spacing])绘制每个资产对给定度量的贡献。
plot_cumulative_returns([log_scale, idx])绘制投资组合的累积收益。
plot_returns([idx])绘制投资组合收益
plot_rolling_measure([measure, window])在滚动窗口中绘制测量值。
rolling_measure([measure, window])计算滚动窗口上的度量。
summary([formatted])所有指标的投资组合摘要。
- property annualized_factor#
投资组合年化因子。
- abstract property composition#
投资组合构成的数据框
- cumulative_returns#
投资组合累计收益数组。
- property cumulative_returns_df#
投资组合累积收益系列。
- dominates(other, idx=None)[来源]#
投资组合主导权。
如果当前投资组合的每个目标不严格劣于其他投资组合的相应目标,并且至少有一个目标严格更好,则返回 true。
- Parameters:
- otherBasePortfolio
另一个投资组合。
- idxslice | array, optional
索引或切片指示进行主导的目标。 默认(
None)是使用所有目标。
- Returns:
- valuebool
如果该投资组合主导另一个投资组合,则返回True。
- drawdowns#
投资组合回撤数组。
- fitness#
投资组合的适应性。
- property fitness_measures#
投资组合健康度指标。
- get_measure(measure)[来源]#
返回给定度量的值。
- Parameters:
- measurePerfMeasure | RiskMeasure | ExtraRiskMeasure | RatioMeasure
输入度量。
- Returns:
- valuefloat
测量值。
- property measures_df#
所有度量的DataFrame。
- property n_observations#
观察数量
- plot_contribution(measure, spacing=None)[来源]#
绘制每个资产对特定指标的贡献。
- Parameters:
- measureMeasure
用于贡献计算的度量。
- spacingfloat, optional
有限差分的间距“h”: \(contribution(wi)= \frac{measure(wi-h) - measure(wi+h)}{2h}\)
- Returns:
- plotFigure
资产对该度量的贡献的plotly图。
- plot_cumulative_returns(log_scale=False, idx=None)[来源]#
绘制投资组合的累计回报。非复合累计回报从0开始。复合累计回报重新缩放后从1000开始。
- Parameters:
- log_scalebool, default=False
如果设置为 True,累积收益将在 y 轴上以对数尺度显示,并以 1000 为基准。累积收益必须是复合的,否则会引发异常。
- idxslice | array, optional
要绘制的观察值的索引或切片。
默认值(None)是绘制所有观察值。
- Returns:
- plotFigure
返回绘图图形对象。
- plot_returns(idx=None)[来源]#
绘制投资组合收益
- Parameters:
- idxslice | array, optional
要绘制的观察值的索引或切片。
默认值(None)是绘制所有观察值。
- Returns:
- plotFigure
返回绘图 Figure 对象
- plot_rolling_measure(measure=Sharpe Ratio, window=30)[来源]#
在滚动窗口上绘制度量。
- Parameters:
- measurect.Measure, default = RatioMeasure.SHARPE_RATIO
这个测量。
- windowint, default=30
窗口大小。
- Returns:
- plotFigure
返回绘图 Figure 对象
- property returns_df#
投资组合回报数据框。