关于 strategy-framework
strategy-framework 是用于定义、记录、测试和管理交易策略的标准化 Skill,面向需要将交易想法转化为可复现规则的交易者。它提供策略模板、生命周期流程和评估脚本,涵盖风险参数与绩效标准。
主要功能
- 01标准化策略定义模板
- 02可测试的进出场规则
- 03策略生命周期管理
- 04绩效评估计分卡
- 05交互式策略定义脚本
适用场景
- 01将市场假设写成可检验规则
- 02制定仓位规模与风险限制
- 03按流程回测和模拟交易
- 04评估策略是否继续或退役
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill strategy-framework安装后在 Claude Code 中输入/strategy-framework确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/strategy_template.mdstrategy_types.mdscripts/define_strategy.pystrategy_scorecard.py详细介绍
策略框架
用于定义、记录、测试和管理交易策略的标准化系统。此技能提供模板和工具,以规范交易纪律、确保可复现性,并使策略可供测试。
策略框架为何重要
没有书面的策略框架,交易会导致:
- 缺乏一致性:由情绪而非规则驱动的临时决策
- 无法测试:模糊的想法,无法回测或评估
- 范围蔓延:策略在缺少版本控制定义的情况下不断偏移
- 风险管理缺失:缺少止损、仓位限制或回撤暂停机制
策略框架要求你:
- 针对市场低效提出可证伪的假设
- 定义精确、可由机器测试的入场和出场规则
- 在交易前明确仓位规模和风险参数
- 设定继续执行或终止策略的最低绩效标准
- 通过带版本号的策略文档跟踪变更
策略定义模板
每项策略都必须使用标准模板记录。完整的可复制粘贴模板见 references/strategy_template.md。
核心部分
标识
Name: SOL-EMA-Cross v1.0
Asset class: Solana tokens (top 50 by 24h volume)
Timeframe: Primary 1H, confirmation 4H
Style: Trend following
优势假设:说明你利用的市场低效,以及这种低效存在的原因。
Hypothesis: Solana mid-cap tokens exhibit momentum persistence
on the 1H timeframe due to retail herding behavior and low
institutional participation. EMA crossovers capture the
initiation of these trends.
入场规则:使用 AND/OR 逻辑组合的具体、可测试条件。
def entry_signal(data: pd.DataFrame) -> bool:
"""All conditions must be True (AND logic)."""
ema_cross = data["ema_12"] > data["ema_26"] # EMA 12 crossed above 26
ema_rising = data["ema_26"].diff(3) > 0 # 26 EMA trending up
volume_ok = data["volume"] > data["vol_sma_20"] * 1.5 # Volume confirmation
regime_ok = data["adx"] > 20 # Trending regime
return ema_cross & ema_rising & volume_ok & regime_ok
出场规则:每项策略都需要多种出场机制。
| 出场类型 | 方法 | 参数 |
|---|---|---|
| 止损 | 基于 ATR | 入场价下方 2.0 × ATR(14) |
| 止盈 | 风险倍数 | 3.0 × 风险(3:1 R:R) |
| 移动止损 | Chandelier | 最高价下方 3.0 × ATR(14) |
| 时间止损 | K 线数量 | 20 根 K 线后仍持平则平仓 |
| 信号出场 | EMA 反转 | EMA 12 下穿 EMA 26 |
仓位规模:方法和参数。详情请参阅 position-sizing 技能。
risk_per_trade = 0.02 # 2% of portfolio
stop_distance_pct = 0.05 # 5% from entry (ATR-derived)
position_size = (portfolio * risk_per_trade) / stop_distance_pct
风险参数:投资组合层面的防护限制。请参阅 risk-management 技能。
Max concurrent positions: 5
Risk per trade: 2% of portfolio
Daily loss limit: 5% of portfolio
Max drawdown halt: 15% — stop trading, review strategy
Correlated exposure limit: 10% (e.g., meme tokens combined)
过滤条件:即使信号触发,也会阻止入场的条件。
def filters_pass(token: dict, market: dict) -> bool:
"""All filters must pass before entry is allowed."""
volume_ok = token["volume_24h"] > 500_000 # Min $500K volume
liquidity_ok = token["liquidity"] > 100_000 # Min $100K liquidity
age_ok = token["age_days"] > 7 # Not brand new
holders_ok = token["holder_count"] > 500 # Sufficient distribution
regime_ok = market["regime"] != "crisis" # No crisis regime
return all([volume_ok, liquidity_ok, age_ok, holders_ok, regime_ok])
绩效标准:何时继续执行、复核或终止策略。
Continue: Sharpe > 1.0, PF > 1.5, Win Rate > 40%, MDD < 20%
Review: Any metric degrades 25% from baseline
Retire: Rolling 30-day Sharpe < 0, or 3 consecutive losing months
策略生命周期
1. 假设
识别市场低效,并解释其存在的原因,以及它可能持续存在的原因。
好的假设:“在 10 分钟内于联合曲线上达到 80+ SOL 的新 PumpFun 代币,有 65% 的概率会在 Raydium 上完成毕业,从而在毕业时产生可预测的价格飙升。”
不好的假设:“SOL 会上涨。”(不具体、不可测试,也未指出优势。)
2. 定义
使用 references/strategy_template.md 中的模板编写完整的策略文档。必须填写每个字段。如果某个字段无法填写,说明策略尚未准备就绪。
3. 回测
使用 vectorbt 或同等工具对历史数据进行测试。要求:
- 测试期内至少有 100 笔交易
- 使用滚动前向验证(70% 用于训练,30% 用于测试)
- 将滑点和费用纳入考量(请参阅
slippage-modeling技能) - 报告样本内和样本外的指标
4. 模拟交易
在模拟环境中运行策略至少 2 周(或 30 笔交易,以较长者为准)。
- 将模拟交易结果与回测预期进行比较
- 如果结果相差超过 25%,须在继续之前调查原因
5. 小规模实盘
以最小可行规模进行交易(足以覆盖费用,同时金额小到不会造成实质影响)。
- 至少进行 30 笔交易
- 将结果与模拟交易进行比较
6. 扩大规模
如果小规模实盘指标符合预期(与回测结果相差不超过 25%):
- 逐步增加仓位规模(每周增加 25%)
- 持续监控指标
7. 监控
持续跟踪绩效:
- 每日:盈亏、交易笔数、胜率
- 每周:夏普比率、盈利因子、回撤
- 每月:根据绩效标准全面复核策略
8. 退役
出现以下情况时停止使用该策略:
- 滚动 30 天夏普比率低于 0
- 连续三个月亏损
- 市场状态发生永久性变化(例如,监管变化)
- 同一优势已有更好的策略取而代之
策略评估标准
策略投入实盘交易前的最低门槛:
| 指标 | 趋势跟踪 | 均值回归 | 剥头皮 |
|---|---|---|---|
| 最少交易次数 | 100 | 100 | 500 |
| 夏普比率(样本外) | > 1.0 | > 1.0 | > 1.5 |
| 盈利因子 | > 1.5 | > 1.5 | > 1.3 |
| 最大回撤 | < 20% | < 15% | < 10% |
| 胜率 | > 35% | > 55% | > 55% |
| 平均盈利/平均亏损 | > 2.0 | > 1.0 | > 1.0 |
加密货币策略类型
每种策略类型的详细说明见 references/strategy_types.md。
动量 / 趋势跟踪
- 优势:由于行为偏差和信息不对称,价格趋势会持续
- 指标:EMA 交叉、SuperTrend、ADX、MACD
- 胜率:35-45%,依赖大额盈利
- 最佳市场状态:波动性适中的趋势市场
均值回归
- 优势:由于过度反应,价格会围绕均衡水平波动
- 指标:RSI、布林带、z-score、VWAP 偏差
- 胜率:55-65%,依赖较高胜率和较小收益
- 最佳市场状态:波动性低至中等的震荡市场
突破
- 优势:波动率收窄会带来方向性扩张
- 指标:布林带收缩、Donchian 通道、成交量突破
- 胜率:30-40%,依赖捕捉大幅行情
- 最佳市场状态:波动率从低位转向高位
跟单 / 钱包跟踪
- 优势:优秀的钱包拥有信息或分析优势
- 指标:钱包 PnL 历史、交易频率、代币选择
- 胜率:取决于所跟踪钱包的质量
- 最佳市场状态:任何状态(取决于所跟踪钱包的策略)
PumpFun 狙击
- 优势:代币创建和毕业期间的价格动态具有可预测性
- 策略:创建狙击、成交量确认、毕业操作
- 胜率:变化很大(根据方法不同,为 20-60%)
- 最佳市场状态:散户活跃度较高的时期
套利
- 优势:利用不同 DEX 之间或现货与永续合约之间的价格差异
- 指标:来自多个交易场所的价格数据、资金费率
- 胜率:正确执行时 > 80%
- 最佳市场状态:高波动、流动性分散的市场
做市
- 优势:在管理库存风险的同时赚取买卖价差
- 指标:订单簿深度、波动率、库存头寸
- 胜率:> 60%,依赖成交量和价差收益
- 最佳市场状态:成交量稳定的平稳市场
常见策略错误
- 没有书面规则:凭直觉交易,无法回测或复现
- 曲线拟合:不断优化参数,直到回测结果完美,但实盘表现不佳
- 缺少止损:“感觉合适时我就退出”会导致灾难性亏损
- 忽略市场状态:在震荡市场使用趋势策略(或反之)
- 幸存者偏差:只对仍然存在的代币进行回测
- 前视偏差:在回测信号中使用未来信息
- 忽略成本:未将滑点、手续费和市场冲击纳入考量
- 过度交易:为了“保持活跃”而根据边缘信号入场
- 频繁更换策略:在正常的连败后放弃策略
- 没有退役计划:因不舍而继续交易已经失效的策略
与其他技能的集成
| 技能 | 集成方式 |
|---|---|
vectorbt | 以编程方式回测策略定义 |
pandas-ta | 计算用于入场/出场信号的技术指标 |
regime-detection | 用于激活策略的市场状态筛选条件 |
exit-strategies | 详细的出场规则实现 |
position-sizing | 仓位大小计算方法 |
risk-management | 执行投资组合级别的风险参数 |
slippage-modeling | 估算真实的执行成本 |
feature-engineering | 根据策略信号计算 ML 特征 |
文件
参考资料
references/strategy_template.md— 完整的策略定义模板,可直接复制粘贴references/strategy_types.md— 各类策略的详细指南,包含参数和示例
脚本
scripts/define_strategy.py— 交互式策略定义工具,支持--demo模式scripts/strategy_scorecard.py— 策略评估评分卡,可提供 GO/REVIEW/NO-GO 建议