变更统计: - 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式交叉引用)
322 行
14 KiB
Markdown
322 行
14 KiB
Markdown
# 风险管理体系
|
||
|
||
> 风险管理是量化交易中最重要的环节之一。长期成功的交易者与失败者的核心区别,往往不在于策略的胜率,而在于风险管理的质量。本文档构建完整的量化交易风险管理体系。
|
||
|
||
---
|
||
|
||
## 一、风险管理框架
|
||
|
||
### 1.1 风险层次结构
|
||
|
||
```
|
||
账户级风险
|
||
└── 最大总亏损限制(如账户的 20%)
|
||
└── 单日最大亏损限制(如账户的 5%)
|
||
└── 单笔交易最大风险(如账户的 1-2%)
|
||
└── 止损位设置
|
||
```
|
||
|
||
### 1.2 tradehk 风险参数(参考)
|
||
|
||
```typescript
|
||
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{目标波动率贡献}{当前资产波动率}$$
|
||
|
||
```python
|
||
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 时间止损
|
||
|
||
如果持仓超过一定时间仍未达到目标,强制平仓:
|
||
|
||
```typescript
|
||
// 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 策略相关性管理
|
||
|
||
同时运行多个策略时,应确保策略之间的相关性较低:
|
||
|
||
```python
|
||
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$` <br> 空头: `$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%** 的[风险比例](../../wiki/名词解释/风险比例.md)。当策略发出买入信号时,入场价为 100,000 USDT,根据 ATR 计算出的止损价为 98,000 USDT。此时,系统自动计算仓位大小为 `(账户资金 * 2%) / (100,000 - 98,000)`。这种方法确保了无论止损距离宽窄,单笔交易的最大亏损都恒定在账户资金的 2%,有效避免了因某笔交易止损过宽而导致的巨大亏损。
|
||
|
||
**场景二:Kelly 公式的动态仓位调整**
|
||
|
||
一个高频套利策略,其历史回测数据显示[胜率](../../wiki/名词解释/胜率.md) (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` 接口定义 | 不适用 |
|
||
|
||
### 五、常见误区与正确理解
|
||
|
||
1. **误区:胜率越高越好**
|
||
* **正确理解**:高胜率并不直接等同于高盈利。一个胜率 90% 但盈亏比只有 0.1 的策略,其长期期望收益为负。必须将[胜率](../../wiki/名词解释/胜率.md)与[盈亏比](../../wiki/名词解释/盈亏比.md)结合评估,关注策略的数学期望值。 `期望收益 = 胜率 * 平均盈利 - (1 - 胜率) * 平均亏损`。
|
||
|
||
2. **误区:止损越紧越安全**
|
||
* **正确理解**:过于紧密的止损位会使策略在正常的市场波动中被频繁“洗出”,导致交易成本剧增且无法捕捉到主要趋势。合理的[止损](../../wiki/名词解释/止损.md)应基于市场波动性(如使用 ATR)来设定,为价格提供足够的“呼吸空间”。
|
||
|
||
3. **误区:Kelly 公式是仓位管理的圣杯**
|
||
* **正确理解**:Kelly 公式理论上最优,但其假设胜率和盈亏比是精确已知的固定值。在真实市场中,这些参数是变化的且存在估计误差。高估参数会导致过度激进的仓位,带来毁灭性风险。因此,实践中必须使用分数 Kelly(如半 Kelly 或 1/4 Kelly)以增加安全边际。
|
||
|
||
4. **误区:多策略等于风险分散**
|
||
* **正确理解**:只有当策略之间的[相关性](../../wiki/名词解释/相关性.md)较低时,组合才能实现有效的风险分散。同时运行 10 个高度相关的趋势跟踪策略,在市场风格切换时可能会同时失效,导致巨额回撤。必须主动管理和监控策略组合的相关性。
|
||
|
||
5. **误区:杠杆是洪水猛兽**
|
||
* **正确理解**:[杠杆](../../wiki/名词解释/杠杆.md)本身是中性工具,其风险取决于使用方式。在严格的仓位和止损管理下,适度的杠杆(如 1-3 倍)可以有效提高资金利用率。风险的核心来源并非杠杆本身,而是未使用杠杆时仓位与风险敞口的计算错误。
|