查看全课大纲(第 24 / 59 节)
  1. 1.量化投资必备基础知识
  2. 2.趋势型策略及模型原理
  3. 3.均值回复型策略及模型原理
  4. 4.配对交易策略及模型原理
  5. 5.量化策略研发流程与基本技能
  6. 6.常用的量化平台概述及如何选择
  7. 7.如何量化一个主观策略思路
  8. 8.常用技术指标及指标计算过程
  9. 9.如何编写指标代码
  10. 10.指标的物理意义
  11. 11.技术指标的应用技巧
  12. 12.更多的交易决策
  13. 13.编写程序去量化一个趋势型技术指标
  14. 14.编写趋势型技术指标的性能评价
  15. 15.策略对交易成本和持仓周期的影响
  16. 16.股票池策略的原理及基本框架
  17. 17.基于多因子分析的股票池设计与实现
  18. 18.股票池的性能评估
  19. 19.使用定制化财务因子构建股票池
  20. 20.趋势型策略原理及股票池机制的设计
  21. 21.趋势型择时信号的设计方法与编程实现
  22. 22.趋势型策略的回测与性能评估
  23. 23.优化趋势型策略的思路及方法
  24. 24.量化体系中的风险控制思想
  25. 25.风险的度量-波动率
  26. 26.常用的风险控制方法
  27. 27.实现止盈止损模块以提高策略性能
  28. 28.策略性能的评估与优化
  29. 29.探讨波动率与风险的关系
  30. 30.量化策略中的经典资金管理模型
  31. 31.用python编程实现资金管理模块
  32. 32.构建一个完善的量化交易策略
  33. 33.趋势型量化策略必备的期货知识
  34. 34.期货量化工具介绍
  35. 35.商品期货趋势型策略原理
  36. 36.用TB编写商品期货趋势型策略(上)
  37. 37.用TB编写商品期货趋势型策略(下)
  38. 38.分析优化商品期货趋势型策略的方法思路
  39. 39.期货交易策略的注意事项
  40. 40.均值回复型策略的原理
  41. 41.A股市场有没有稳定的均值回复效应?
  42. 42.编写一个均值回复型股票量化策略
  43. 43.编写多空组合策略进行策略改进
  44. 44.在策略中实现头寸管理进行策略优化
  45. 45.套利策略原理及常见套利类型
  46. 46.用MC开发一个跨品种套利交易策略(上)
  47. 47.用MC开发一个跨品种套利交易策略(下)
  48. 48.统计套利之股票配对交易策略
  49. 49.实盘中的细节问题:加减仓
  50. 50.关于高频交易
  51. 51.如何评价实盘量化策略的性能
  52. 52.量化系统的工作过程及研发流程
  53. 53.运气or实力
  54. 54.量化实盘交易需要满足什么条件
  55. 55.未来函数的坑
  56. 56.实盘数据接口异常的自动报警
  57. 57.交易系统的压力测试
  58. 58.自动运行的交易策略,什么时候需要人工干预
  59. 59.预案准备和实盘心理建设

量化体系中的风险控制思想

约 15 分钟

📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · 进阶量化交易实战:迭代式的量化策略研发 本讲义仅用于编程与量化方法教学,不构成任何投资建议。

在量化交易领域,风险控制与资金管理是交易系统能否长期存活并实现复利增长的第一基石。量化策略研发的本质并非单纯寻找开平仓信号,而是通过严密的数学风控模型约束下行尾部风险,确保系统在极端黑天鹅事件中依然具备生存能力。

💡 核心导读

  • 量化风控体系的三大支柱:
    • 事前风控(Pre-Trade Risk Control):头寸规模限制、杠杆上限、行业敞口偏离度约束;
    • 事中监控(In-Trade Dynamic Monitoring):实时跟踪波动率(ATR)、移动动态止损带(Chandelier Exit)、单日最大亏损熔断;
    • 事后评估(Post-Trade Stress Testing):极端情景压力测试、最大回撤持续期与流动性枯竭模拟。
┌─────────────────────────────────────────────────────────────┐
│                    量化全生命周期三层风控体系拓扑图         │
└──────────────────────────────┬──────────────────────────────┘
                               │
 ┌─────────────────────────────┼─────────────────────────────┐
 ▼                             ▼                             ▼
┌─────────────────────────┐   ┌─────────────────────────┐   ┌─────────────────────────┐
│ 事前风控 (Pre-Trade)    │   │ 事中监控 (In-Trade)     │   │ 事后评估 (Post-Trade)   │
├─────────────────────────┤   ├─────────────────────────┤   ├─────────────────────────┤
│ • 仓位与杠杆预算分配    │   │ • ATR 动态吊灯止损      │   │ • 历史极大压力测试      │
│ • 单品种敞口上限 (<10%) │   │ • 单日回撤硬性熔断      │   │ • VaR / CVaR 尾部校验   │
└─────────────────────────┘   └─────────────────────────┘   └─────────────────────────┘

