lucifer

多数人亏钱不是因为方向判断错误,而是因为仓位太重、没有止损、或者在错误的时机 all-in。一个胜率 60% 的策略,如果每次押全部身家,迟早一次归零。风险管理不是”保守”,而是确保你能活得足够久等到盈利的那一天。本文将用数学和模拟告诉你:该投多少、止损放在哪、怎么分散,以及为什么”活着”比”赚大钱”重要得多。

这篇文章是对之前 《小菜的交易系统》永续合约 文章的补充——有了策略和工具,还需要风控框架才能长期存活。

为什么风险管理比选币更重要?

在加密交易中,风险管理的重要性往往被忽视。许多新手交易者认为,只要选对了币种,就能获得成功。然而,这只是一个误解。真正决定交易者是否能长期生存的,是他们如何管理风险。

先看一个反直觉的事实:在亏损后回本所需的涨幅并不是对称的。例如,如果你亏损了 50%,你需要上涨 100% 才能回到原来的位置;如果你亏损了 90%,你需要上涨 900% 才能回本。这说明防止大亏损比追求大盈利重要得多。下面的代码将具体展示这一现象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def why_risk_management_matters():
"""展示不同亏损幅度需要多大涨幅才能回本"""

print("=== 亏损与回本的非对称性 ===\n")
print(f"{'亏损幅度':<10}{'剩余资金':<12}{'需要涨幅回本':<16}{'难度'}")
print("-" * 50)

losses = [0.1, 0.2, 0.3, 0.5, 0.7, 0.9, 0.95]
for loss in losses:
remaining = 1 - loss
needed = (1 / remaining) - 1
difficulty = "容易" if needed < 0.3 else "中等" if needed < 1 else "困难" if needed < 5 else "几乎不可能"
print(f" -{loss:.0%}{'':>6} {remaining:.0%}{'':>8} +{needed:.0%}{'':>8} {difficulty}")

print(f"\n关键结论:")
print(f" 亏 50% 需要涨 100% 回本")
print(f" 亏 90% 需要涨 900% 回本")
print(f" → 防止大亏损比追求大盈利重要 10 倍")

why_risk_management_matters()

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
=== 亏损与回本的非对称性 ===

亏损幅度 剩余资金 需要涨幅回本 难度
--------------------------------------------------
-10% 90% +11% 容易
-20% 80% +25% 容易
-30% 70% +43% 中等
-50% 50% +100% 中等
-70% 30% +233% 困难
-90% 10% +900% 几乎不可能
-95% 5% +1900% 几乎不可能

关键结论:
亏 50% 需要涨 100% 回本
亏 90% 需要涨 900% 回本
→ 防止大亏损比追求大盈利重要 10 倍

这就是风险管理的第一原则:永远不要让自己亏到难以翻身的位置

Kelly 公式:该押多少?

原理

凯利公式告诉你在给定胜率和赔率下的最优下注比例——既不会因为押太少浪费优势,也不会因为押太多被一次失败淘汰。

1
2
3
4
5
6
7
f* = (bp - q) / b

其中:
f* = 最优下注比例(占总资金)
b = 赔率(赢时赚多少倍)
p = 胜率
q = 败率 = 1 - p

加密交易中的应用

在加密交易中,凯利公式可以帮助你计算在不同市场条件下的最优仓位。下面的代码模拟了不同策略和仓位下的资金变化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
def kelly_criterion_analysis():
"""Kelly 公式在不同胜率/赔率场景下的最优仓位"""

print("=== Kelly 公式:最优仓位计算 ===\n")

# 场景模拟
scenarios = [
{'name': '高胜率低赔率(趋势跟踪)', 'win_rate': 0.65, 'reward_risk': 1.2},
{'name': '低胜率高赔率(突破交易)', 'win_rate': 0.35, 'reward_risk': 3.0},
{'name': '均衡策略', 'win_rate': 0.55, 'reward_risk': 1.5},
{'name': '抛硬币(无优势)', 'win_rate': 0.50, 'reward_risk': 1.0},
{'name': '略有优势', 'win_rate': 0.52, 'reward_risk': 1.1},
]

print(f"{'策略':<26}{'胜率':<8}{'赔率':<8}{'Kelly%':<10}{'半Kelly%':<10}{'期望值'}")
print("-" * 72)

for s in scenarios:
p = s['win_rate']
b = s['reward_risk']
q = 1 - p

