name: camp_portfilo
description: “中国商品期货 CAMP/CAPM 投资组合 + 标准跨品种套利组合自动化流程。必须在用户提到 camp_portfilo、camp portfolio、商品期货组合、100万资金、80万方向组合、20万套利组合、9个标准套利对、Y-P套利、风险平价、CAPM beta/alpha、fee.xlsx 保证金、或要自动更新 camp_pp_portfio 研究报告时使用。”

camp_portfilo:商品期货 80/20 最终组合流程

这个 skill 用于 e:\quant\camp_pp_portfio 项目,把商品期货方向组合和跨品种套利组合做成可复跑流程:

  • 80 万普通期货资金分两袖:40 万必选品种袖 + 40 万其他品种袖;两袖都用 CAMP/CAPM + 风险平价。
  • 20 万资金袖:从 9 个标准套利对中选择 4 个,强制包含 Y_P 豆油-棕榈油套利;这部分默认保持不变。
  • 保证金来源:优先使用 fee.xlsx 的真实主力合约代码、单手保证金和手续费。
  • 数据来源:TqSdk 主连日线,优先用 data_downloader2.py --method kline,因为免费账号通常没有 DataDownloader 历史下载权限。

触发后先做

  1. 切到项目目录:e:\quant\camp_pp_portfio
  2. 确认关键文件存在:
    • fee.xlsx
    • config/market_snapshot_20260514_from_image.csv
    • config/standard_arbitrage_pairs.csv
    • data_downloader2.py
    • scripts/camp_portfolio_model.py
    • scripts/arbitrage_pair_research.py
    • scripts/build_final_portfolio_report.py
  3. 如果用户给了新图片或新品种列表,先更新 market_snapshot_*.csvstandard_arbitrage_pairs.csv,再运行流程。

自动更新数据

使用 kline 缓存模式更新所有可验证品种的主连日线:

python data_downloader2.py --start 2020-01-01 --end 2026-05-14 --top 0 --method kline --kline-length 3000 --skip-existing --auth-file "e:\quant\ma_tick\account.json"

如果用户没有指定账号文件,优先检查环境变量 TQ_USER/TQ_PASSWORD,其次使用当前项目的 account.json。不要打印账号密码。

生成普通期货方向组合

运行:

python scripts/camp_portfolio_model.py --capital 1000000 --margin-utilization 0.80 --max-symbols 6 --min-days 500 --max-per-sector 1 --max-margin-per-lot-ratio 0.20 --max-one-lot-risk-ratio 0.035 --fee-file fee.xlsx

如果用户指定必选品种,用 --force-symbols。如果要避免和套利袖重复,用 --exclude-symbols 排除套利袖腿;强制纳入的品种优先级高于排除列表。

最新三袖 timing 组合示例:用户指定 EB2606、V2606、JD2606、M2607、AL2606;套利袖固定含 Y_P、C_CS、L_PP、B_M。普通期货 80 万拆成两部分:

  1. 40 万必选袖:只在用户指定品种中做风险平价。
  2. 40 万其他袖:排除套利腿和必选品种后,从其它期货中选择。

40 万必选袖命令:

python scripts/camp_portfolio_model.py --capital 1000000 --margin-utilization 0.40 --max-symbols 5 --min-days 500 --max-per-sector 0 --max-margin-per-lot-ratio 0.20 --max-one-lot-risk-ratio 0.035 --fee-file fee.xlsx --force-symbols EB,V,JD,M,AL --exclude-symbols Y,P,C,CS,L,PP,B,M --out-dir results\camp_mandatory40

40 万其他袖命令:

python scripts/camp_portfolio_model.py --capital 1000000 --margin-utilization 0.40 --max-symbols 5 --min-days 500 --max-per-sector 1 --max-margin-per-lot-ratio 0.20 --max-one-lot-risk-ratio 0.035 --fee-file fee.xlsx --exclude-symbols Y,P,C,CS,L,PP,B,M,EB,V,JD,AL --out-dir results\camp_other40

输出:

  • results/camp/portfolio_plan.csv
  • results/camp/portfolio_report.md
  • results/camp/risk_metrics.csv
  • results/camp/correlation_matrix.csv

默认基准结果示例:AG 1手、SN 1手、TL 12手、RU 3手、PG 3手、P 10手,实际保证金约 79.56 万。

