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
- cvBaseCrossValidator | BaseCombinatorialCV | int | “prefit” | “ignore”, optional
确定在
cross_val_predict中使用的交叉验证拆分策略,以训练final_estimator。 默认值 (None) 是使用 5 折交叉验证KFold()。cv的可能输入为:“ignore”: 不使用交叉验证(请注意,这可能会导致数据泄漏,风险很高,容易过拟合)
整数,指定
KFold中的折叠数量一个用于交叉验证生成器的对象
生成训练和测试数据集的可迭代对象
将“prefit”假设为已经预处理的
estimators,并跳过交叉验证
如果使用
CombinatorialCV交叉验证器,则每个集群的样本外输出将变成多个路径的集合,而不是单一路径。在这个路径集合中选择的样本外路径是根据quantile和quantile_measure参数来选择的。如果传递了“prefit”,则假定所有
estimators已经被拟合。final_estimator_是在estimators对完整训练集的预测上训练的,并且不是交叉验证的预测。 请注意,如果模型是在相同的数据上训练以训练堆叠模型,则存在很高的过拟合风险。- n_jobsint, optional
并行运行所有
estimators的fit的作业数量。值-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
用于分位数路径选择的度量(见
quantile和cv)。默认值是RatioMeasure.SHARPE_RATIO。- verboseint, default=0
详细程度。默认值是
0。- portfolio_paramsdict, optional
传递给通过
predict和score方法评估的投资组合的投资组合参数。如果未提供,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操作,并返回基于拟合的weights的Portfolio或Population的预测结果。获取此对象的元数据路由。
get_params([deep])获取集成中估计器的参数。
predict(X)根据拟合的权重预测
Portfolio或Population在X上的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返回预测的Portfolio或Population的Portfolio在X上的值。对于因子模型,分别使用fit(X, y)然后predict(X)。- Parameters:
- Xarray-like of shape (n_observations, n_assets)
资产的价格收益。
- Returns:
- predictionPortfolio | Population
Portfolio或Population的Portfolio估计基于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)#
根据拟合的权重预测
Portfolio或Population在X上的Portfolio。优化估计器可以返回一个一维或二维数组的
weights。对于一维数组,预测返回一个Portfolio。对于二维数组,预测返回一个Population的Portfolio。如果
name在投资组合参数中没有提供,我们将使用估计器名称的前 500 个字符。- Parameters:
- Xarray-like of shape (n_observations, n_assets)
资产的价格收益。
- Returns:
- predictionPortfolio | Population
基于拟合的
weights估计的Portfolio或Population的Portfolio在X上。
- score(X, y=None)#
预测分数。 如果预测是单个
Portfolio,则分数是夏普比率。 如果预测是一组Population的Portfolio,则分数是该组中所有投资组合夏普比率的平均值。- Parameters:
- Xarray-like of shape (n_observations, n_assets)
资产的价格收益。
- yIgnored
未使用,仅为了遵循API一致性而存在。
- Returns:
- scorefloat
如果预测是单个
Portfolio,则投资组合的夏普比率为;如果预测是Portfolio的Population的所有投资组合夏普比率的平均值。