feat(framework_v2): 对齐 V1 配置,实现指数信号→ETF收益回测
配置对齐:
- config_simple.yaml 严格对齐 V1 config.yaml
* 11 个标的覆盖 7 个策略分组
* 回测区间: 2020-01-01 ~ 至今
* 选股数量: Top-3,强制分散化
* V3 动态阈值(短债动量参考)
* 溢价控制启用(HK/US 10%阈值)
策略实现:
- SimpleRotationStrategy 支持 signal_source/trade_source 分离
* get_codes() 同时获取信号和交易标的
* compute_factors() 只使用 signal_source 计算因子
* _execute_backtest() 使用 trade_source 计算收益
* 支持跨市场场景(指数信号 → ETF收益)
回测验证:
- 成功运行端到端回测
- 获取 21 个标的(11 signal + 10 trade)
- 平均仓位 84.42%
- ⚠️ 已知问题: Flask API 只返回缓存数据(2026年),需修复
修复项:
- StrategyBase.run() 兼容信号矩阵(移除 'weight' 列假设)
This commit is contained in:
@@ -186,7 +186,12 @@ class StrategyBase(ABC):
|
||||
# 4. 仓位管理
|
||||
print("[4/5] 仓位管理...")
|
||||
positions = self.manage_positions(signals)
|
||||
print(f" 平均持仓: {positions['weight'].sum().mean():.2%}")
|
||||
# positions 可能是信号矩阵或权重矩阵,计算平均仓位
|
||||
if hasattr(positions, 'sum'):
|
||||
avg_position = positions.sum(axis=1).mean() if hasattr(positions.sum(axis=1), 'mean') else 0
|
||||
print(f" 平均仓位: {avg_position:.2%}")
|
||||
else:
|
||||
print(f" 仓位管理完成")
|
||||
|
||||
# 5. 执行回测
|
||||
print("[5/5] 执行回测...")
|
||||
|
||||
Reference in New Issue
Block a user