40 万必选结果示例:EB 10手、V 25手、JD 28手、M 44手、AL 7手,实际保证金约 39.92 万。

40 万其他结果示例:CU 1手、TL 5手、RU 2手、PG 2手、CF 10手,实际保证金约 39.65 万。

生成 20 万套利组合

运行:

python scripts/arbitrage_pair_research.py --capital 200000 --max-pairs 4 --force-pairs Y_P

规则:

  • 9 个标准套利对全部入模。
  • 价差为 close_A - close_B
  • 套利对保证金按两腿较小保证金计。
  • 强制包含 Y_P 豆油-棕榈油。
  • 再按 pair_score、价差相关性、风险平价分配 4 个套利对。

输出:

  • results/arbitrage/pair_portfolio_plan.csv
  • results/arbitrage/arbitrage_report.md
  • results/arbitrage/pair_metrics.csv
  • results/arbitrage/spread_correlation_matrix.csv

当前基准结果示例:Y_P 3组、C_CS 59组、L_PP 10组、B_M 19组,实际保证金约 19.89 万。

合并最终组合

运行:

python scripts/build_final_portfolio_report.py --capital 1000000

如果方向袖输出到 results/camp_timing,用:

python scripts/build_final_portfolio_report.py --capital 1000000 --camp results\camp_timing\portfolio_plan.csv --arbitrage results\arbitrage\pair_portfolio_plan.csv --out-dir results\final_timing

如果使用最新三袖结构,用:

python scripts/build_final_split_portfolio_report.py --capital 1000000

输出:

  • results/final/final_portfolio_report.md
  • results/final/camp_sleeve.csv
  • results/final/arbitrage_sleeve.csv

当前基准合计保证金约 994,526 元,使用率约 99.45%。解释时要提醒:方向组合和套利组合是两个资金袖独立计算,实盘前需要在交易系统层做净头寸汇总,尤其 P 棕榈油同时出现在方向组合和 Y_P 套利里。

当前 timing 合计保证金约 997,536 元,使用率约 99.75%。解释时要提醒:M 豆粕同时出现在用户必选方向袖和 B_M 套利袖,这是用户必选导致的保留重复;其它套利腿已从方向袖排除。

最新三袖 timing 合计保证金约 994,629 元,使用率约 99.46%。解释时要提醒:其他40万普通期货袖已排除套利腿和必选品种;M 豆粕因用户指定为必选,仍与 B_M 套利袖重叠。

指标解释

  • beta:单品种或价差相对组合基准的系统性风险暴露。
  • alpha:相对基准的超额收益估计。
  • risk_contribution:按实际手数后的风险贡献,不是保证金占比。
  • spread_half_life_days:价差偏离均值后回归一半所需天数。
  • spread_zscore_252:当前价差相对最近 252 日均值偏离几个标准差。
  • pair_score:综合腿间相关、成交量、价差波动、价差 beta 和半衰期的排序分。

回复用户时

回复要包含:

  1. 数据是否已更新、多少品种/套利对入模。
  2. 40 万必选普通期货袖的品种、合约、手数和保证金。
  3. 40 万其他普通期货袖的品种、合约、手数和保证金。
  4. 20 万套利组合的套利对、两腿合约、组数和保证金。
  5. 最终三袖报告路径:results/final_timing_split/final_split_portfolio_report.md
  6. 如果用户指定必选品种,说明哪些品种因必选保留,哪些套利腿被排除以避免重复。
  7. 风险提示:保证金和手续费来自 fee.xlsx,实盘还要做净头寸汇总、交易所套利保证金规则确认和滑点/手续费复核。

最终 timing 组合报告:40万必选 + 40万其他 + 20万套利

账户资金:1,000,000 元。
必选普通期货袖实际保证金:399,209 元。
其他普通期货袖实际保证金:396,510 元。
跨品种套利袖实际保证金:198,910 元。
合计实际保证金:994,629 元,使用率 99.46%。

去重说明:其他40万普通期货袖已排除套利腿和必选品种;M 豆粕因用户指定为必选,仍与 B_M 套利袖重叠。实盘前需要在交易系统层做净头寸汇总。

重复检查

检查项 重复品种
必选40与套利20 M
其他40与套利20
必选40与其他40