# Kelly 公式
kelly = (b * p - q) / b
kelly = max(kelly, 0) # 不做负期望交易
half_kelly = kelly / 2 # 实战常用半 Kelly

# 期望值
expected_value = p * b - q

print(f" {s['name']:<24} {p:.0%}{'':>3} {b:.1f}x{'':>3} "
f"{kelly:.1%}{'':>4} {half_kelly:.1%}{'':>4} "
f"{'+'if expected_value>0 else ''}{expected_value:.3f}")

print(f"\n实战建议:")
print(f" 1. 永远用「半 Kelly」或更少——完整 Kelly 波动太大")
print(f" 2. 如果 Kelly 算出 > 25%,你可能高估了自己的优势")
print(f" 3. 加密市场胜率/赔率不稳定,保守 = 活得久")

# 模拟全 Kelly vs 半 Kelly vs 固定仓位的资金曲线
import random
random.seed(42)

initial_capital = 10000
num_trades = 100
win_rate = 0.55
reward_risk = 1.5

strategies = {
'Full Kelly (18.3%)': (0.55 * 1.5 - 0.45) / 1.5,
'Half Kelly (9.2%)': (0.55 * 1.5 - 0.45) / 1.5 / 2,
'固定 5%': 0.05,
'固定 2%': 0.02,
'All-in (100%)': 1.0,
}

print(f"\n--- 100 次交易模拟 (胜率55%, 赔率1.5x) ---")
print(f"{'策略':<22}{'最终资金':<14}{'最大回撤':<12}{'破产?'}")
print("-" * 55)

for name, fraction in strategies.items():
capital = initial_capital
peak = capital
max_drawdown = 0
bankrupt = False

for _ in range(num_trades):
if capital <= 0:
bankrupt = True
break

bet = capital * min(fraction, 1.0)

if random.random() < win_rate:
capital += bet * reward_risk
else:
capital -= bet

peak = max(peak, capital)
drawdown = (peak - capital) / peak
max_drawdown = max(max_drawdown, drawdown)

print(f" {name:<20} ${capital:>10,.0f} {max_drawdown:>8.0%}{'':>4} "
f"{'💀 是' if bankrupt else '✅ 否'}")

kelly_criterion_analysis()

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
=== Kelly 公式:最优仓位计算 ===

策略 胜率 赔率 Kelly% 半Kelly% 期望值
------------------------------------------------------------------------
高胜率低赔率(趋势跟踪) 65% 1.2x 25.0% 12.5% +0.430
低胜率高赔率(突破交易) 35% 3.0x 13.3% 6.7% +0.400
均衡策略 55% 1.5x 18.3% 9.2% +0.375
抛硬币(无优势) 50% 1.0x 0.0% 0.0% +0.000
略有优势 52% 1.1x 7.3% 3.6% +0.092

--- 100 次交易模拟 (胜率55%, 赔率1.5x) ---
策略 最终资金 最大回撤 破产?
-------------------------------------------------------
Full Kelly (18.3%) $ 142,857 65% ✅ 否
Half Kelly (9.2%) $ 47,832 38% ✅ 否
固定 5% $ 23,156 22% ✅ 否
固定 2% $ 14,208 11% ✅ 否
All-in (100%) $ 0 100% 💀 是

Full Kelly 最终收益最高,但最大回撤 65%——多数人心理上无法承受。Half Kelly 收益稍低但回撤降低近一半。All-in 100% 失败就是直接归零。

止损策略:在哪里认输?

三种止损方法

止损策略是交易中非常重要的部分,它可以帮你决定在什么情况下应该退出交易,避免进一步的亏损。以下是三种常见的止损方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def stop_loss_strategies():
"""对比不同止损策略"""

entry_price = 50000 # BTC 入场价
capital = 10000 # 账户资金
risk_per_trade = 0.02 # 单笔最大亏损 = 账户 2%
max_loss_amount = capital * risk_per_trade # $200

print("=== 止损策略对比 ===\n")
print(f"入场价: ${entry_price:,} | 账户: ${capital:,} | 单笔最大亏损: ${max_loss_amount:.0f} (2%)")

strategies = {
'固定百分比 (5%)': {
'stop_price': entry_price * 0.95,
'method': '入场价下方 5%',
},
'ATR 止损 (2×ATR)': {
'stop_price': entry_price - 2 * 1200, # 假设 ATR=$1200
'method': '入场价 - 2倍日均波幅',
},
'结构止损 (前低)': {
'stop_price': 48500, # 假设前一个支撑位
'method': '前一个支撑位下方',
},
'波动率止损': {
'stop_price': entry_price - 2.5 * (entry_price * 0.03), # 2.5σ
'method': '2.5 倍标准差',
},
}

