社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

量化基金凭什么一直赢?公开的数学 + Python,带你看懂华尔街的真正护城河

数据科学实战 • 6 天前 • 48 次点击  


 

 用 Python 揭秘均值回归策略:你的收益从何而来?



 

 

 

 

2026年重磅升级已全面落地!欢迎加入专注财经数据与量化投研的【数据科学实战】知识星球!您将获取持续更新的《财经数据宝典》与《量化投研宝典》,双典协同提供系统化指引;星球内含 500 篇以上独有高质量文章,深度覆盖策略开发、因子分析、风险管理等核心领域,内容基本每日更新;同步推出的「量化因子专题教程」系列(含完整可运行代码与实战案例),系统详解因子构建、回测与优化全流程,并实现日更迭代。我们持续扩充独家内容资源,全方位赋能您的投研效率与专业成长。无论您是量化新手还是资深研究者,这里都是助您少走弯路、事半功倍的理想伙伴,携手共探数据驱动的投资未来!

引言

很多人对量化基金有一种想象:他们一定掌握着某个不为人知的「神秘公式」,普通人根本接触不到。但事实可能恰恰相反——量化交易所依赖的数学,绝大部分都躺在公开的教科书和论文里,有的甚至已经公开了三百多年。

那为什么依然只有少数机构能持续赚钱?答案是:护城河不是公式本身,而是把这些公式「接线」成一个完整系统的能力,以及严格执行系统的纪律。

这篇文章会带你梳理量化金融背后的「数学栈」(The Quant Stack),并用 Python 写几个小案例,让学习 Python 的你直观感受这些百年老公式的威力。

免责声明:本文仅用于学习交流,不构成任何投资建议。

一、真正的护城河:是「栈」,不是「公式」

单个公式几乎不可能独立赚钱:

  • • 没有真实优势(edge)的凯利公式,只会让你破产得更快;
  • • 没有风控的信号,等于一个随时会爆掉的账户;
  • • 没有相关性逻辑的组合,只是「穿了西装的一堆赌注」。

长期存活的基金做的事情并不炫酷,却非常难:把各个模块接在一起,让每一层弥补上一层的弱点。

这个数学栈大致是:

概率 → 仓位管理 → 组合构建 → 信号提取 → 博弈论 → 优化 → 模拟 → 机器学习

下面按阶段拆解,并配上 Python 案例。

二、地基:把「不确定」变成「数字」

1. 大数定律(伯努利,1713)

核心思想:一个赌注重复的次数足够多,结果就会越来越不随机。

51% 的胜率在 10 笔交易里几乎看不出任何优势——运气完全可以掩盖实力;但在 10000 笔交易之后,这个微小的优势会变成压路机。这也是量化策略偏爱「上千笔小额下注」而不是「几笔豪赌」的原因。

用 Python 模拟一下:

import random

def
 simulate(win_rate, n_trades, n_rounds=1000):
    """模拟 n_rounds 轮交易,每轮 n_trades 笔,统计整体亏钱的轮数占比"""

    lose_count = 0
    for
 _ in range(n_rounds):
        # 每笔交易:赢记 +1,输记 -1

        pnl = sum(1 if random.random() < win_rate else -1
                  for
 _ in range(n_trades))
        if
 pnl < 0:
            lose_count += 1
    return
 lose_count / n_rounds

# 胜率 51%,分别模拟 10 笔和 10000 笔

print
("10 笔交易后仍亏损的概率:", simulate(0.51, 10))
print
("10000 笔交易后仍亏损的概率:", simulate(0.51, 10000))

运行后你会发现:10 笔交易时,亏钱的概率接近一半;而 10000 笔交易后,亏钱的概率会降到非常低。优势不变,改变的只是重复次数。

2. 贝叶斯定理(贝叶斯,1763)

贝叶斯定理是一套「在不发疯的前提下改变主意」的规则:先有一个信念(先验概率),新证据到来,然后更新(后验概率)。量化模型不需要假装自己知道未来,它只需要持有一个概率,并在每次新数据到来时(价格变动、财报发布、成交量异动)更新它。

def bayes_update(prior, p_evidence_given_true, p_evidence_given_false):
    """贝叶斯更新:根据新证据更新信念

    prior: 先验概率,比如「策略有效」的初始信念
    p_evidence_given_true: 假设为真时,观察到该证据的概率
    p_evidence_given_false: 假设为假时,观察到该证据的概率
    """

    # 全概率公式计算证据出现的总概率

    p_evidence = (prior * p_evidence_given_true
                  + (1 - prior) * p_evidence_given_false)
    # 贝叶斯公式计算后验概率

    return
 prior * p_evidence_given_true / p_evidence

# 初始认为策略有效的概率是 50%

belief = 0.5
# 连续观察到 5 次「盈利」信号,每次都做一次贝叶斯更新

for
 day in range(1, 6):
    belief = bayes_update(belief, 0.6, 0.4)
    print
(f"第 {day} 次更新后,策略有效的信念:{belief:.4f}")

