feat(config): 添加CU.SHF有色金属期货信号源,移除冗余上证红利
讨论背景: - 159980.SZ(有色ETF)是商品型基金,跟踪上期所有色金属期货价格指数 - 应使用期货价格(CU.SHF沪铜)作为信号源,与黄金(AU.SHF)/原油(CL.NYM)保持一致 - 上证红利(000015.SH)与中证红利低波(H30269.CSI)高度相关,同属A股大类 在diversified模式下只能选1个,保留两个无实际意义 配置变更: - rotation.yaml: 新增CU.SHF→159980.SZ映射(market=COMMODITY) - rotation.yaml: 移除000015.SH上证红利(与红利低波冗余) - hybrid_source.py: FUTURES_CODE_MAP新增CU.SHF铜期货 - ab_test_iterations.py: 同步更新有色market为COMMODITY 实证结果 - CU.SHF加入前后对比(11只池,2019-2026): 无CU(11只): CAGR=47.37%, Sharpe=2.25, MaxDD=-17.86%, Calmar=2.65 含CU(12只): CAGR=46.16%, Sharpe=2.21, MaxDD=-17.86%, Calmar=2.58 影响: CAGR-1.2%, 商品大类内部竞争加剧(黄金/原油/有色三选一) 2020/2022铜价暴涨时有色贡献额外收益,整体影响很小 实证结果 - 移除上证红利后(11只,2019-2026): 含上证红利: CAGR=46.16%, Sharpe=2.21, MaxDD=-17.86%, Calmar=2.58 移除后: CAGR=46.42%, Sharpe=2.22, MaxDD=-17.33%, Calmar=2.68 所有指标均改善,消除冗余标的提升选择效率 实证结果 - diversified=true vs false(11只,select_num=3): true(跨类分散): CAGR=46.45%, Sharpe=2.22, MaxDD=-17.33%, Calmar=2.68 false(纯Top3): CAGR=44.19%, Sharpe=2.13, MaxDD=-18.12%, Calmar=2.44 关键差异在2022年(+17.63%): false模式选3只商品同时回调 结论: diversified=true全面优于false,保持当前配置 最终候选池(11只,7大类): A股: 创业板(399006.SZ), 红利低波(H30269.CSI) 美股: 纳指100(NDX) | 日本: 日经225(N225) | 欧洲: 德国DAX(GDAXI) 港股: 恒生指数(HSI), 恒生科技(HSTECH.HK) 商品: 黄金(AU.SHF), 原油(CL.NYM), 有色金属(CU.SHF) 固收: 30年国债(931862.CSI)
This commit is contained in:
@@ -14,10 +14,6 @@ code_list:
|
||||
name: "中证红利低波"
|
||||
etf: "512890.SH"
|
||||
market: "A"
|
||||
"000015.SH":
|
||||
name: "上证红利"
|
||||
etf: "510880.SH"
|
||||
market: "A"
|
||||
|
||||
# 全球市场
|
||||
"NDX":
|
||||
@@ -50,6 +46,10 @@ code_list:
|
||||
name: "原油"
|
||||
etf: "160723.SZ"
|
||||
market: "COMMODITY"
|
||||
"CU.SHF":
|
||||
name: "有色金属"
|
||||
etf: "159980.SZ"
|
||||
market: "COMMODITY"
|
||||
"931862.CSI":
|
||||
name: "30年国债"
|
||||
etf: "511090.SH"
|
||||
|
||||
@@ -135,6 +135,7 @@ class HybridDataSource:
|
||||
# 期货代码映射 (代码 -> Tushare格式)
|
||||
FUTURES_CODE_MAP = {
|
||||
"AU.SHF": "AU.SHF", # 上海期货交易所黄金主力合约
|
||||
"CU.SHF": "CU.SHF", # 上海期货交易所铜主力合约
|
||||
}
|
||||
|
||||
def __init__(self, ssh_config: Optional[dict] = None, use_cache: bool = True):
|
||||
|
||||
@@ -28,7 +28,7 @@ ORIGINAL_POOL = {
|
||||
"399986.SZ": {"name": "中证银行", "market": "A", "etf": "516310.SH"},
|
||||
"399997.SZ": {"name": "中证白酒", "market": "A", "etf": "512690.SH"},
|
||||
"399989.SZ": {"name": "中证医疗", "market": "A", "etf": "512170.SH"},
|
||||
"399395.SZ": {"name": "国证有色", "market": "A", "etf": "159880.SZ"},
|
||||
"399395.SZ": {"name": "国证有色", "market": "COMMODITY", "etf": "159880.SZ"},
|
||||
"399998.SZ": {"name": "中证煤炭", "market": "A", "etf": "515220.SH"},
|
||||
"399967.SZ": {"name": "中证军工", "market": "A", "etf": "512660.SH"},
|
||||
"HSTECH.HK": {"name": "恒生科技", "market": "HK", "etf": "513180.SH"},
|
||||
|
||||
Reference in New Issue
Block a user