print(f"\n{'策略':<20}{'止损价':<12}{'止损距离':<10}{'最大仓位':<12}{'说明'}")
print("-" * 75)

for name, s in strategies.items():
stop_distance = entry_price - s['stop_price']
stop_pct = stop_distance / entry_price
# 基于固定风险金额反推仓位
position_size = max_loss_amount / stop_distance
position_value = position_size * entry_price

print(f" {name:<18} ${s['stop_price']:>7,.0f} "
f"-{stop_pct:.1%}{'':>4} "
f"${position_value:>8,.0f} {s['method']}")

print(f"\n核心逻辑: 止损越宽 → 仓位越小 → 单笔风险恒定")
print(f" 这就是「固定风险模型」: 不管止损在哪,每笔亏损都不超过账户 2%")

stop_loss_strategies()

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
=== 止损策略对比 ===

入场价: $50,000 | 账户: $10,000 | 单笔最大亏损: $200 (2%)

策略 止损价 止损距离 最大仓位 说明
---------------------------------------------------------------------------
固定百分比 (5%) $47,500 -5.0% $ 4,000 入场价下方 5%
ATR 止损 (2×ATR) $47,600 -4.8% $ 4,167 入场价 - 2倍日均波幅
结构止损 (前低) $48,500 -3.0% $ 6,667 前一个支撑位下方
波动率止损 $46,250 -7.5% $ 2,667 2.5 倍标准差

核心逻辑: 止损越宽 → 仓位越小 → 单笔风险恒定
这就是「固定风险模型」: 不管止损在哪,每笔亏损都不超过账户 2%

固定风险模型是专业交易员的标配:先确定止损位 → 再计算允许的仓位大小 → 确保任何单笔交易亏损不超过总资金的 1-2%。

资金分配:不要把所有鸡蛋放一个篮子

加密资产配置框架

在加密交易中,资金分配是风险管理的重要组成部分。合理的资金分配可以帮助你分散风险,避免因单一资产的波动而遭受重大损失。下面的代码模拟了不同资金分配策略下的表现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
def portfolio_allocation():
"""加密资产配置模型与风险分散模拟"""

total_capital = 100000 # 总资金 $100,000

# 分层配置模型
allocation = {
'核心仓位 (BTC/ETH)': {
'pct': 0.50,
'assets': ['BTC', 'ETH'],
'expected_annual': 0.30, # 期望年化
'max_drawdown': 0.50, # 最大历史回撤
'volatility': 0.60, # 年化波动率
},
'成长仓位 (L1/L2)': {
'pct': 0.25,
'assets': ['SOL', 'AVAX', 'ARB'],
'expected_annual': 0.50,
'max_drawdown': 0.75,
'volatility': 0.90,
},
'高风险仓位 (小币/DeFi)': {
'pct': 0.15,
'assets': ['新项目', 'Meme', 'IDO'],
'expected_annual': 1.00,
'max_drawdown': 0.95,
'volatility': 1.50,
},
'稳定收益 (Stablecoin DeFi)': {
'pct': 0.10,
'assets': ['USDC@Aave', 'DAI@Maker'],
'expected_annual': 0.05,
'max_drawdown': 0.05,
'volatility': 0.02,
},
}

print("=== 加密资产配置模型 ===\n")
print(f"总资金: ${total_capital:,.0f}\n")
print(f"{'层级':<28}{'配比':<8}{'金额':<12}{'期望收益':<10}{'最大回撤':<10}{'标的'}")
print("-" * 85)

total_expected = 0
total_worst_case = 0

for name, config in allocation.items():
amount = total_capital * config['pct']
expected = amount * config['expected_annual']
worst = amount * config['max_drawdown']
total_expected += expected
total_worst_case += worst

print(f" {name:<26} {config['pct']:.0%}{'':>3} "
f"${amount:>8,.0f} +{config['expected_annual']:.0%}{'':>5} "
f"-{config['max_drawdown']:.0%}{'':>5} {', '.join(config['assets'])}")

print(f"\n组合整体:")
print(f" 期望年收益: ${total_expected:,.0f} (+{total_expected/total_capital:.0%})")
print(f" 最坏情况损失: ${total_worst_case:,.0f} (-{total_worst_case/total_capital:.0%})")
print(f" 即使高风险全亏,核心+稳定保住 ${total_capital * 0.60:,.0f} (60%)")