一、量化风险的数学度量与概率约束模型

在金融工程中,风险被定义为资产收益率的不确定性(方差)以及发生极端左侧尾部亏损的概率。设资产收益率序列为 RtR_t,置信水平为 1−α1 - \alpha 的在险价值(Value at Risk, VaR)满足:

P(Rt≤−VaRα)=αP(R_t \le -\text{VaR}_\alpha) = \alpha

条件在险价值(CVaR / Expected Shortfall)则度量超过 VaR 阈值时的条件期望损失:

CVaRα=−E[Rt∣Rt≤−VaRα]\text{CVaR}_\alpha = -\mathbb{E}[R_t \mid R_t \le -\text{VaR}_\alpha]

通过对 CVaR 施加硬性限额,可以有效避免厚尾分布带来的穿仓风险。

import pandas as pd
import numpy as np

def calculate_var_cvar(returns: pd.Series, alpha: float = 0.05) -> dict:
    """
    历史模拟法计算 VaR 与 CVaR(合成教学样例,历史分布不代表未来)
    """
    clean_rets = returns.dropna()
    var_val = -np.percentile(clean_rets, alpha * 100)
    tail_losses = clean_rets[clean_rets <= -var_val]
    cvar_val = -tail_losses.mean() if len(tail_losses) > 0 else var_val
    
    return {
        'VaR_95': float(var_val),
        'CVaR_95': float(cvar_val)
    }

# 合成厚尾收益率数据(固定种子保证可复现)
rng = np.random.default_rng(seed=2024)
# 模拟 250 个交易日,使用 t 分布(df=4)模拟厚尾,并加入轻微负漂移
synthetic_returns = pd.Series(rng.standard_t(df=4, size=250) * 0.015 - 0.0005)

risk_metrics = calculate_var_cvar(synthetic_returns, alpha=0.05)
print("===== 历史模拟法计算 VaR 与 CVaR =====")
print(f"收益率序列长度: {len(synthetic_returns)}")
print(f"95% 置信度单日 VaR  : {risk_metrics['VaR_95']*100:.2f}%")
print(f"95% 条件在险价值 CVaR: {risk_metrics['CVaR_95']*100:.2f}%")
print("(注:基于合成历史数据,未来风险可能不同)")
===== 历史模拟法计算 VaR 与 CVaR =====
收益率序列长度: 250
95% 置信度单日 VaR  : 2.84%
95% 条件在险价值 CVaR: 4.02%
(注:基于合成历史数据,未来风险可能不同)

二、多层级实时风控熔断状态机

实盘交易中必须内置层级递进的熔断机制。当单日净值回撤触及 2%2\% 时,系统自动降低杠杆至 50%50\%;当回撤触及 4%4\% 时,触发当日硬性熔断(全部挂单撤销并平仓),进入冷冻保护期。

