拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

把机器学习的研究方法带进资产配置:为什么中国量化开发者值得关注 skfolio?

把机器学习的研究方法带进资产配置:为什么中国量化开发者值得关注 skfolio? 很多量化研究者都有这样的经历策略信号已经算出来了真正耗时的工作却刚刚开始——如何分配资金怎样限制集中度换一种协方差估计结果还稳不稳参数是在验证集上选出来的还是看着整段回测“调”出来的skfolio 值得关注的核心是把资产配置组织成一套可以组合、调参和验证的研究流程。如果你已经熟悉Python 和 scikit-learn这套设计会很自然组合优化器也是估计器可以fit、predict也可以进入 Pipeline。其官方定位涵盖组合优化、因子模型构建和风险管理采用 BSD-3-Clause 开源许可证。(项目源代码 https://github.com/skfolio/skfolio1. skfolio 想解决什么问题把预期收益、协方差矩阵交给优化器得到一组权重是组合研究的一步。真实研究还需要不断回答数据怎么处理、模型怎么选、参数怎么确定以及结果在未参与选择的数据上是否成立。作者团队在论文中将 skfolio 放在 Python 组合优化与机器学习生态的交汇处。它的设计重点是为不同组合方法提供一致的研究接口。作者Hugo Delatte 在公开 LinkedIn 资料中的创业帖子解释skfolio 最初服务于较复杂的 QIS 指数希望兼顾研发效率与受监管环境中的生产需求。随后成立的 Skfolio Labs 提供企业支持、服务等级协议与专业指导。这是作者对项目起源和商业支持方向的说明不能据此推断任何特定机构已经采用也不能视作监管认证。对中国开发者来说这对应一个很具体的需求把各自散落在笔记本中的资产筛选、风险估计、优化和评估逐步整理成可以复用的研究组件。图 1根据官方模块设计整理的流程示意。图中的“验证”需要正确设置时间切分并不意味着接入框架后自动消除数据泄漏。2. 最值得关注的五个优势优势一让资产筛选与优化进入同一条 Pipelineskfolio 提供资产预筛选组件例如去除高度相关资产、选择数据完整的资产等并能与优化器组成 scikit-learn Pipeline。研究者由此可以把筛选规则也纳入每个训练窗口减少在整个历史样本上提前筛选造成的信息穿越。Hugo 在介绍缺失数据功能的帖子中专门提到资产成立、到期、违约和退市等事件带来的挑战。他强调把处理步骤放入 Pipeline便于与交叉验证和参数搜索衔接。这对成立时间不同的 ETF、不断变化的股票池尤其有启发。不过历史资产池与退市数据仍需研究者提供组件不会凭空补齐缺失的历史也不能独自修复幸存者偏差。优势二参数选择可以成为规范实验协方差估计方法、正则化强度、风险指标都可能改变最终权重。skfolio 支持通过 GridSearchCV、RandomizedSearchCV 搜索参数也支持对嵌套组件进行调参。评分指标可以按照研究目标设置。这让研究问题从“哪个参数画出的曲线最好看”转向“在预先约定的验证方案中哪个参数更稳定”。研究团队也更容易保留统一的实验口径。参数搜索本身仍会过拟合。最终测试区间应在搜索前留出一旦根据测试结果反复修改模型它就不再是独立测试。优势三把样本外验证放到显眼位置skfolio 提供 WalkForward以及带有清洗和隔离机制的组合交叉验证工具。前者适合按时间向前推进的检验后者能够组织多条测试路径用于观察结果对样本切分的敏感性。一个值得强调的细节是不打乱数据不等于已经满足时间因果顺序。普通 KFold 即使设置 shuffleFalse也可能用测试区间之后的数据训练。若要模拟当时的决策应优先采用只使用过去信息的滚动验证存在重叠标签时还需结合标签跨度设置清洗与隔离。图 2概念示意不代表任何真实回测结果。调参仅使用开发区间最后的独立测试区间在模型确定后才使用。优势四风险建模能够围绕业务目标组合skfolio 的优化模块覆盖均值—风险、风险预算、最大分散化、层次聚类等方法并提供交易成本、权重、分组、换手等相关建模选项。其意义在于研究者可以把业务约束与风险目标一起写进模型而不只追求一组无约束最优权重。各参数的适用范围仍需按具体优化器核对。例如同一组资产可以分别研究最小方差与 CVaR 目标前者关注波动后者关注尾部损失。结果差异可以帮助投资团队讨论风险偏好而不是简单宣布某一种方法“更先进”。在输入端skfolio 提供多种协方差估计方法包括收缩、去噪等这些方法为研究估计误差提供了可替换组件效果仍依赖样本与市场环境。进一步地Black–Litterman、Entropy Pooling、时间序列因子模型和合成情景等模块为研究主观观点、风险因子和压力情景提供了接口。压力情景是模型假设不能被当作未来事件的预测。优势五结果不止是一张权重表skfolio 用 Portfolio、MultiPeriodPortfolio 等对象承载组合结果使组合收益、风险与跨期评估更容易衔接。当前文档还区分目标权重保持不变与持仓权重随收益漂移的评估约定。使用者需要明确选择与实际策略相符的口径。对于团队协作这意味着研究报告可以更清楚地记录“模型是什么、假设是什么、结果如何计算”。这是一项工程价值并不直接意味着投资回报更高。3. v1.0 新功能基于资产特征的横截面因子模型v1.0.0 引入了 CharacteristicsFactorModel将 skfolio 的研究流程从组合配置延伸到自定义因子模型的构建。该版本还新增了 AssetPanel 数据容器、因子暴露转换器、Alpha 估计器、凸优化中的因子暴露约束以及事后和事前归因功能。这一模型根据各时点实际可获得的资产特征例如行业、市值和基本面数据构建因子暴露。在每个时点通过资产收益对因子暴露的横截面回归估计因子收益。这与时间序列因子模型有所不同后者以已知的因子收益序列为输入利用一段历史数据估计各资产的因子暴露。其研究流程串联了资产特征、描述指标、经过转换的因子暴露、横截面回归以及因子风险和特质风险的估计。输出的 ReturnDistribution 为组合优化器提供输入拟合后的 FactorModel 则提供分解结果和诊断信息。各组件可以遵循 scikit-learn 的接口约定进行定制和调参。因子模型指南 https://skfolio.org/user_guide/factor_models.html)对于专注中国股票市场的研究团队这为研究自定义风险模型并将其接入组合构建提供了一条具体路径。例如可以先定义行业和风格因子暴露再评估相应的组合风险并开展归因分析。这是一种应用设想并非已经验证的本地部署案例或业绩结论。使用这一模型仍然需要各时点真实可得的资产特征数据以及适当的估计样本范围。官方文档提供了基于合成数据的教程方便读者探索 API其中的实证示例采用美国股票数据不能视为对中国市场有效性的验证。因子模型数据与示例 https://skfolio.org/user_guide/factor_models.html4. Skfolio Labs 官网选登的专家评价Skfolio Labs (官网 https://skfoliolabs.com/官网展示了研究者与从业者的使用评价。他们的反馈重点涉及该工具在实际研究中的设计特点。Peter Cotton 博士官网列示身份Crunch Labs 联合创始人曾任 ExodusPoint 和 Intech 首席数据科学家。Cotton 肯定了项目的代码质量与管理并指出遵循 scikit-learn 的接口约定有助于通过统计堆叠方法组合不同的投资组合模型。他还特别提到了 skfolio 对 Schur 投资组合的实现。Romain Lafarguette 博士官网列示身份GIC 量化负责人曾任 ADIA 量化研究员。Lafarguette 强调了易于使用的接口、丰富的优化设计、约束与因子中性化设置的灵活性以及求解器选择和回测能力。Daniel P. Palomar 博士官网列示身份香港科技大学优化领域教授《Portfolio Optimization: Theory and Application》作者。Palomar 肯定了统一的研究框架、多样的组合方法、滚动与随机化回测以及可视化工具。以上内容为 Skfolio Labs 官网选登评价的中文转述并非逐字引语。人物职位按该网站列示不应将这些个人评价理解为其任职机构的背书。5. 中国量化与 fintech 团队可以怎样用以下是根据工具能力提出的应用方向不代表已经核实的中国客户案例。ETF 与多资产配置研究。 对一组股票、债券、商品等资产代理比较等权、最小方差、风险预算和层次风险平价统一检查波动、回撤、集中度和换手。skfolio 在这里可以承担组合建模与评估环节。多因子策略的组合构建。上文介绍的 v1.0 横截面特征因子模型为团队使用自有数据探索自定义股票风险模型、考虑因子暴露的组合配置及归因分析提供了具体起点。FOF、基金筛选与财富管理原型。面对不同成立时间和相关性的基金可以研究动态资产池与配置方法。但净值频率、申赎安排、费用和实际可投资性需要另外建模不能直接把日频股票示例当成基金组合实盘。风险管理与投研沟通。使用不同风险目标或压力情景回答“如果相关性结构变化组合暴露会怎样”等问题把假设与结果一起展示比只呈现一条净值曲线更便于讨论。高校教学与量化团队培训。在统一接口下比较方法能够让学习者把注意力放在模型假设和验证设计上。这是本文对其教学用途的判断。图 3建议的职责划分。skfolio 位于研究与组合建模层市场数据、可交易性判定和真实订单执行需要配套系统。在中国市场落地优先补齐三件事1. 时间上真实可得的数据。 明确复权、财务信息可用时间、历史资产池、退市记录与交易日历避免使用当时尚未知晓的信息。2. 策略对应的交易约束。按具体品种和历史规则处理停牌、涨跌停、买卖限制、最小交易单位、申赎及费用这些条件不能只用一个通用成本参数替代。3. 研究权重到实际持仓的衔接。增加成交与滑点假设、订单取整、执行延迟和持仓核对再评估净收益。这些是本文提出的实施要求不是声称 skfolio 已原生覆盖所有中国交易规则。官方公开资料也不足以支持“中国几乎无人使用”或“仅在少数国家推广”的市场渗透率判断。6. 一个适合上手的最小示例先用官方示例数据理解接口再替换为经过清洗和授权的本地数据。当前 GitHub README 标明需要 Python 3.10 或更高版本可通过 pip install -U skfolio安装。(安装入口 https://github.com/skfolio/skfoliofrom sklearn.model_selection import train_test_splitfrom skfolio.datasets import load_sp500_datasetfrom skfolio.optimization import MeanRiskfrom skfolio.preprocessing import prices_to_returns# 官方示例数据用于熟悉接口不代表中国市场。returns prices_to_returns(load_sp500_dataset())train, test train_test_split(returns, test_size0.3, shuffleFalse)# 默认最小方差模型先拟合历史再评价留出的数据。model MeanRisk()model.fit(train)portfolio model.predict(test)print(model.weights_)print(portfolio.summary())此例根据官方快速入门整理未在本文制作环境中安装运行没有虚构回测数字。predict(test) 是用拟合后的组合评价测试收益并非提前预测未来市场涨跌。这个入门例子也没有模拟真实成交与完整的再平衡成本。下一步可以设计一个中国 ETF 研究实验预先确定历史资产池与样本区间在开发区间用滚动窗口比较等权、最小方差和 HRP确定方案后仅用保留的独立测试区间做最终评价。统一成本、再平衡频率与风险指标公开完整设定。这样的实验比单独展示一张最高收益曲线更能帮助社区判断工具是否适合自己。7. 从一次试用开始参与中文生态如果你正在寻找一套能够连接 sklearn、组合优化和样本外验证的 Python 工具skfolio 值得放进下一次研究实验。你可以从三个小动作开始- 访问源码与示例skfolio GitHub仓库 ​https://github.com/skfolio/skfolio- 跑通一个模型官方示例库 ​https://skfolio.org/auto_examples/index.html再用自己的数据检验。- 反馈真实体验分享中文教程、可复现的问题或改进建议如果项目对你有帮助欢迎在 GitHub 点亮 ⭐支持项目被更多开发者发现。资料说明本文使用作者公开可访问的个人资料及具体帖子未声称覆盖全部动态。
返回列表