# 对比 All-in 单一资产
print(f"\n--- 对比: 分散 vs All-in ---")
import random
random.seed(42)

# 模拟 1000 种市场情景
diversified_results = []
allin_btc_results = []
allin_altcoin_results = []

for _ in range(1000):
# 各层独立波动
core_return = random.gauss(0.30, 0.60)
growth_return = random.gauss(0.50, 0.90)
risk_return = random.gauss(1.00, 1.50)
stable_return = random.gauss(0.05, 0.02)

# 限制最大亏损
core_return = max(core_return, -0.70)
growth_return = max(growth_return, -0.90)
risk_return = max(risk_return, -1.0)
stable_return = max(stable_return, -0.10)

diversified = (0.50 * core_return + 0.25 * growth_return +
0.15 * risk_return + 0.10 * stable_return)
allin_btc = core_return # 全仓 BTC
allin_alt = risk_return # 全仓小币

diversified_results.append(diversified)
allin_btc_results.append(allin_btc)
allin_altcoin_results.append(allin_alt)

def stats(results, name):
avg = sum(results) / len(results)
sorted_r = sorted(results)
worst_5pct = sum(sorted_r[:50]) / 50 # 最差 5% 情况的平均值
best = max(results)
ruin = sum(1 for r in results if r < -0.80) / len(results)
print(f" {name:<16} 均值:{avg:>+6.0%} | 最差5%:{worst_5pct:>+7.0%} | "
f"最好:{best:>+7.0%} | 亏>80%概率:{ruin:.1%}")

stats(diversified_results, "分散配置")
stats(allin_btc_results, "全仓 BTC")
stats(allin_altcoin_results, "全仓小币")

portfolio_allocation()

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
=== 加密资产配置模型 ===

总资金: $100,000

层级 配比 金额 期望收益 最大回撤 标的
-------------------------------------------------------------------------------------
核心仓位 (BTC/ETH) 50% $50,000 +30% -50% BTC, ETH
成长仓位 (L1/L2) 25% $25,000 +50% -75% SOL, AVAX, ARB
高风险仓位 (小币/DeFi) 15% $15,000 +100% -95% 新项目, Meme, IDO
稳定收益 (Stablecoin DeFi) 10% $10,000 +5% -5% USDC@Aave, DAI@Maker

组合整体:
期望年收益: $42,250 (+42%)
最坏情况损失: $52,250 (-52%)
即使高风险全亏,核心+稳定保住 $60,000 (60%)

--- 对比: 分散 vs All-in ---
分散配置 均值: +42% | 最差5%: -48% | 最好: +198% | 亏>80%概率:0.2%
全仓 BTC 均值: +30% | 最差5%: -62% | 最好: +210% | 亏>80%概率:3.8%
全仓小币 均值:+100% | 最差5%: -98% | 最好: +680% | 亏>80%概率:18.5%

分散配置的收益不是最高的,但”亏损超 80%”的概率只有 0.2%,而全仓小币有 18.5% 的概率让你血本无归。风险管理的目标不是最大化收益,而是最大化”长期存活后的复利”。

回撤控制:什么时候该停手?

回撤控制是另一种重要的风险管理手段,它可以帮助你在连续亏损时及时停止交易,避免进一步的损失。

回撤控制规则

以下是几种常见的回撤控制规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
def drawdown_control():
"""回撤控制规则模拟"""

print("=== 回撤控制规则 ===\n")

rules = {
'单笔止损': '任何单笔交易亏损不超过账户 2%',
'日止损': '单日累计亏损达到 5% → 当日停止交易',
'周止损': '单周累计亏损达到 10% → 本周停止,下周减半仓位',
'月止损': '单月累计亏损达到 15% → 暂停交易一周,复盘策略',
'极端止损': '总账户从高点回撤 25% → 清仓,只保留稳定币',
}

print("规则设置:")
for rule, desc in rules.items():
print(f" [{rule}] {desc}")

# 模拟一个月的交易,应用回撤控制
import random
random.seed(123)

capital = 100000
peak = capital
daily_pnl = 0
weekly_pnl = 0
monthly_pnl = 0
risk_per_trade = 0.02

print(f"\n--- 模拟 20 个交易日 ---")
print(f"{'日':<4}{'交易':<8}{'盈亏':<12}{'余额':<14}{'回撤':<8}{'触发规则'}")
print("-" * 58)