RiskLevel={0(Normal),Drawdown<2%1(Warning),2%≤Drawdown<4%2(Halt),Drawdown≥4%\text{RiskLevel} = \begin{cases} 0 (\text{Normal}), & \text{Drawdown} < 2\% \\ 1 (\text{Warning}), & 2\% \le \text{Drawdown} < 4\% \\ 2 (\text{Halt}), & \text{Drawdown} \ge 4\% \end{cases}

class RealTimeRiskEngine:
    """
    多层级实时风控状态机(教学样例,实际需考虑滑点与延迟)
    """
    def __init__(self, warn_dd: float = 0.02, halt_dd: float = 0.04):
        self.warn_dd = warn_dd
        self.halt_dd = halt_dd
        self.initial_nav = 1.0
        
    def check_nav(self, current_nav: float) -> str:
        dd = (self.initial_nav - current_nav) / self.initial_nav
        if dd >= self.halt_dd:
            return "HALT_TRADING"
        elif dd >= self.warn_dd:
            return "REDUCE_LEVERAGE"
        return "NORMAL"

# 实例化风控引擎并测试不同净值场景
engine = RealTimeRiskEngine(warn_dd=0.02, halt_dd=0.04)

test_navs = [1.01, 0.99, 0.975, 0.955]
print("===== 实时风控状态机测试 =====")
print(f"预警阈值: {engine.warn_dd*100}% | 熔断阈值: {engine.halt_dd*100}%")
for nav in test_navs:
    status = engine.check_nav(nav)
    drawdown = (engine.initial_nav - nav) / engine.initial_nav
    print(f"净值 {nav:.3f} (回撤 {drawdown*100:5.2f}%) -> 状态: {status}")
===== 实时风控状态机测试 =====
预警阈值: 2.0% | 熔断阈值: 4.0%
净值 1.010 (回撤 -1.00%) -> 状态: NORMAL
净值 0.990 (回撤  1.00%) -> 状态: NORMAL
净值 0.975 (回撤  2.50%) -> 状态: REDUCE_LEVERAGE
净值 0.955 (回撤  4.50%) -> 状态: HALT_TRADING

📝 动手练一练

编写 Python 仿真脚本,测算策略历史收益率序列的 VaR/CVaR 并模拟风控熔断机制执行:

import pandas as pd
import numpy as np

def calculate_var_cvar(returns: pd.Series, alpha: float = 0.05) -> dict:
    """
    历史模拟法计算 VaR 与 CVaR(合成教学样例,历史分布不代表未来)
    """
    clean_rets = returns.dropna()
    var_val = -np.percentile(clean_rets, alpha * 100)
    tail_losses = clean_rets[clean_rets <= -var_val]
    cvar_val = -tail_losses.mean() if len(tail_losses) > 0 else var_val
    
    return {
        'VaR_95': float(var_val),
        'CVaR_95': float(cvar_val)
    }

class RealTimeRiskEngine:
    """
    多层级实时风控状态机(教学样例,实际需考虑滑点与延迟)
    """
    def __init__(self, warn_dd: float = 0.02, halt_dd: float = 0.04):
        self.warn_dd = warn_dd
        self.halt_dd = halt_dd
        self.initial_nav = 1.0
        
    def check_nav(self, current_nav: float) -> str:
        dd = (self.initial_nav - current_nav) / self.initial_nav
        if dd >= self.halt_dd:
            return "HALT_TRADING"
        elif dd >= self.warn_dd:
            return "REDUCE_LEVERAGE"
        return "NORMAL"

# 合成厚尾收益率数据(固定种子保证可复现)
rng = np.random.default_rng(seed=42)
returns = pd.Series(rng.standard_t(df=4, size=250) * 0.015 - 0.0005)
risk_metrics = calculate_var_cvar(returns, alpha=0.05)

risk_engine = RealTimeRiskEngine(warn_dd=0.02, halt_dd=0.04)
status_normal = risk_engine.check_nav(0.99)
status_warn = risk_engine.check_nav(0.975)
status_halt = risk_engine.check_nav(0.955)

print("================ 量化风控思想与度量验证 ================")
print(f"95% 置信度单日 VaR  : {risk_metrics['VaR_95']*100:.2f}%")
print(f"95% 条件在险价值 CVaR: {risk_metrics['CVaR_95']*100:.2f}%")
print(f"微跌净值状态 (0.99) : {status_normal}")
print(f"预警净值状态 (0.975): {status_warn}")
print(f"熔断净值状态 (0.955): {status_halt}")
assert status_halt == "HALT_TRADING", "风控熔断机制未触发!"
print("✅ 风险控制核心思想与状态机验证 PASS")
print("(注:合成数据验证,实盘需考虑更多市场微观结构风险)")
print("======================================================")

运行结果输出:

================ 量化风控思想与度量验证 ================
95% 置信度单日 VaR  : 3.79%
95% 条件在险价值 CVaR: 5.66%
微跌净值状态 (0.99) : NORMAL
预警净值状态 (0.975): REDUCE_LEVERAGE
熔断净值状态 (0.955): HALT_TRADING
✅ 风险控制核心思想与状态机验证 PASS
(注:合成数据验证,实盘需考虑更多市场微观结构风险)
======================================================
👉 点击查看解析

本练习围绕量化体系中的风险控制展开,重点演示如何通过仓位约束、止损阈值或波动率目标等手段限制组合回撤,体现“先控风险、再谈收益”的纪律化思想。

本章小结

  1. 风控是量化策略第一生命线:通过事前头寸分配、事中动态监控与事后极端压力测试构筑立体防御。
  2. 重视尾部风险 CVaR:针对金融收益的厚尾特征,以 CVaR 作为极端情景最大损失的量化衡量边界。
  3. 设置自动化熔断机制:通过不可人为随意篡改的状态机硬约束,杜绝主观抗单与情绪化交易。

📋 行动清单 (Action Checklist)

  • 运行风控度量代码,测试不同置信水平(99% vs 95%)下的 VaR 变化;
  • 编写结合 ATR 波动率的动态单日止损限额函数;
  • 预习下一节,深入掌握波动率的多种量化度量方法(历史波动率、EWMA 与 GARCH)。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第5章课件:量化体系中的风险控制
    PDF · 1.2MB
    下载
  • 第5章配套代码包(Python 重构版 · 已实测)
    ZIP · 8KB
    下载
  • 第5章原始代码包(历史资料)
    ZIP · 12KB
    下载