40万必选普通期货袖

品种 合约 分类 手数 单手保证金 实际保证金 beta alpha 风险贡献
EB 苯乙烯 eb2607 化工期货 10 5818 58175 1.44 -1.31% 18.8%
V PVC v2609 化工期货 25 2804 70111 1.22 -9.11% 18.1%
JD 鸡蛋 jd2607 农产品期货 28 2616 73245 0.42 0.80% 21.0%
M 豆粕 m2609 农产品期货 44 2138 94063 0.63 -0.96% 19.9%
AL 铝 al2606 有色金属期货 7 14802 103614 0.90 4.58% 22.2%

40万其他普通期货袖

品种 合约 分类 手数 单手保证金 实际保证金 beta alpha 风险贡献
CU 铜 cu2606 有色金属期货 1 64170 64170 0.96 7.72% 23.3%
TL 三十年期国债 TL2606 金融期货 5 39501 197505 -0.12 4.23% 15.5%
RU 天然橡胶 ru2609 化工期货 2 19586 39171 1.11 0.90% 18.6%
PG 液化石油气 pg2607 能源期货 2 19027 38054 1.39 13.25% 26.2%
CF 棉花 CF609 农产品期货 10 5761 57610 0.83 -1.50% 16.3%

20万跨品种套利袖

套利对 合约A 合约B 手数 每组保证金 实际保证金 腿间相关 hedge beta 价差zscore 风险贡献
豆油-棕榈油 y2609 p2609 3 5986 17957 0.816 0.594 -0.48 20.1%
玉米-玉米淀粉 c2607 cs2607 59 1623 95757 0.682 0.499 -0.25 26.9%
塑料-聚丙烯 l2609 pp2609 10 4458 44578 0.901 0.876 -2.83 25.2%
豆二-豆粕 b2607 m2609 19 2138 40618 0.660 0.778 -1.20 27.8%

文件索引

文件 内容
results/camp_mandatory40/portfolio_plan.csv 40万必选普通期货袖明细
results/camp_other40/portfolio_plan.csv 40万其他普通期货袖明细
results/arbitrage/pair_portfolio_plan.csv 20万套利袖明细
results/final_timing_split/final_split_portfolio_report.md 本最终组合报告

经过调整,考虑过流动性和操作难易度,以及对冲的需要;

一键组合汇总

账户资金:1,000,000 元。
必选袖保证金:497,941 元。
其他袖保证金:297,984 元。
套利袖保证金:197,528 元。
合计保证金:993,454 元,使用率 99.35%。

资金袖汇总

资金袖 实际保证金 资金权重 统一风险贡献
arbitrage20 197528 19.88% 3.78%
mandatory40 497941 50.12% 67.24%
other40 297984 29.99% 28.98%

必选方向袖

品种 合约 手数 单手保证金 实际保证金 风险贡献(袖内)
FG 玻璃 FG609 37 2098 77626 19.09%
SA 纯碱 SA609 32 2185 69926 19.64%
JM 焦煤 jm2609 8 8946 71568 22.05%
RU 天然橡胶 ru2609 6 19586 117513 19.24%
CF 棉花 CF609 28 5761 161308 19.97%

其他方向袖

品种 合约 手数 单手保证金 实际保证金 风险贡献(袖内)
M 豆粕 m2609 58 2138 123992 35.91%
V PVC v2609 33 2804 92547 30.41%
EB 苯乙烯 eb2607 14 5818 81445 33.68%

套利袖

套利对 合约A 合约B 组数 每组保证金 实际保证金 风险贡献(袖内)
Y_P 豆油-棕榈油 y2609 p2609 33 5986 197528 100.00%

资产级统一风险贡献

资产类型 资产ID 归属袖 合约 资金权重 统一风险贡献 组合beta
arbitrage Y_P arbitrage20 y2609 / p2609 19.88% 3.78% 0.190
direction CF mandatory40 CF609 16.24% 13.28% 0.818
direction EB other40 eb2607 8.20% 9.16% 1.117
direction FG mandatory40 FG609 7.81% 13.02% 1.666
direction JM mandatory40 jm2609 7.20% 14.74% 2.047
direction M other40 m2609 12.48% 8.92% 0.715
direction RU mandatory40 ru2609 11.83% 13.02% 1.101
direction SA mandatory40 SA609 7.04% 13.17% 1.871
direction V other40 v2609 9.32% 10.90% 1.170

