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_composition()

绘制投资组合组成。

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#

投资组合年化因子。

clear()[来源]#

清除所有度量、健身、累积收益和插槽中的回撤

abstract property composition#

投资组合构成的数据框

abstract contribution(measure, spacing=None, to_df=True)[来源]#

计算每个资产对给定指标的贡献

copy()[来源]#

复制投资组合属性,但不包括其度量值。

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_composition()[来源]#

绘制投资组合组成。

Returns:
plotFigure

返回绘图图形对象。

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#

投资组合回报数据框。

rolling_measure(measure=Sharpe Ratio, window=30)[来源]#

在滚动窗口上计算测量。

Parameters:
measurect.Measure, default=RatioMeasure.SHARPE_RATIO

测量。默认测量是夏普比率。

windowint, default=30

窗口大小。默认值为 30 个观察值。

Returns:
seriespandas Series

滚动测量系列。

summary(formatted=True)[来源]#

所有措施的投资组合总结。

Parameters:
formattedbool, default=True

如果设置为 True,度量将被格式化为带有单位的四舍五入字符串。

Returns:
summarypandas Series

投资组合概述。