feat: 新增slope_r2因子并切换为默认因子(年化19.84%, 夏普1.14)

- simple_rotation.py: 新增3种score函数(vol_adjusted_momentum, slope_r2, momentum)
- config_loader.py: FactorType枚举新增VOL_ADJUSTED_MOMENTUM
- config_simple.yaml: factor.type 切换为 slope_r2
- experiments/factor_comparison.py: 4种因子对比实验脚本
- experiments/output: 实验结果(slope_r2全面胜出)
This commit is contained in:
2026-06-06 15:49:22 +08:00
parent 04b858ff09
commit b564a47a1b
5 changed files with 393 additions and 183 deletions

View File

@@ -1,186 +1,118 @@
# ETF轮动策略配置V2 框架)
#
# 配置版本: 2.0.0
# 最后更新: 2024-04-16
# 策略名称: rotation
# 描述: 全球资产大类轮动策略 - 复现 V1 结果
# ============================================================
# 元数据
# ============================================================
metadata:
version: "2.0.0"
strategy: "rotation"
description: "全球资产大类轮动策略 V2 - 复现 V1 结果"
last_updated: "2024-04-16"
# ============================================================
# 资产池配置(扁平化设计:严格对齐 V1 config.yaml
# ============================================================
asset_pools:
assets:
# 中国A股指数
"399006.SZ":
name: "创业板指"
group: "A"
signal_source: "399006.SZ"
trade_source: "159915.SZ"
description: "创业板指数"
"H30269.CSI":
name: "中证红利低波"
group: "A"
signal_source: "H30269.CSI"
trade_source: "512890.SH"
description: "红利低波指数"
# 全球市场
"NDX":
name: "纳指100"
group: "US"
signal_source: "NDX"
trade_source: "513100.SH"
description: "纳斯达克100指数"
"N225":
name: "日经225"
group: "JP"
signal_source: "N225"
trade_source: "513520.SH"
description: "日经225指数"
"GDAXI":
name: "德国DAX"
group: "EU"
signal_source: "GDAXI"
trade_source: "513030.SH"
description: "德国DAX指数"
"HSI":
name: "恒生指数"
group: "HK"
signal_source: "HSI"
trade_source: "159920.SZ"
description: "恒生指数"
"HSTECH.HK":
name: "恒生科技"
group: "HK"
signal_source: "HSTECH.HK"
trade_source: "513130.SH"
description: "恒生科技指数"
# 商品(使用 COMEX/WTI 期货替代上期所主力合约,数据更长)
"GC=F":
name: "黄金"
group: "COMMODITY"
signal_source: "GC=F"
trade_source: "518880.SH"
description: "COMEX黄金期货2000年至今"
"CL=F":
name: "原油"
group: "COMMODITY"
signal_source: "CL=F"
trade_source: "160723.SZ"
description: "WTI原油期货2000年至今"
"HG=F":
name: "有色金属"
group: "COMMODITY"
signal_source: "HG=F"
trade_source: "159980.SZ"
description: "COMEX铜期货2000年至今"
# 防御类资产:短债指数
# 931862.CSI = 中证0-9个月国债指数短债指数
# 数据范围2007-12-31开始约19年数据
# 久期:极短(<1年波动极小熊市防御效果最佳
# 收益归因标的收益约17%决策收益约83%
# 注意无对应ETF可交易直接使用指数数据计算动量和收益
"931862.CSI":
name: "短债指数"
group: "BOND"
signal_source: "931862.CSI"
trade_source: "931862.CSI"
description: "中证0-9个月国债指数久期<1年防御配置"
# ============================================================
# 基准配置
# ============================================================
benchmark:
code: "000300.SH"
name: "沪深300"
# ============================================================
# 回测配置
# ============================================================
399006.SZ:
description: 创业板指数
group: A
name: 创业板指
signal_source: 399006.SZ
trade_source: 159915.SZ
931862.CSI:
description: 中证0-9个月国债指数久期<1年防御配置
group: BOND
name: 短债指数
signal_source: 931862.CSI
trade_source: 931862.CSI
CL=F:
description: WTI原油期货2000年至今
group: COMMODITY
name: 原油
signal_source: CL=F
trade_source: 160723.SZ
GC=F:
description: COMEX黄金期货2000年至今
group: COMMODITY
name: 黄金
signal_source: GC=F
trade_source: 518880.SH
GDAXI:
description: 德国DAX指数
group: EU
name: 德国DAX
signal_source: GDAXI
trade_source: 513030.SH
H30269.CSI:
description: 红利低波指数
group: A
name: 中证红利低波
signal_source: H30269.CSI
trade_source: 512890.SH
HG=F:
description: COMEX铜期货2000年至今
group: COMMODITY
name: 有色金属
signal_source: HG=F
trade_source: 159980.SZ
HSI:
description: 恒生指数
group: HK
name: 恒生指数
signal_source: HSI
trade_source: 159920.SZ
HSTECH.HK:
description: 恒生科技指数
group: HK
name: 恒生科技
signal_source: HSTECH.HK
trade_source: 513130.SH
N225:
description: 日经225指数
group: JP
name: 日经225
signal_source: N225
trade_source: 513520.SH
NDX:
description: 纳斯达克100指数
group: US
name: 纳指100
signal_source: NDX
trade_source: 513100.SH
backtest:
start_date: "2020-01-10" # 与 V1 保持一致(第一个完整交易日)
# end_date: "2026-05-22" # 与 V1 保持一致
# ============================================================
# 因子配置
# ============================================================
start_date: '2020-01-10'
benchmark:
code: 000300.SH
name: 沪深300
data:
sources:
- enabled: true
timeout: 120
type: flask_api
url: ${FLASK_API_URL}
factor:
type: "weighted_momentum" # 加权动量
n_days: 25 # 25 天窗口
# ============================================================
# 轮动配置
# ============================================================
rotation:
select_num: 3 # 选择 Top-3
diversified: true # 强制分散化:每个大类只选 Top 1
# 阈值配置V3 动态阈值)
threshold:
mode: "dynamic" # 动态阈值模式
fixed_value: 0.0 # 固定阈值mode=fixed时使用
# 动态阈值配置(使用短债动量作为阈值)
dynamic:
reference: "931862.CSI" # 阈值参考标的(短债指数)
ratio: 1.0 # 阈值 = 短债动量 × ratio
fallback_enabled: true # 参考不可用时是否回退
fallback_value: 0.0 # 回退值
# ============================================================
# 调仓配置
# ============================================================
n_days: 25
type: slope_r2
metadata:
description: 全球资产大类轮动策略 V2 - 复现 V1 结果
last_updated: '2024-04-16'
strategy: rotation
version: 2.0.0
premium_control:
default_threshold: 0.1
enabled: false
market_overrides:
A:
enabled: false
COMMODITY:
enabled: false
HK:
enabled: true
threshold: 0.1
US:
enabled: true
threshold: 0.1
mode: filter
penalty_factor: 0.5
rebalance:
min_hold_days: 1
score_threshold: 0.0
trade_cost: 0.001 # 万1 交易成本场内ETF万0.5免5
# ============================================================
# 溢价控制配置
# ============================================================
premium_control:
enabled: false # 启用溢价控制
default_threshold: 0.10 # 默认溢价阈值 10%
mode: "filter" # filter(完全排除) 或 penalize(降权)
penalty_factor: 0.5 # 降权模式下的惩罚系数
# 按市场覆盖配置
market_overrides:
A: # A股 ETF
enabled: false # 不启用(溢价通常 < 0.5%
HK: # 港股 ETF
enabled: true
threshold: 0.10 # 阈值 10%
US: # 美股 ETF
enabled: true
threshold: 0.10 # 阈值 10%
COMMODITY: # 商品 ETF
enabled: false # 不启用
# ============================================================
# 数据配置
# ============================================================
data:
sources:
- type: "flask_api"
enabled: true
url: "${FLASK_API_URL}"
timeout: 120
trade_cost: 0.001
rotation:
diversified: true
select_num: 3
threshold:
dynamic:
fallback_enabled: true
fallback_value: 0.0
ratio: 1.0
reference: 931862.CSI
fixed_value: 0.0
mode: dynamic