这 6 个品种的两两相关性里,比较适合做网格配对的低相关组合大致是:

C - SS,相关性 0.122
RM - SS,相关性 0.125
C - SR,相关性 0.136
C - TA,相关性 0.148
TA - RM,相关性 0.158
RM - CF,相关性 0.170
C - CF,相关性 0.180
SR - RM,相关性 0.179
你补充的其他品种,在“约束不变”下不入选网格主池,原因很明确:

MA:手续费占比过高,不适合当前网格约束,更适合趋势 CTA。
SA:手续费占比过高,虽然盘口很好,但当前费率口径下不适合网格,更适合趋势 CTA 或只在极强震荡时人工介入。
AO:买一太薄,盘口总量不足,且手续费占比过高,不适合当前网格。
BU:买一太薄,盘口总量不足,不适合当前网格,更偏趋势或事件驱动。
SP:买一太薄,不适合当前网格。
M:卖一太薄,不适合当前网格。
CJ:只有日盘,而且卖一量不足、成交额不足,不建议纳入当前网格主池。
按白天和夜盘,我给你几套更实用的组合方式。

夜盘主网格组合
这套是最推荐的,因为你给的候选里大部分真正合格的都是夜盘品种。

组合 A:TA、RM、SS、CF、C、SR
推荐配对:
TA - RM
RM - SS
C - SR
这套适合“核心 2 对做高频网格,1 对做低频补充”。其中 TA-RM 和 RM-SS 波动率高、相关性低,最适合做主力网格腿;C-SR 更稳,适合做补充仓位。

夜盘高波动优先组合
如果你更想让网格“跳得快”,那就把高波动腿放中心。

组合 B:TA、RM、SS、CF、C、SR
推荐配对:
TA - SS
RM - CF
C - SR
这里 TA-SS、RM-CF 的波动更强,适合更激进的网格。C-SR 作为低相关、低冲击的稳定腿。

白天优先组合
严格说,你补充的品种里真正“仅日盘”的是 CJ,但它不满足你当前网格约束,所以白天组合不建议单独围绕 CJ 建。更合理的是白天时段继续做这些夜盘品种的日盘时段网格。

组合 C:C、SR、RM、CF、TA、SS
推荐配对:
C - SS
C - TA
SR - RM
这套更适合白天时段,盘口相对更容易观察,节奏也比夜盘略稳一点。

趋势过滤后的双模式组合
这是我最建议你实盘采用的方式,不是一套死网格。

网格主池:

TA
RM
SS
CF
C
SR
趋势 CTA 备选池:

MA
SA
BU
AO
意思是:

这 6 个主池品种,只有在震荡状态下才开网格。
一旦某个品种进入明显趋势,就从网格池剔除,切到 CTA 趋势逻辑。
MA、SA、BU、AO 这几个,不建议在你当前约束下当网格主腿,优先作为趋势品种处理。
如果你要我给一个最实盘化的最终方案,我会建议你这样分:

最终建议

夜盘主交易网格池:TA、RM、SS、CF
白天补充网格池:C、SR
趋势候补池:MA、SA、BU、AO
不建议当前纳入:CJ、M、SP
如果一定要落成“6 到 8 个品种的最终组合”,我建议就定成:

TA
RM
SS
CF
C
SR
MA
SA
其中前 6 个做网格候选,后 2 个只做趋势观察,不直接上网格。

最推荐的 3 套网格对组合,我给你一个可直接执行的版本:

夜盘稳健版:

TA - RM
RM - SS
C - SR
夜盘高波动版:

TA - SS
RM - CF
C - SR
白天均衡版:

C - SS
C - TA
SR - RM

推荐组合是:

C 玉米:年化波动率 12.29%,60 手,保证金约 99,498。
TA PTA:年化波动率 27.79%,11 手,保证金约 45,016。
SS 不锈钢:年化波动率 22.07%,8 手,保证金约 59,720。
RM 菜籽粕:年化波动率 26.95%,33 手,保证金约 54,955。
CF 棉花:年化波动率 19.47%,10 手,保证金约 57,610。
SR 白糖:年化波动率 13.17%,25 手,保证金约 82,560。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