skfolio.optimization.堆叠优化#

class skfolio.optimization.StackingOptimization(estimators, final_estimator=None, cv=None, quantile=0.5, quantile_measure=Sharpe Ratio, n_jobs=None, verbose=0, portfolio_params=None)[来源]#

一系列优化,带有最终的优化。

堆叠优化是一种集成方法,它将个别投资组合优化的输出与最终投资组合优化相结合。

权重是单个优化权重与最终优化权重的点积。

堆叠允许通过将每个单独投资组合优化的结果作为最终投资组合优化的输入,来利用它们的优势。

为避免数据泄露,使用样本外估计来拟合外部优化。

请注意,estimators_ 是在完整的 X 上拟合的,而 final_estimator_ 是使用基估计器的交叉验证预测训练的,使用的是 cross_val_predict

Parameters:
estimatorslist[tuple[str, BaseOptimization]]

优化估计器将被堆叠在一起。列表的每个元素被定义为一个字符串的元组(即名称)和一个优化估计器

final_estimatorBaseOptimization, optional

一个最终的 优化估计器 将用于组合基础估计器。默认值 (None) 是使用 MeanRisk

cvBaseCrossValidator | BaseCombinatorialCV | int | “prefit” | “ignore”, optional

确定在 cross_val_predict 中使用的交叉验证拆分策略,以训练 final_estimator。 默认值 (None) 是使用 5 折交叉验证 KFold()cv 的可能输入为:

  • “ignore”: 不使用交叉验证(请注意,这可能会导致数据泄漏,风险很高,容易过拟合)

  • 整数,指定KFold中的折叠数量

  • 一个用于交叉验证生成器的对象

  • 生成训练和测试数据集的可迭代对象

  • 将“prefit”假设为已经预处理的estimators,并跳过交叉验证

  • A CombinatorialPurgedCV

如果使用 CombinatorialCV 交叉验证器,则每个集群的样本外输出将变成多个路径的集合,而不是单一路径。在这个路径集合中选择的样本外路径是根据 quantilequantile_measure 参数来选择的。

如果传递了“prefit”,则假定所有 estimators 已经被拟合。 final_estimator_ 是在 estimators 对完整训练集的预测上训练的,并且不是交叉验证的预测。 请注意,如果模型是在相同的数据上训练以训练堆叠模型,则存在很高的过拟合风险。

n_jobsint, optional

并行运行所有 estimatorsfit 的作业数量。值 -1 表示使用所有处理器。默认值 (None) 在 joblib.parallel_backend 上下文中表示 1。

quantilefloat, default=0.5

对于给定度量的分位数 (quantile_measure),当 cv 参数为 CombinatorialPurgedCV交叉验证器时,超出样本内估计器路径的分位数。 默认值为 0.5,对应于具有中位数度量的路径。 (见 cv

quantile_measurePerfMeasure or RatioMeasure or RiskMeasure or ExtraRiskMeasure, default=RatioMeasure.SHARPE_RATIO

用于分位数路径选择的度量(见 quantilecv)。默认值是 RatioMeasure.SHARPE_RATIO

verboseint, default=0

详细程度。默认值是 0

portfolio_paramsdict, optional

传递给通过 predictscore 方法评估的投资组合的投资组合参数。如果未提供,name 会从优化模型中复制并系统地传递给投资组合。

Attributes:
weights_ndarray of shape (n_assets,)

资产的权重。

estimators_list[BaseOptimization]

estimators 参数的元素已在训练数据上进行拟合。当 cv="prefit" 时,estimators_ 被设置为 estimators 并且不会再次进行拟合。

named_estimators_dict[str, BaseOptimization]

用于通过名称访问任何拟合的子估计器的属性。

final_estimator_BaseOptimization

拟合的 final_estimator

n_features_in_int

fit期间看到的资产数量。

feature_names_in_ndarray of shape (n_features_in_,)

fit期间看到的资产名称。只有当X具有所有为字符串的资产名称时才定义。

方法

fit(X[, y])

拟合堆叠优化估计器。

fit_predict(X)

X 执行 fit 操作,并返回基于拟合的 weightsPortfolioPopulation 的预测结果。

get_metadata_routing()

获取此对象的元数据路由。

get_params([deep])

获取集成中估计器的参数。

predict(X)

根据拟合的权重预测PortfolioPopulationX上的Portfolio

score(X[, y])

预测分数。

set_params(**params)

设置集成中估计器的参数。

fit(X, y=None, **fit_params)[来源]#

拟合堆叠优化估计器。

Parameters:
Xarray-like of shape (n_observations, n_assets)

资产的价格收益。

yarray-like of shape (n_observations, n_targets), optional

因子或目标基准的价格回报。 默认值是 None

**fit_paramsdict

传递给基础估计器的参数。只有在 enable_metadata_routing=True 的情况下可用,您可以通过使用 sklearn.set_config(enable_metadata_routing=True) 来设置。详情请参见 元数据路由用户指南

Returns:
selfStackingOptimization

拟合的估计器。

fit_predict(X)#

X执行fit并根据拟合的weights返回预测的PortfolioPopulationPortfolioX上的值。对于因子模型,分别使用fit(X, y)然后predict(X)

Parameters:
Xarray-like of shape (n_observations, n_assets)

资产的价格收益。

Returns:
predictionPortfolio | Population

PortfolioPopulationPortfolio 估计基于 X 和拟合的 weights

get_metadata_routing()[来源]#

获取这个对象的元数据路由。

请查看 用户指南 了解路由机制是如何工作的。

Returns:
routingMetadataRequest

一个 MetadataRequest 封装路由信息。

get_params(deep=True)[来源]#

获取来自集成的估计器的参数。

返回构造函数中给定的参数以及包含在 estimators 参数中的估计器。

Parameters:
deepbool, default=True

将其设置为 True 会获取各种估计值和估计值的参数。

Returns:
paramsdict

参数和估计名称映射到它们的值或参数名称映射到它们的值。

property named_estimators#

字典,通过名称访问任何拟合的子估计器。

Returns:
Bunch
predict(X)#

根据拟合的权重预测PortfolioPopulationX上的Portfolio

优化估计器可以返回一个一维或二维数组的 weights。对于一维数组,预测返回一个 Portfolio。对于二维数组,预测返回一个 PopulationPortfolio

如果 name 在投资组合参数中没有提供,我们将使用估计器名称的前 500 个字符。

Parameters:
Xarray-like of shape (n_observations, n_assets)

资产的价格收益。

Returns:
predictionPortfolio | Population

基于拟合的 weights 估计的 PortfolioPopulationPortfolioX 上。

score(X, y=None)#

预测分数。 如果预测是单个 Portfolio,则分数是夏普比率。 如果预测是一组 PopulationPortfolio,则分数是该组中所有投资组合夏普比率的平均值。

Parameters:
Xarray-like of shape (n_observations, n_assets)

资产的价格收益。

yIgnored

未使用,仅为了遵循API一致性而存在。

Returns:
scorefloat

如果预测是单个 Portfolio,则投资组合的夏普比率为;如果预测是 PortfolioPopulation 的所有投资组合夏普比率的平均值。

set_params(**params)[来源]#

设置来自集成的估计器的参数。

有效的参数键可以通过 get_params() 列出。请注意,您可以直接设置包含在 estimators 中的估计器的参数。

Parameters:
**paramskeyword arguments

使用例如的特定参数 set_params(parameter_name=new_value)。此外,除了设置 估计器的参数外,个别估计器的 估计器也可以被设置,或者通过将其设置为 ‘drop’来移除。

Returns:
selfobject

估计器实例。