组合优化后端边界
语言:简体中文 · English
portfolio_backtester 定义了与求解器框架无关的优化请求和结果。后端通过这套契约接入,不把第三方求解器对象暴露给调用方。
当前原生后端
native.equal_weight:对请求中的资产等权分配。native.hrp:复用现有层次风险平价实现,并投影到请求的只做多权重边界内。native.inverse_vol:按近期波动率倒数生成偏好权重,再投影到请求边界。默认回看 252 个观察值,指数为0.5。native.qp_min_variance:使用 SciPy SLSQP 求解最小方差 QP,支持线性暴露边界,以及向锚定权重或前期权重靠拢的惩罚项。
这些后端只提供通用组合机制,不解释分数、行业、风格或其他暴露向量的策略含义。
请求契约
PortfolioOptimizationRequest 接收收益矩阵,以及可选的预期收益、前期权重、基准权重、锚定权重、协方差矩阵和 LinearExposureConstraint。同时接收只做多权重边界和协方差收缩参数。
请求中的资产标识必须一致。协方差矩阵必须有限、对称,并按收益矩阵的列顺序排列。线性约束由名称和暴露向量组成,可设置下界、上界或两者。当前原生请求要求 long_only=True。
请求会保留常见的调用方输入,即使某个基线不需要其中部分字段。后端结果仍须符合请求中的资产集合和权重规则。
结果与校验
PortfolioOptimizationResult 包含后端名称、归一化权重、可 JSON 序列化的诊断信息,以及模式版本 portfolio_optimization_result.v1。校验会检查资产身份、权重有限性、权重和是否为 1、只做多语义、单资产上下界和诊断信息格式。
native.qp_min_variance 的 diagnostics.constraint_residuals 按约束名记录有符号余量。下界使用约束名,上界使用 <name>.upper。负值表示违反约束。求解失败时,只有等权组合也满足权重和暴露边界,才会回退到等权,否则会抛出错误并列出违反的边界。结果模式保持不变。
契约不报告等式约束的秩或解的唯一性。目标函数、盒约束和暴露约束共同作用时,单独做秩分析无法判断解是否唯一。
新增后端
新增适配器应遵守统一请求与结果契约,记录求解器及版本,通过固定场景测试,返回经过校验的权重和诊断信息。可选依赖缺失时,原生后端仍须可用。目前本模块没有注册第三方组合优化适配器。