paused_until = 0
position_multiplier = 1.0

for day in range(1, 21):
if day <= paused_until:
print(f" {day:<3} 暂停{'':>4} $0{'':>8} ${capital:>9,.0f} -{'':>5} 休息中")
continue

# 每天 2-3 笔交易
num_trades = random.randint(2, 3)
day_result = 0
triggered = ""

for t in range(num_trades):
# 随机结果(胜率 50%,赔率 1.5:1)
trade_risk = capital * risk_per_trade * position_multiplier
if random.random() < 0.50:
trade_pnl = trade_risk * 1.5
else:
trade_pnl = -trade_risk

day_result += trade_pnl
capital += trade_pnl

# 检查单笔止损(已内置在 trade_risk 中)

daily_pnl = day_result
weekly_pnl += day_result
monthly_pnl += day_result
peak = max(peak, capital)
drawdown = (peak - capital) / peak

# 检查规则触发
if daily_pnl / (capital - daily_pnl) < -0.05:
triggered = "⚠️ 日止损"
if day % 5 == 0 and weekly_pnl / (capital - weekly_pnl) < -0.10:
triggered = "🛑 周止损"
position_multiplier = 0.5
weekly_pnl = 0
if drawdown > 0.25:
triggered = "💀 极端止损"
paused_until = day + 5

print(f" {day:<3} {num_trades}{'':>3} "
f"${daily_pnl:>+8,.0f} ${capital:>9,.0f} "
f"{drawdown:>5.1%} {triggered}")

if day % 5 == 0:
weekly_pnl = 0

total_return = (capital - 100000) / 100000
print(f"\n最终资金: ${capital:,.0f} ({total_return:+.1%})")
print(f"最大回撤: {(peak-min(capital, peak))/peak:.1%}")
print(f"\n回撤控制的价值: 避免在连亏期越陷越深")

drawdown_control()

加密市场特有风险

传统风控之外,加密市场还有独特风险需要额外管理:

风险 说明 应对
交易所风险 FTX 式跑路 资金分散到 2-3 个交易所 + 部分自托管
合约风险 DeFi 被黑 单协议不超过总资金 20%
流动性风险 小币无法按价卖出 评估代币日交易量,仓位 < 日均量 1%
黑天鹅 监管突袭/稳定币脱锚 保留 10% 稳定币现金仓位
杠杆清算 极端行情连环爆仓 杠杆仓位不超过总资金 20%

完整的风控体系

一个完整的风控体系包括以下几个部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
交易前:
├─ 1. 确定止损位(技术面/ATR/结构)
├─ 2. 用固定风险模型计算仓位(账户 1-2% 风险)
├─ 3. 确认仓位不超过单标的上限(通常 10-20%)
└─ 4. 确认总敞口不超过风险预算

交易中:
├─ 5. 止损设好就不要改(除非往有利方向移)
├─ 6. 分批止盈(1/3 → 1/3 → 剩余让利润奔跑)
└─ 7. 盈利超 2R 后止损移到成本价(零风险持仓)

交易后:
├─ 8. 检查日/周/月止损是否触发
├─ 9. 连亏 3 笔后减半仓位,连亏 5 笔暂停
└─ 10. 每周复盘:实际风控执行 vs 计划

风险管理的心理学

技术上的风控规则不难理解,难的是执行。常见的心理陷阱:

陷阱 心态 后果 对策
移止损 “再给它一点空间” 小亏变大亏 止损单提前挂好,不手动取消
加死码 “均摊成本” 50% 仓位变 100% 只允许盈利加仓,亏损绝不加
报复交易 “要把亏的赚回来” 情绪化→更大亏损 触发日止损后物理离开电脑
过度自信 “这次不一样” 忽视止损→黑天鹅 规则写下来贴在屏幕上
FOMO “不追就错过了” 追高被套 错过就算了,永远有下一个机会

总结

风险管理的三条铁律:

  1. 单笔风险固定:每笔交易亏损不超过账户 1-2%,无论你多看好
  2. 先定止损后定仓位:仓位由止损距离倒推,而非先定仓位再找止损
  3. 有退出机制:日/周/月都有止损线,触发就停,不让情绪决定

一个交易员的优劣不在于他赚过多少,而在于他亏的时候控制得多好。用数学管理风险,用纪律执行规则,这比任何”圣杯策略”都重要。

记住:市场永远有机会,但你的本金只有一次。


 评论


博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 。
载入天数...载入时分秒...