易错点提示:很多初学者会把「证据支持假设」直接当成「假设为真」,而忽略先验概率——这正是贝叶斯思维要纠正的直觉偏差。

3. 马尔可夫链(马尔可夫,1906)

很多系统的下一步主要取决于「当前状态」,而不是全部历史。市场经常在不同「状态」(regime)之间切换:平静、趋势、恐慌、均值回归。比「价格会不会涨」更好的问题是:我们现在处于哪种市场状态? 一个在平静市场里赚钱的策略,可能在恐慌行情中被摧毁。

4. 布朗运动(巴舍利耶,1900)

早在 1900 年,法国研究生巴舍利耶就把股价描述为「随机游走」——价格是漫游的,但漫游得有数学结构。这一思想后来成为现代金融的基石。

三、引擎:给「无法定价的东西」定价

  • 伊藤引理(Ito's Lemma):可以理解为「随机世界里的链式法则」。普通微积分问「x 变化时 f(x) 怎么变」,随机微积分问「x 随机漫游时 f(x) 会怎样」。它是现代衍生品定价的底层引擎。
  • Black-Scholes-Merton 框架(1973):把随机性、对冲和随机微积分组合成一套期权定价框架(Scholes 和 Merton 因此获得 1997 年诺贝尔经济学奖)。它的意义不止于定价,更在于给市场提供了一门衡量价值、波动率和风险的「共同语言」。

四、让聪明人翻车的部分:仓位与风控

信号负责找到交易,仓位决定你能否活下来。 这是有才华的交易者最容易悄悄毁掉自己的环节。

凯利公式(Kelly,1956)

凯利公式给出了以长期资本增长为目标时,应该下注的精确资金比例:下注太少,优势复利得太慢;下注太多,一次正常的连败就能把你清零——哪怕你的优势是真实的。

def kelly_fraction(win_rate, odds):
    """计算凯利最优下注比例

    win_rate: 胜率 p
    odds: 赔率 b(赢时每 1 元赌注的净收益)
    公式:f* = (p * (b + 1) - 1) / b
    """

    return
 (win_rate * (odds + 1) - 1) / odds

# 胜率 55%,赔率 1:1

f = kelly_fraction(0.55, 1.0)
print
(f"凯利建议的下注比例:{f:.2%}")  # 输出 10.00%

# 实践中通常采用「半凯利」以降低波动

print
(f"半凯利(更稳健):{f / 2:.2%}")

延伸说明:实盘中胜率和赔率都只是估计值,估计误差会让「满凯利」变得非常危险,所以机构普遍使用「分数凯利」(如半凯利)来留出安全边际。

现代投资组合理论与夏普比率

  • 马科维茨(1952):把「别把鸡蛋放在一个篮子里」变成了严格数学。组合风险不是各头寸风险的简单平均,而是取决于资产之间如何联动(相关性)。两个高风险资产,如果在关键时刻走势相反,反而能降低总风险。
  • 夏普比率(Sharpe):问了一个简单而残酷的问题——每承受一单位风险,你赚到了多少回报? 靠疯狂加杠杆赚 20% 和低波动、浅回撤地赚 20%,完全不是一回事。

五、信号:在噪声中找真相

  • 信息论(香农,1948):交易信号本质上是一条「从现在通往未来概率」的嘈杂通信信道,关键在于扣除成本、风险和竞争之后,它是否还携带真实信息。
  • 卡尔曼滤波(1960):NASA 用它融合不完美的传感器读数来估计飞船位置;量化交易台用它回答同一个问题——嘈杂价格背后的真实趋势是什么?
  • 波动率聚集与协整(Engle & Granger,1982):波动率不是恒定的,剧烈时期后面往往还是剧烈时期;协整则能区分两个资产是「碰巧同向」还是「深层绑定」,是配对交易的基石。

六、策略与现代层

  • 博弈论与纳什均衡:市场不是一台你独自求解的机器,而是一屋子不断适应你的人。一旦足够多的交易者发现同一个信号,信号本身就会改变。
  • 凸优化:把预期收益、风险上限、杠杆限制、换手成本、流动性约束,统一转化为一个最优配置,回答机构的终极问题——在所有已知信息和限制下,此刻能持有的最优组合是什么。
  • 蒙特卡洛模拟:概率算不出来?那就模拟一千万次数一数。它让量化机构可以在未来到来之前「预演未来」。
import random

def
 monte_carlo_final_wealth(n_paths=100000, n_steps=252,
                             mu=0.0004, sigma= 0.01):
    """蒙特卡洛模拟:估计一年后资产净值的分布

    n_paths: 模拟路径数
    n_steps: 交易日数量(约一年 252 天)
    mu: 日均收益率
    sigma: 日波动率
    """

    results = []
    for
 _ in range(n_paths):
        wealth = 1.0  # 初始净值为 1
        for
 _ in range(n_steps):
            # 每日收益近似服从正态分布

            wealth *= 1 + random.gauss(mu, sigma)
        results.append(wealth)
    results.sort()
    # 输出 5% 分位数(尾部风险)和中位数

    return
 results[int(0.05 * n_paths)], results[n_paths // 2]

p5, median = monte_carlo_final_wealth()
print
(f"一年后净值中位数:{median:.3f}")
print
(f"最差 5% 情形的净值:{p5:.3f}")
  • 神经网络:它不是预测明天价格的水晶球,真正擅长的是在数千个噪声变量之间捕捉高度非线性的复杂关系。但它并没有取代旧的数学栈,而是叠在栈的最上层——依然需要干净的数据、严格的验证和大量的风控。记住一句话:一个把过去学得太好的模型,可能会变得「漂亮地无用」(过拟合)。

七、公式都公开了,为什么优势还在?

  1. 1.数据与速度:公式免费,但干净的数据、低延迟基础设施、托管服务器都不免费。大量优势就藏在「执行间隙」里——在机会蒸发之前抢先行动。
  2. 2.架构:没有任何单一公式是护城河,护城河是接线方式。顶级基金让栈的每一层互相检查。
  3. 3.纯粹、无情绪的纪律:51% 的优势需要数千次重复才能显现。多数人在第三周就因为「感觉不好」而放弃,或者在一波连胜后加倍仓位,一个下午还回一整年的利润。公式是旧的,在巨大压力下盲目执行它们的纪律,才是稀缺品。

八、新手应该从哪里开始?

不要一上来就啃深度神经网络。先掌握三个概念:大数定律、贝叶斯定理、凯利公式。 它们会逼你回答三个真正重要的问题:

  1. 1. 我到底有没有优势?
  2. 2. 需要多少证据我才能信任它?
  3. 3. 出手时应该下注多少?

其余的一切,都只是工程问题。

总结

  • • 量化的数学几乎全部公开,有的已公开数百年,「秘密公式」是一种安慰性的迷思;
  • • 真正的护城河是数学栈的接线方式:概率建模 → 信号提取 → 仓位管理 → 组合构建 → 优化 → 模拟 → 机器学习,每一层弥补上一层的弱点;
  • • 信号找到交易,仓位决定生死,凯利公式和夏普比率值得每个交易者反复咀嚼;
  • • 机器学习没有取代经典数学,而是站在它之上;
  • • 最稀缺的从来不是公式,而是长期无情绪地执行系统的纪律

对学 Python 的同学来说,好消息是:以上每一个概念都可以用几十行代码亲手验证。动手模拟一次大数定律,胜过读十篇公众号文章。

参考文章

加入专注于财经数据与量化投研的知识星球【数据科学实战】,获取本文完整研究解析、代码实现细节。

财经数据与量化投研知识社区

2026年全面升级已落地!【数据科学实战】知识星球核心权益如下:

  1. 1. 双典系统赋能:获赠《财经数据宝典》与《量化投研宝典》完整文档,凝练多年实战经验,构建系统化知识框架;
  2. 2. 量化因子日更教程(2026重磅新增):每日更新「量化因子专题教程」,配套完整可运行代码与实战案例,深度拆解因子构建、回测与优化全流程;
  3. 3. 量化文章专题教程库:500+篇星球独有高质量教程式文章,系统覆盖策略开发、因子研究、风险管理等核心领域,内容基本每日更新,并配套精选学习资料与实战参考;
  4. 4. 量化投研实战课程:赠送《AKQuant-入门及实战》《PyBroker-入门及实战》视频课程,手把手教学,快速掌握量化策略开发技能;
  5. 5. 财经数据支持:定期更新国内外财经数据,为策略研发提供精准、可靠的数据基础;
  6. 6. 顶尖学者与行业专家分享:年度邀请学术界博士与业界资深专家开展前沿论文精讲与实战案例分享,不少于4场,直击研究前沿与产业实践;
    专家直连答疑:与核心开发者及领域专家实时互动,高效解决投研实战难题;
  7. 7. 专业社群与专属福利:加入高质量交流社群,获取课程折扣及更多独家资源。

星球已沉淀丰富内容生态——涵盖量化文章专题教程库、因子日更系列、高频数据集、PyBroker实战课程、专家深度分享与实时答疑服务。无论您是初探量化的学习者,还是深耕领域的从业者,这里都是助您少走弯路、高效成长的理想平台。诚邀加入,共探数据驱动的投资未来!

 


好文推荐

1. 用 Python 打造股票预测系统:Transformer 模型教程(一)

2. 用 Python 打造股票预测系统:Transformer 模型教程(二)

3. 用 Python 打造股票预测系统:Transformer 模型教程(三)

4. 用 Python 打造股票预测系统:Transformer 模型教程(完结)

5. 揭秘隐马尔可夫模型:因子投资的制胜武器

6. YOLO 也能预测股市涨跌?计算机视觉在股票市场预测中的应用

7. 金融 AI 助手:FinGPT 让你轻松掌握市场分析

8. 量化交易秘籍:为什么专业交易员都在用对数收益率?

9. Python 量化投资利器:Ridge、Lasso 和 Elastic Net 回归详解

10. 掌握金融波动率模型:完整 Python 实现指南

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/198497