# ETF轮动策略配置

# ==================== 候选池配置 ====================
# 指数-ETF映射配置
# index: 指数代码（用于计算因子信号）
# etf: ETF代码（用于实际交易和收益计算），null表示直接交易指数/加密货币
code_list:
  # 中国A股指数
  "399006.SZ":
    name: "创业板指"
    etf: "159915.SZ"
    market: "A"
  "H30269.CSI":
    name: "中证红利低波"
    etf: "512890.SH"
    market: "A"
  
  
  # 全球市场
  "NDX":
    name: "纳指100"
    etf: "513100.SH"
    market: "US"
  "N225":
    name: "日经225"
    etf: "513520.SH"
    market: "JP"
  "GDAXI":
    name: "德国DAX"
    etf: "513030.SH"
    market: "EU"
  "HSI":
    name: "恒生指数"
    etf: "159920.SZ"
    market: "HK"
  "HSTECH.HK":
    name: "恒生科技"
    etf: "513130.SH"
    market: "HK"
  
  # 商品 & 固收
  # 使用 COMEX/WTI 期货替代上期所主力合约（数据更长）
  "GC=F":                           # COMEX黄金期货（2000年至今）
    name: "黄金"
    etf: "518880.SH"               # 国内黄金ETF
    market: "COMMODITY"
  "CL=F":                           # WTI原油期货（2000年至今）
    name: "原油"
    etf: "160723.SZ"               # 国内原油ETF
    market: "COMMODITY"
  # 使用 COMEX 铜期货替代上期所主力合约（数据更长）
  "HG=F":                           # COMEX铜期货（2000年至今）
    name: "有色金属"
    etf: "159980.SZ"               # 国内有色金属ETF
    market: "COMMODITY"
  
  # 防御类资产：短债指数
  # 931862.CSI = 中证0-9个月国债指数（短债指数）
  # 数据范围：2007-12-31开始，约19年数据
  # 久期：极短（<1年），波动极小，熊市防御效果最佳
  # 
  # 【收益归因实证分析结论】
  # 分析方法：将持有债券期间的收益分解为两部分
  #   1. 标的收益：债券本身的价格上涨（年化约3%）
  #   2. 决策收益：持有债券期间避免持有股票带来的损失
  # 
  # 实证结果（2002-2026回测区间）：
  #   - 标的收益占比：约17%（债券本身增长贡献）
  #   - 决策收益占比：约83%（避险决策贡献）
  # 
  # 核心结论：
  #   短债指数在轮动策略中的价值主要来自"正确避险决策"，
  #   而非债券本身的价格增长。这验证了动量轮动策略的
  #   核心逻辑：通过仓位选择规避下跌风险，而非依赖标的本身收益。
  # 
  # 收益对比（策略净值）：
  #   - 使用931862.CSI（短债）：净值264.54，收益26354%
  #   - 使用000012.SH（综合国债）：净值216.30，收益21530%
  #   - 短债防御效果更好，收益高18.2%
  # 
  # 注意：无对应ETF可交易，直接使用指数数据计算动量和收益
  "931862.CSI":
    name: "短债指数"
    etf: null
    market: "BOND"
  
  # 000012.SH（上证国债指数）配置已注释，原因：
  # 1. 000012.SH是综合国债指数（包含短债到长债），无对应ETF
  # 2. 之前错误映射到511520.SH（政金债ETF），指数-ETF不匹配
  # 3. 收益低于短债指数（216.30 vs 264.54）
  # "000012.SH":
  #   name: "上证国债指数"
  #   etf: "511520.SH"
  #   market: "BOND"

# 主市场配置
primary_market:
  source: "Tushare"
  code: "000300.SH"

# 基准指数配置
benchmark:
  code: "000300.SH"
  name: "沪深300"

# ==================== 回测参数 ====================
start_date: "2020-01-01"

# ==================== 因子参数 ====================
# 动量/趋势窗口期（天数）
n_days: 25
# 因子类型：'momentum', 'slope_r2', 'weighted_momentum'
factor_type: "weighted_momentum"

# 动态周期参数 (匹配 JoinQuant 策略)
auto_day: false
min_days: 20
max_days: 60

# ==================== 轮动参数 ====================
select_num: 3
# 强制分散化：每个大类只选 Top 1
diversified: true
# 动量最低阈值：标的动量得分需>=此值才考虑入选（年化收益率*R²）
# 设置为0表示过滤负动量标的，更高阈值虽能改善回撤但可能错过正动量机会
min_score: 0.0

# V3: 动态阈值配置（替代固定 min_score: 0.0）
# 使用短债动量作为动态 min_score：标的动量 < 短债动量 → 不持有
bond_threshold:
  enabled: true              # true=V3动态阈值, false=退化为V2固定阈值
  bond_code: "931862.CSI"    # 阈值参考标的（短债指数）
  ratio: 1.0                 # 阈值 = 短债动量 × ratio
  fill_bond: true            # 选出不足select_num只时，用短债填充空余仓位

# ==================== 调仓控制 ====================
# 最低调仓周期（交易日）：持仓至少持有 N 天后才允许换仓
rebalance_days: 1
# 调仓得分阈值：新组合总得分需超过当前组合 X% 才触发调仓
rebalance_threshold: 0.0
# 单次换仓成本（双边，含佣金+滑点）
trade_cost: 0.001

# ==================== 溢价控制配置 ====================
# 跨境ETF溢价过滤机制（防止高溢价买入）
premium_control:
  enabled: true
  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

# ==================== 数据缓存 ====================
# 是否使用本地缓存（True=优先从本地读取）
use_cache: true

# ==================== 数据源配置 ====================
# Flask API 服务配置（优先使用远程 API 获取数据）
flask_api:
  enabled: true                         # 是否启用 Flask API
  url: "https://k3s.tokenpluse.xyz"     # Flask API 服务地址

# SSH 隧道配置（用于网络受限环境，通过境外服务器访问 yfinance）
ssh_tunnel:
  enabled: true                         # 是否启用 SSH 隧道
  host: "8.218.167.69"                  # SSH 服务器地址（阿里云香港 ECS IP）
  port: 22                              # SSH 端口
  username: "root"                      # SSH 用户名
  key_path: "hk_ecs.pem"             # SSH 私钥路径（相对于项目根目录）
  local_port: 1080                      # 本地 SOCKS5 代理端口
