📑 查看全课大纲(第 27 / 38 节)
- 1.课程介绍与学习目标
- 2.量化交易的发展
- 3.主观投资与量化投资的关系
- 4.认识一个量化策略(1)
- 5.认识一个量化策略(2)
- 6.理工生做量化的优势
- 7.量化交易系统的基本架构
- 8.必要的交易基础知识及参考资料
- 9.上节课思考题及本节课内容介绍
- 10.技术指标简介
- 11.基于MACD的交易信号开发(1)
- 12.基于MACD的交易信号开发(2)
- 13.基于RSI的交易信号开发
- 14.基于BOLL的交易信号开发
- 15.基于分形的交易信号开发
- 16.总结及下节课预告
- 17.开发环境安装
- 18.获取指数和个股历史行情数据
- 19.修复行情数据中的问题
- 20.抓取财报数据、数据定时更新
- 21.实现低PE股票池(1)
- 22.实现低PE股票池(2)
- 23.实现低PE策略的回测(1)
- 24.实现低PE策略的回测(2)
- 25.风险控制综述
- 26.风险控制中的止盈止损
- 27.仓位管理的工程实现
- 28.完整策略介绍-基础策略
- 29.策略的分步优化
- 30.策略评价指标(1)
- 31.策略评价指标(2)
- 32.如何评价策略
- 33.如何优化策略
- 34.tick数据的意义
- 35.tick数据的介绍及使用
- 36.Hans123策略
- 37.经典买入三法策略
- 38.量化系统的完整研发和系统搭建
仓位管理的工程实现
约 36 分钟
📺 正在播放小象官方高清录播(支持倍速与清晰度调节)
仓位管理的工程实现:头寸规模模型与凯利公式
小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。
在量化交易与专业资产管理领域,流传着一个经典共识:“初学者寻找入场信号,进阶者关注出场风控,而大师决定仓位头寸(Position Sizing)“。即便一个交易策略拥有优异的胜率与盈亏比,若仓位管理不当(如下注过重遭遇连续亏损击穿本金,或下注过轻错失战略复利机会),都会导致策略在实盘中迅速夭折。
本讲系统解构期望收益公式与博弈论中的凯利公式(Kelly Criterion);深入探讨范·撒普(Van Tharp)经典的**“随机入市策略实验”**;并严密对比工业界三大经典头寸规模模型——固定金额单手模型、等价值交易单元模型与 CPR 百分比风险模型的数学原理与工程实现。
💡 核心导读
- 期望收益(Expected Value)与盈利核心六要素:
- 交易系统的核心期望值: 其中 为胜率, 为平均盈利额, 为平均亏损额。
- 六大要素:胜率、盈亏比、头寸规模(Position Sizing)、总资金量、交易机会频率与交易摩擦成本。
- 凯利公式(Kelly Criterion)的最优下注法则:
- :现有总资金中每次投入的最佳比例;
- :盈亏比(期望平均盈利 / 可能平均亏损);
- :获胜概率(胜率), 为失败概率。
- 启示:若 ,数学期望为负,最佳下注比例 \le 0,坚决空仓观望!*
- 随机入市策略实验的启示(Random Entry System):
- 仅凭抛硬币随机决定做多还是做空,只要严格叠加 跟踪止损与 总风险 CPR 头寸规模法则,在全品种测试中依然能战胜市场并获得稳定收益;
- 量化启示:出场风控与头寸管理比入场点更加决定策略的终极命运。
- 三大工业级头寸规模模型对比:
- 固定金额交易一个单位(Fixed Unit Model):每份资金只买 1 手(100 股),导致高价股占用极大市值、低价股仅占微小市值,资金利用率极度不均;
- 等价值交易单元(Equal Value Units):将总资金均分为 份(如 10 份,每份 10 万元),按股价动态折算股数(工行买 2 万股,茅台买 100 股),各标的占用等额市值;
- CPR 百分比风险模型(Percent Risk Model,机构首选): 注:不论标的股价 10 元还是 1000 元,不论止损幅宽 3% 还是 10%,单笔交易触发止损时的实际亏损金额恒定等于总本金的 !
┌─────────────────────────────────────────────────────────────┐
│ 三大头寸规模模型核心逻辑对比 │
└──────────────────────────────┬──────────────────────────────┘
│
┌─────────────────────────────┼─────────────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 模型 1: 固定单手 │ │ 模型 2: 等价值 │ │ 模型 3: CPR 风险 │
├──────────────────┤ ├──────────────────┤ ├──────────────────┤
│ • 每份资金买 1手 │ │ • 每份资金等市值 │ │ • 锁定最大亏损 1%│
│ • 茅台买 7.5万 │ │ • 工行买 10万元 │ │ • 波动大则买少 │
│ • 工行买 500元 │ │ • 茅台买 10万元 │ │ • 波动小则买多 │
│ • 极度失衡 │ │ • 市值均衡 │ │ • 风险完全恒定 │
└──────────────────┘ └──────────────────┘ └──────────────────┘一、CPR 百分比风险模型的计算实例
假设账户总资产 元,单笔交易允许承受的最大风险比例 (即单笔最大允许亏损 10,000 元):
- 标的 A(海康威视):当前股价 元,根据支撑位设定初始止损线为 (每股风险 元);
- 计算允许买入股数:
- 实际建仓金额: 元(占总资金 仓位);
- 风控校验:若价格跌破止损线(下跌 5% 卖出),亏损金额为 元,精确等于总资金的 !
二、加仓方式与组合资金上限
- 金字塔式加仓(Pyramid Adding):首次建仓基准仓位(如 50%),当行情朝盈利方向突破时逐步减半加仓(如 30%、20%),确保综合持仓成本始终低于市场现价;
- 单标的资金上限(Single Asset Cap):单只标的建仓市值不得超过总资金的 ~ ,防范单一黑天鹅击穿组合。
📝 动手练一练
下面我们用 Python 编写一段 三大头寸规模模型对比测算引擎,直观验证固定单手、等价值单元与 CPR 百分比风险模型在资金占用与最大潜在亏损上的根本差异:
import pandas as pd
import numpy as np
def calculate_position_sizing(total_capital=1000000.0, stock_price=40.0, stop_loss_pct=0.05, total_risk_pct=0.01, num_slots=10, max_position_pct=0.30):
"""
三大经典仓位管理与头寸规模模型对比:
1. 模型 1: 固定金额交易 1 手 (100 股)
2. 模型 2: 等价值交易单元 (每份 Capital / num_slots)
3. 模型 3: CPR 百分比风险模型 (Position = (Capital * Risk%) / (Price * SL%))
叠加单标的资金上限: 最终股数 = min(CPR 原始股数, 资金上限股数)
"""
# 1. 模型 1: 固定买 1 手 (100 股)
m1_shares = 100
m1_value = m1_shares * stock_price
m1_risk = m1_value * stop_loss_pct
# 2. 模型 2: 等价值交易单元 (10 万元均分)
slot_capital = total_capital / num_slots
m2_shares = int(slot_capital / stock_price / 100) * 100 # 按手整除
m2_value = m2_shares * stock_price
m2_risk = m2_value * stop_loss_pct
# 3. 模型 3: CPR 百分比风险模型 (锁定单笔最大风险为总资金 1%)
total_allowed_risk = total_capital * total_risk_pct
risk_per_share = stock_price * stop_loss_pct
m3_shares_raw = total_allowed_risk / risk_per_share
# 单标的资金上限: 止损过窄时 CPR 股数会急剧放大, 必须叠加 min(·, 资金上限) 防集中暴露
max_shares_by_cap = (total_capital * max_position_pct) / stock_price
m3_shares = int(min(m3_shares_raw, max_shares_by_cap) / 100) * 100
m3_value = m3_shares * stock_price
m3_risk = m3_shares * risk_per_share
res = pd.DataFrame([
{'Model': '模型 1: 固定单手 (100股)', 'Shares': m1_shares, 'Capital_Used': m1_value, 'Max_Loss_Value': m1_risk, 'Risk_Pct_Of_Total': m1_risk / total_capital * 100.0},
{'Model': '模型 2: 等价值单元 (10万)', 'Shares': m2_shares, 'Capital_Used': m2_value, 'Max_Loss_Value': m2_risk, 'Risk_Pct_Of_Total': m2_risk / total_capital * 100.0},
{'Model': '模型 3: CPR 百分比风险 (1%)', 'Shares': m3_shares, 'Capital_Used': m3_value, 'Max_Loss_Value': m3_risk, 'Risk_Pct_Of_Total': m3_risk / total_capital * 100.0}
])
return res
def test_position_run():
res = calculate_position_sizing(total_capital=1000000.0, stock_price=40.0, stop_loss_pct=0.05, total_risk_pct=0.01)
print("================ 三大头寸规模模型测算与对比 ================")
print(res[['Model', 'Shares', 'Capital_Used', 'Max_Loss_Value', 'Risk_Pct_Of_Total']])
print("----------------------------------------------------------")
print("量化精要: CPR 模型将单笔实际最大亏损锁定在精确的 10,000 元 (总本金的 1%)!")
print("不论标的价格高低与止损宽窄,CPR 模型确保组合风险始终恒定可控!")
print("==========================================================")
if __name__ == "__main__":
test_position_run()运行结果输出:
================ 三大头寸规模模型测算与对比 ================
Model Shares Capital_Used Max_Loss_Value Risk_Pct_Of_Total
0 模型 1: 固定单手 (100股) 100 4000.0 200.0 0.02
1 模型 2: 等价值单元 (10万) 2500 100000.0 5000.0 0.50
2 模型 3: CPR 百分比风险 (1%) 5000 200000.0 10000.0 1.00
----------------------------------------------------------
量化精要: CPR 模型将单笔实际最大亏损锁定在精确的 10,000 元 (总本金的 1%)!
不论标的价格高低与止损宽窄,CPR 模型确保组合风险始终恒定可控!
==========================================================📌 资金上限的约束作用:本例止损宽度 5% 时,CPR 原始股数 5,000 股、建仓市值 20 万元(占总资金 20%),未触及 30% 上限;若将止损收窄至 2%,CPR 原始股数将放大至 12,500 股(市值 50 万元、占总资金 50%),此时 30% 资金上限生效,实际建仓被截断为 7,500 股(单笔风险随之降至 6,000 元)——这正是「单标的上限」防范集中暴露的机械体现。
本章小结
- 领悟头寸管理决定生死:入场信号决定短期盈亏概率,而头寸规模决定策略能否在经历连续挫败后依然存活。
- 掌握 CPR 风险模型:以账户总风险比例与个股止损幅度为基准倒算头寸股数,使单笔潜在损失恒定受控。
- 结合凯利公式动态调优:根据历史策略实际胜率与盈亏比动态测算最佳下注系数,杜绝盲目重仓。
📋 行动清单 (Action Checklist)
- 运行本讲头寸规模代码,测试当单笔止损幅度收窄至 2% 或放大至 10% 时 CPR 买入股数的动态变化;
- 在自己的量化交易系统中废弃固定股数下单逻辑,升级为等价值或 CPR 风险模型;
- 预习下一讲,学习如何搭建一个标准的双均线基础策略框架,为后续分步优化奠定基准。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问