变更统计: - 70个文件变更 (39个新增 + 31个修改) - 新增 6554 行内容 优化内容: 1. 30个核心文档增加附录(数据说明/计算公式/参数表/使用场景/常见误区) - 第一批: 量化基础/技术指标/策略/信号/品种/数据流/回测/风控/链上/EWO - 第二批: AI/案例复盘/多Agent/Hyperliquid/KOL/期权/RWA/券商/BTC/主流币 - 第三批: ETH/SOL/BNB_DOGE/XAUT/代币化美股/信号优化/tradehk系统 2. 新增38个名词解释wiki条目(Delta对冲/Gamma/Theta/Vega/IV/VaR/CVaR等) 3. 更新全局术语表索引(79个术语/12大类/知识图谱/学习路径) 4. 新增内部链接体系(wiki式交叉引用)
14 KiB
风险管理体系
风险管理是量化交易中最重要的环节之一。长期成功的交易者与失败者的核心区别,往往不在于策略的胜率,而在于风险管理的质量。本文档构建完整的量化交易风险管理体系。
一、风险管理框架
1.1 风险层次结构
账户级风险
└── 最大总亏损限制(如账户的 20%)
└── 单日最大亏损限制(如账户的 5%)
└── 单笔交易最大风险(如账户的 1-2%)
└── 止损位设置
1.2 tradehk 风险参数(参考)
interface RiskSettings {
maxLossPercent: number; // 最大亏损 %(默认 5%)
maxProfitPercent: number; // 最大盈利 %
stopLossPercent: number; // 固定止损 %
takeProfitPercent: number; // 固定止盈 %
useIndicatorStopLoss: boolean; // 使用指标止损
useIndicatorTakeProfit: boolean; // 使用指标止盈
autoStopLossMinutes: number; // 下单后 N 分钟内自动挂止损(默认 10)
leverage: number; // 杠杆倍数(默认 1)
}
二、仓位管理
2.1 固定比例法(Fixed Fractional)
每笔交易风险固定为账户的固定比例(通常 1-2%):
仓位大小 = \frac{账户资金 \times 风险比例}{入场价 - 止损价}
示例:
- 账户资金:10,000 USDT
- 风险比例:2%(200 USDT)
- BTC 入场价:100,000 USDT
- 止损价:98,000 USDT(止损幅度 2%)
- 仓位大小:200 / (100,000 - 98,000) = 0.1 BTC
2.2 Kelly 公式
Kelly 公式计算理论最优仓位比例:
f^* = \frac{p \times b - q}{b}
其中:
- $f^*$:最优仓位比例
- $p$:胜率
- $q = 1 - p$:败率
- $b$:盈亏比(平均盈利 / 平均亏损)
示例:
- 胜率 p = 0.55,盈亏比 b = 1.5
- $f^* = (0.55 \times 1.5 - 0.45) / 1.5 = 0.25$(25%)
实践建议:使用半 Kelly(12.5%)或四分之一 Kelly(6.25%),因为 Kelly 公式假设参数精确已知,实际中存在估计误差。
2.3 波动率调整仓位
根据市场波动率动态调整仓位,高波动时减仓,低波动时加仓:
仓位大小 = \frac{目标波动率贡献}{当前资产波动率}
def volatility_adjusted_position(
capital: float,
target_vol: float, # 目标波动率贡献(如 2%)
current_atr: float, # 当前 ATR
price: float
) -> float:
"""
计算波动率调整后的仓位大小
"""
dollar_atr = current_atr / price # ATR 占价格的百分比
position_size = (capital * target_vol) / dollar_atr
return position_size
三、止损策略
3.1 固定止损
最简单的止损方式,入场后设置固定百分比的止损:
多头止损 = 入场价 × (1 - 止损百分比)
空头止损 = 入场价 × (1 + 止损百分比)
适用场景:简单策略,快速实现
缺点:不考虑市场波动性,可能过早被止损
3.2 ATR 动态止损
基于市场波动率设置止损,高波动时止损更宽,低波动时止损更紧:
多头止损 = 入场价 - N × ATR
空头止损 = 入场价 + N × ATR
推荐参数:N = 2-3(tradehk 使用 SuperTrend 的 3 × ATR)
3.3 SuperTrend 跟踪止损
使用 SuperTrend 指标作为动态止损线,随趋势移动止损位:
- 多头持仓:止损位 = SuperTrend 下轨(随价格上涨而上移)
- 空头持仓:止损位 = SuperTrend 上轨(随价格下跌而下移)
优势:自动跟踪趋势,既能保护利润,又不会过早出局
3.4 时间止损
如果持仓超过一定时间仍未达到目标,强制平仓:
// tradehk 实现:下单后 N 分钟内自动挂止损
autoStopLossMinutes: number; // 默认 10 分钟
四、止盈策略
4.1 固定止盈
设置固定盈利目标,达到后平仓:
多头止盈 = 入场价 × (1 + 止盈百分比)
建议盈亏比:至少 1.5:1,理想情况下 2:1 或 3:1
4.2 分批止盈
将目标仓位分批平仓,锁定部分利润同时保留上涨空间:
第一批(50%):目标价 = 入场价 × 1.02(+2%)
第二批(30%):目标价 = 入场价 × 1.05(+5%)
第三批(20%):跟踪止损,让利润奔跑
4.3 指标止盈
当反向信号出现时平仓,而非设置固定目标:
- RSI 进入超买区(> 70)→ 平多仓
- MACD 死叉 → 平多仓
- SuperTrend 反转 → 平多仓
五、杠杆管理
5.1 杠杆与风险的关系
| 杠杆 | 2% 价格波动的账户影响 | 清算距离(假设 10% 保证金) |
|---|---|---|
| 1x | 2% | 无清算 |
| 5x | 10% | 20% |
| 10x | 20% | 10% |
| 20x | 40% | 5% |
建议:对于量化策略,建议使用 1-3 倍杠杆,避免因短期波动被清算。
5.2 tradehk 杠杆设置
tradehk 默认杠杆为 1(无杠杆),可在风险设置中调整。建议:
- 趋势跟踪策略:1-2 倍杠杆
- 均值回归策略:1 倍杠杆(高频反转,不适合高杠杆)
- 套利策略:可适当使用 3-5 倍杠杆(风险较低)
六、多策略风险分散
6.1 策略相关性管理
同时运行多个策略时,应确保策略之间的相关性较低:
import pandas as pd
import numpy as np
def calculate_strategy_correlation(returns_dict: dict) -> pd.DataFrame:
"""
计算多个策略收益率之间的相关性
"""
returns_df = pd.DataFrame(returns_dict)
return returns_df.corr()
# 理想情况:策略相关性 < 0.3
# 如果两个策略相关性 > 0.7,考虑减少其中一个的仓位
6.2 品种分散
在不同品种上运行策略,降低单一资产风险:
- BTC 趋势策略 + ETH 趋势策略(相关性 ~0.7,部分分散)
- BTC 趋势策略 + XAUT 趋势策略(相关性 ~0.3,较好分散)
- 加密货币策略 + 代币化美股策略(相关性较低)
七、极端风险管理
7.1 黑天鹅事件应对
加密货币市场历史上的极端事件:
- 2022 年 5 月:Luna/UST 崩盘,BTC 单日跌幅 > 30%
- 2022 年 11 月:FTX 破产,BTC 单周跌幅 > 25%
- 2020 年 3 月:新冠疫情,BTC 单日跌幅 > 50%
应对措施:
- 设置账户级最大亏损限制(如 20%),触发后暂停所有策略
- 在极端波动时(ATR 急剧扩大)自动减仓
- 分散交易所风险,不将所有资金存放在单一交易所
7.2 交易所风险
- 不在单一交易所存放超过总资金的 30%
- 优先选择有保险基金的头部交易所(Binance、Coinbase)
- 定期将利润提现到冷钱包
参考资料
- tradehk 项目类型定义:
client/src/lib/types.ts(RiskSettings 接口) - Whaleportal. "Quantitative Crypto Trading: Risk Management". https://whaleportal.com/
- Investopedia. "Kelly Criterion". https://www.investopedia.com/terms/k/kellycriterion.asp
附录:数据说明与补充
本附录旨在对文档中涉及的核心概念、参数及数据格式提供更详尽的说明,以增强风险管理体系在实际应用中的可操作性与严谨性。
一、核心指标数据说明
为了确保量化风险管理模型的准确性,对关键指标的计算和数据属性进行标准化是至关重要的。下表详细说明了文档中核心风险管理指标的数据特征。
| 指标名称 | 计算公式 (LaTeX) | 数据范围 | 单位 | 精度要求 | 数据来源 | 内部链接 |
|---|---|---|---|---|---|---|
Kelly 公式最优仓位 (f^*) |
$f^* = \frac{p \cdot b - (1-p)}{b}$ |
p \in [0, 1], b > 0. f^* 理论上可为 (-\infty, 1] |
百分比 (%) | 4 位小数 | 策略历史回测数据 | [Kelly 公式](../../wiki/名词解释/Kelly公式.md) |
| 波动率调整仓位 | $S = \frac{C \cdot V_t}{P \cdot A_n}$ (S:仓位, C:资金, V_t:目标波动率, P:价格, A_n:ATR) |
V_t \in [0.01, 0.05], A_n > 0 |
基础资产单位 (如 BTC) | 8 位小数 | 实时行情数据 (价格, ATR) | [ATR](../../wiki/名词解释/ATR.md) |
| ATR 动态止损 | 多头: $P_e - N \cdot ATR$ 空头: $P_e + N \cdot ATR$ (P_e:入场价) |
N \in [1.5, 4.0], ATR > 0 |
计价货币 (如 USDT) | 2-4 位小数 | 实时或历史行情数据 | [止损](../../wiki/名词解释/止损.md) |
| 策略收益相关性 | $\rho_{X,Y} = \frac{\text{Cov}(R_X, R_Y)}{\sigma_{R_X} \sigma_{R_Y}}$ |
[-1, 1] |
无 | 4 位小数 | 策略每日收益率序列 | [相关性](../../wiki/名词解释/相关性.md) |
二、量化交易应用场景
理论知识需要结合实际场景才能发挥最大效用。以下为文档中核心风险管理技术在真实量化交易中的应用示例。
场景一:固定比例法的稳健应用
一个趋势跟踪策略在 BTC/USDT 交易对上运行,交易者希望严格控制单笔亏损。他设定了 2% 的风险比例。当策略发出买入信号时,入场价为 100,000 USDT,根据 ATR 计算出的止损价为 98,000 USDT。此时,系统自动计算仓位大小为 (账户资金 * 2%) / (100,000 - 98,000)。这种方法确保了无论止损距离宽窄,单笔交易的最大亏损都恒定在账户资金的 2%,有效避免了因某笔交易止损过宽而导致的巨大亏损。
场景二:Kelly 公式的动态仓位调整
一个高频套利策略,其历史回测数据显示胜率 (p) 为 65%,盈亏比 (b) 为 0.8。根据 Kelly 公式计算,最优仓位 $f^* = (0.65 \times 0.8 - 0.35) / 0.8 = 21.25%$。然而,考虑到市场环境变化可能导致参数漂移,团队决定采用更为保守的 半 Kelly 策略,将实际仓位限制在 10.6%,从而在追求长期复合增长率的同时,显著降低了策略回撤的风险。
场景三:ATR 动态止损应对市场波动
在市场经历剧烈波动时(例如,在重要经济数据发布后),一个突破策略捕捉到了做多信号。由于此时 14 周期的 ATR 值显著高于平时,系统自动将止损位设置得比平时更宽(例如,距离入场价 3 倍 ATR)。这成功避免了因短期市场“噪音”或“假突破”而被过早止损出局。相反,在市场进入低波动的盘整期时,ATR 值缩小,止损位也随之收紧,这使得策略能够更有效地保护已有利润。
三、tradehk 风险参数参考表
合理的参数配置是风险管理系统有效运作的前提。下表为 tradehk 项目中 RiskSettings 接口的关键参数提供了推荐值与配置说明。
| 参数 | 推荐值 | 取值范围 | 说明与应用场景 |
|---|---|---|---|
maxLossPercent |
5% | 1% - 10% | 账户级单日最大亏损。达到此阈值应暂停当日所有交易,是防止账户失控的最后一道防线。 |
stopLossPercent |
2% | 0.5% - 5% | 单笔交易固定止损。适用于不希望使用动态止损的简单策略,或作为动态止损的补充。 |
leverage |
1-3 | 1 - 20 | 杠杆倍数。趋势策略建议使用 1-2 倍,均值回归策略严格限制在 1 倍,以避免高频反转中的爆仓风险。 |
autoStopLossMinutes |
10 | 5 - 60 | 时间止损。主要用于防止策略逻辑失效或市场陷入无趋势状态,避免资金被无效占用。 |
ATR Multiplier (N) |
2.5 | 1.5 - 4.0 | ATR 动态止损乘数。SuperTrend 等指标的核心参数,数值越大,止损越宽,容忍的波动越大,但潜在亏损也越大。 |
四、数据格式规范
标准化的数据格式是确保系统中不同模块(数据采集、策略执行、风险监控)协同工作的基石。
| 数据类型 | JSON / 数组格式 | 字段说明 | 时间戳格式 |
|---|---|---|---|
| OHLCV K线 | [timestamp, open, high, low, close, volume] |
number[] 数组 |
Unix 毫秒 (13位整数) |
| 交易信号 | {"symbol": "BTC/USDT", "action": "buy", "price": 100000, "timestamp": 1678886400000} |
symbol: string, action: 'buy'/'sell', price: number |
Unix 毫秒 (13位整数) |
| 风险设置 | {"maxLossPercent": 5, "leverage": 1, ...} |
字段类型需严格遵守 RiskSettings 接口定义 |
不适用 |
五、常见误区与正确理解
-
误区:胜率越高越好
-
误区:止损越紧越安全
- 正确理解:过于紧密的止损位会使策略在正常的市场波动中被频繁“洗出”,导致交易成本剧增且无法捕捉到主要趋势。合理的止损应基于市场波动性(如使用 ATR)来设定,为价格提供足够的“呼吸空间”。
-
误区:Kelly 公式是仓位管理的圣杯
- 正确理解:Kelly 公式理论上最优,但其假设胜率和盈亏比是精确已知的固定值。在真实市场中,这些参数是变化的且存在估计误差。高估参数会导致过度激进的仓位,带来毁灭性风险。因此,实践中必须使用分数 Kelly(如半 Kelly 或 1/4 Kelly)以增加安全边际。
-
误区:多策略等于风险分散
- 正确理解:只有当策略之间的相关性较低时,组合才能实现有效的风险分散。同时运行 10 个高度相关的趋势跟踪策略,在市场风格切换时可能会同时失效,导致巨额回撤。必须主动管理和监控策略组合的相关性。
-
误区:杠杆是洪水猛兽
- 正确理解:杠杆本身是中性工具,其风险取决于使用方式。在严格的仓位和止损管理下,适度的杠杆(如 1-3 倍)可以有效提高资金利用率。风险的核心来源并非杠杆本身,而是未使用杠杆时仓位与风险敞口的计算错误。