金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (2024)

Table of Contents
模型规范错误 模型参数估计误差 由于模型未能适应结构性变化而导致的错误 概率分布 知识整合 参数推断 生成集成 不确定性意识 频率主义概率 认知概率 相对概率 伪随机不确定性 认知不确定性 本体不确定性 均值和方差 期望值:概率加权算术平均数 为什么波动率是一个荒谬的风险测量方法 偏度和峰度 高斯或正态分布 为什么波动率低估了金融风险 大数定理 中心极限定理 股票的单因子市场模型(MM) 使用 Statsmodels 的简单线性回归 Alpha 和 Beta 的置信区间 关于总体参数概率性声明的错误 关于特定置信区间概率性声明的错误 在进行抽样分布的概率性声明时出现的错误 用于收益预期的 MLE 模型 关于收益预期的概率模型 马尔可夫链 Metropolis 抽样 市场模型 模型假设 使用 MLE 学习参数 用置信区间量化参数不确定性 预测和模拟模型输出 先验概率分布 P(a, b, e) 似然函数 P(Y| a, b, e, X) 边缘似然函数 P(Y|X) 后验概率分布 P(a, b, e| X, Y) 定义集成性能指标 金融活动 目标函数 性能指标 分析数据和工程特征 数据探索 特征工程 数据分析 开发和反推先验集合 指定分布及其参数 采样分布并模拟数据 评估和修订未训练的模型 训练和回溯后验模型 训练和采样后验 逆推和模拟训练数据 评估和修订训练模型 测试和评估集成预测 交换数据并重新采样后验预测分布 预测和模拟测试数据 评估、修订或部署集成 集成主观性 估算损失 最小化损失 资本保值 递进性 生成价值风险 生成期望损失 生成尾部风险 Gambler’s Ruin 期望值的破产者 现代投资组合理论 马科维茨投资者的破产 凯利准则 凯利投资者的毁灭

原文:annas-archive.org/md5/a512fa05e8238761ba4fe8e26e1fac3d

译者:飞龙

协议:CC BY-NC-SA 4.0

生成 AI,特别是 Chat GPT-4,如今非常流行。概率机器学习(ML)是一种非常适合金融和投资领域的生成 AI 类型。与 ChatGPT 基于的深度神经网络不同,概率机器学习模型不是黑箱。这些模型还使您能够以相当透明的方式从效果推断原因。这在金融和医疗保健等受严格监管的行业中非常重要,因为您必须向许多利益相关者解释决策的基础。

概率机器学习还使您能够明确且系统地将个人、经验和机构知识编码到机器学习模型中,以维持您组织的竞争优势。真正区别于传统模型的是,概率机器学习能够根据观察到的数据和模型假设无缝地模拟新数据和反事实知识,而不受数据集大小或数据排序的限制。概率模型是生成模型,它们了解自己的局限性,并通过扩展推断和预测范围来诚实地表达自己的无知。您不会从 ChatGPT 那自信的幻想中得到这样的量化怀疑,这些幻想更常被称为虚构和谎言。

所有机器学习模型都建立在这样一个假设上:在训练或样本内数据中发现的模式将在测试或样本外数据中持续存在。然而,当非概率机器学习模型遇到它们从未经过训练或测试的数据中的模式时,它们会因其统计模型的固有基础缺陷而做出严重的推断和预测。此外,这些机器学习模型会毫不犹豫地、完全自信地执行这些操作,而不会警告决策者其不确定性。

在金融和投资决策中,非概率机器学习模型的日益采用可能会对个人和社会造成灾难性后果,包括破产和经济衰退。所有机器学习模型必须量化其对未见数据的推断和预测的不确定性,以支持在充满三维不确定性的复杂世界中进行明智决策。领先的公司清楚地理解标准 AI 技术的局限性,并正在开发其概率版本,以扩展其应用于更复杂的问题。谷歌最近推出了 TensorFlow Probability,以扩展其已建立的 TensorFlow 平台。同样,Facebook 和 Uber 推出了 Pyro 来扩展其 PyTorch 平台。目前最受欢迎的开源概率机器学习技术是 PyMC 和 Stan。PyMC 是用 Python 编写的,而 Stan 是用 C++编写的。本书使用了用户友好的 Python 库广泛的生态系统。

本书的主要受众是金融和投资领域的思考实践者。思考实践者不仅仅想要遵循手册或食谱的指示。他们想要理解为什么必须采用某种过程、模型或技术的基本概念。一般来说,他们有求知欲,喜欢为了学习而学习。同时,他们不会寻找繁琐的数学证明或枯燥的学术著作。我在每一章中提供了许多学术参考资料,供那些寻找本书中所呈现的概念和推理的数学和技术细节的读者参考。

一个思考实践者可以是个人投资者、分析师、开发者、经理、项目经理、数据科学家、研究员、投资组合经理或量化交易员。这些思考实践者了解他们需要不断学习新的概念和技术来推动他们的职业和业务发展。实际的深度理解给了他们信心,使他们能够将所学应用于为他们独特的挑战开发创造性解决方案。它还为他们探索和更轻松地学习相关技术和概念提供了一个框架。

在这本书中,我假设读者对金融、统计、机器学习和 Python 有基本的了解。我并不假设他们读过任何特定的书或掌握了任何特定的技能。我只是假设他们有学习的意愿,特别是当 ChatGPT、Bard 和 Bing AI 可以轻松解释本书中的任何代码或公式时。

普通概率 ML 书籍的数量很少,而且没有一本完全专注于金融和投资问题的书籍。由于这些领域的特异性复杂性,任何对 ML 的天真应用,特别是对概率 ML 的天真应用注定会失败。对这些领域基础的深入理解对于成功至关重要。这本书是一本入门书,旨在为思考实践者提供概率 ML 基础概念的扎实基础,以及如何使用简单的数学和 Python 代码将其应用于金融和投资问题。

我写这本书的另一个原因是有一个原因。直到今天,书籍仍然是进行严肃讨论的媒介。我想提醒读者现代金融理论和传统统计推断方法的严重缺陷仍然存在。令人震惊的是,尽管这些伪科学方法存在严重缺陷和可悲的表现,它们仍然被教授于学术界并在工业界实践。它们继续浪费数十亿研究经费产生垃圾研究,玷污了科学事业的声誉,并且在经济灾难和人类痛苦方面做出了重大贡献。

我们正处于人工智能技术发展的十字路口,大多数专家预测其使用将呈指数增长,从根本上改变我们生活、工作和彼此交往的方式。AI 系统将即将接管人类的危险是荒谬的科幻,因为即使是最先进的 AI 系统也缺乏婴儿的常识。真正的明显和当前的危险是愚人最终可能会根据传统金融和统计模型的虚假模型来开发和管理这些强大的智者。这很可能会导致比我们以往经历的灾难更快速、更大规模的灾难。

我的批评得到了简单的数学、常识、数据和学术作品的支持,这些作品在过去一个世纪已经发表。也许本书的一个附加价值在于从历史的尘封档案中找回许多被遗忘的学术出版物,并以清晰、明确的语言,使用任何高中毕业生都能理解的逻辑、简单数学或代码,使读者意识到它们的见解。显然,以传统方式表达这些批评完全没有效果。对于个人、社会和科学企业来说,赌注太高,我们不能在乎清楚陈述的数学和科学真理是否会冒犯某人或损害建立在编写或支持虚假理论基础上的声誉。

本书内容可以分为两个逻辑部分,不均匀地贯穿于每一章节中。一部分检验了现有经济学、统计学和机器学习模型在金融和投资领域的惊人无用性。另一部分探讨了为什么概率机器学习是这些问题领域中一个不那么错误、更有用的模型。本书的重点在于理解这一复杂的、跨学科的领域的基础知识。仅涵盖了关键概念和应用。有时候,确实少即是多。本书的组织如下,每一章都至少有一个主要概念在金融和投资中的应用,通过一个实际的 Python 代码练习进行说明:

  • 第一章,“概率机器学习的必要性” 探讨了理论金融的一些严重不足之处,以及所有金融模型都存在三重错误的原因,以及为什么我们需要一种系统化的方法来量化推断和预测的不确定性。本章解释了为什么概率机器学习为金融和投资提供了一个有用的框架。

  • 第二章,“分析和量化不确定性”使用蒙提霍尔问题(Monty Hall problem)回顾了概率论的基本规则,探讨了概率的含义,并探索了贯穿我们世界的不确定性三位一体。该章还探讨了归纳问题及其算法重述,即无免费午餐(NFL)定理,以及它们如何支撑金融、投资和概率机器学习。

  • 第三章,“用蒙特卡罗模拟量化输出不确定性”回顾了重要的统计概念,解释了为什么蒙特卡罗模拟(MCS)作为最重要的数值技术之一,通过生成近似的概率解决了分析难题。

  • 第四章,“传统统计方法的危险性”揭露了常见的研究和行业中使用的传统统计推断方法的欺诈行为,并解释了为什么它们是社会和经济科学中虚假研究发现的主要原因。

  • 第五章,“概率机器学习框架”探索了概率机器学习框架,并演示了如何在这种生成模型中逻辑和无缝地进行数据推断和新数据模拟。

  • 第六章,“传统 AI 系统的危险性”揭示了传统 AI 系统的危险性,尤其是它们缺乏基本常识,并且不了解自己的局限性,这对所有利益相关者和社会都构成了巨大的风险。马尔可夫链蒙特卡罗模拟被介绍为解决金融和投资中复杂问题的依赖抽样方法。

  • 第七章,“用生成集成进行概率机器学习”解释了概率机器学习本质上是一种集成机器学习形式。它向读者展示了如何使用 PyMC、Xarray 和 ArviZ Python 库,在金融和投资中开发生成线性集成的原型。

  • 第八章,“用生成集成做概率决策”展示了如何将生成集成应用于金融和投资中的风险管理和资本配置决策。探讨了遍历性的含义以及在金融决策中使用集成平均值的缺陷。还研究了包括凯利准则在内的资本配置算法的优缺点。

本书中使用以下排版约定:

斜体

标示新术语、网址、电子邮件地址、文件名和文件扩展名。

等宽字体

用于程序清单,以及在段落中引用程序元素,如变量或函数名称,数据库,数据类型,环境变量,语句和关键字。

Constant width bold

显示用户应该按照字面意义键入的命令或其他文本。

Constant width italic

显示应该由用户提供的值或由上下文确定的值替换的文本。

提示

此元素表示提示或建议。

注意

此元素表示一般说明。

警告

此元素指示警告或注意事项。

补充材料(代码示例)可在https://oreil.ly/supp-probabilistic-ML下载。

如果您有技术问题或在使用代码示例时遇到问题,请发送电子邮件至support@oreilly.com

本书旨在帮助您完成工作。一般情况下,如果本书提供示例代码,您可以在您的程序和文档中使用它。除非您复制了大量代码,否则无需征得我们的许可。例如,编写一个使用本书多个代码片段的程序不需要许可。销售或分发从 O’Reilly 书籍中提取的示例代码需要许可。引用本书并引用示例代码来回答问题不需要许可。将本书中大量示例代码合并到您产品的文档中需要许可。

我们欣赏但通常不要求署名。署名通常包括标题,作者,出版商和 ISBN。例如:“Probabilistic Machine Learning for Finance and Investing by Deepak K. Kanungo (O’Reilly). Copyright 2023 Hedged Capital L.L.C., 978-1-492-09767-9.”

如果您认为您使用的代码示例超出了合理使用范围或上述许可的范围,请随时通过permissions@oreilly.com与我们联系。

注意

40 多年来,O’Reilly Media已经为公司的成功提供技术和商业培训,知识和洞察。

我们独特的专家和创新者网络通过书籍,文章以及我们的在线学习平台分享他们的知识和专长。O’Reilly 的在线学习平台为您提供按需访问的现场培训课程,深入学习路径,交互式编码环境以及来自 O’Reilly 和其他 200 多家出版商的大量文本和视频。有关更多信息,请访问https://oreilly.com

请将有关本书的评论和问题发送至出版商:

  • O’Reilly Media, Inc.

  • 1005 Gravenstein Highway North

  • 加利福尼亚州塞巴斯托波尔,95472

  • 800-889-8969(在美国或加拿大)

  • 707-829-7019(国际或本地)

  • 707-829-0104(传真)

  • support@oreilly.com

  • https://www.oreilly.com/about/contact.html

我们为本书创建了一个网页,列出勘误、示例和任何额外信息。您可以访问https://oreil.ly/Probabilistic_ML

欲了解我们的书籍和课程的最新消息,请访问https://oreilly.com

在 LinkedIn 上找到我们:https://linkedin.com/company/oreilly-media

在 Twitter 上关注我们:https://twitter.com/oreillymedia

观看我们的 YouTube 频道:https://youtube.com/oreillymedia

我要感谢 Michelle Smith,Jeff Bleiel 和整个 O’Reilly Media 团队,使得这本书的出版成为可能。很高兴能与大家合作,尤其是 Jeff,他诚实而富有洞察力的反馈帮助我改进了本书的内容。

我还要感谢我的书籍专家审阅者 Abdullah Karasan,Juan Manuel Contreras 和 Isaac Rhea,他们提供的宝贵意见。

此外,我要感谢以下早期版本读者对本书提供的同样宝贵的反馈意见:Ian Angell,Bruno Rignel,Jonathan Hugenschmidt,Autumn Peters 和 Mike Shwe。

本质上,所有模型都是错误的,但有些是有用的。然而,必须始终牢记模型的近似性质。

——乔治·博克斯,杰出的统计学家

地图可以让你从一个地理位置到另一个地方。这是一个非常有用的用于导航物理世界的数学模型。如果将其自动化成一个使用人工智能(AI)技术的 GPS 系统,它将变得更加有用。然而,无论是数学模型还是 AI 驱动的 GPS 系统,都永远无法捕捉到它所代表的地形的人类体验和丰富性。这是因为所有模型都必须简化现实世界的复杂性,从而使我们能够专注于我们感兴趣的某些现象特征。

乔治·博克斯,一位杰出的统计学家,曾经著名地说过,“所有模型都是错误的,但有些是有用的。” 这个深刻的机智的说法成为了我们的座右铭。我们承认所有模型都是错误的,因为它们是对现实的不完全和不足的表达。我们的目标是建立基于模型和支持技术的金融系统,这些系统能够在面对不确定性、信息不完整和不精确测量时进行有用的推断和预测,用于决策和风险管理。

所有金融模型,无论是理论上推导的还是人类和机器经验性发现的,都不仅仅是错误的,而且还受到三种类型错误的影响。在本章中,我们通过消费信贷的例子来解释这三重错误,并使用 Python 代码进行探讨。这体现了我们的观点,即金融模型的不准确性是其特征,而非错误。毕竟,我们处理的是人,而非粒子或钟摆。

金融并非像物理学那样精确的自然科学,处理精确的估计和预测,如学术界所宣称的那样。它是一门不精确的社会研究,涉及一系列不断变化、通常突然的具有不同可能性的价值观。

我们通过解释为什么人工智能总体上以及概率机器学习(ML)特别是为金融和投资领域开发下一代系统提供了最有用和最有前途的理论框架和技术来结束本章。

亚当·斯密,被普遍认为是现代经济学奠基人,对牛顿的力学和万有引力定律赞叹不已。¹ 自那以后,经济学家们一直努力将他们的学科变成像物理学那样的数学科学。他们渴望建立能够准确解释和预测人类在微观和宏观层面经济活动的理论。这种愿望在 20 世纪初与欧文·费舍等经济学家的努力开始,并在 20 世纪末的经济物理学运动中达到了高潮。

尽管现代金融学的复杂数学理论层出不穷,但它的理论几乎是令人沮丧和可悲的,特别是与物理学相比。例如,物理学能够以令人瞠目结舌的精确度预测月球的运动和您计算机中的电子。这些预测可以由全球任何一个物理学家随时计算。相比之下,市场参与者——交易员、投资者、分析师、金融高管——难以解释日常市场波动的原因,或者预测世界各地任何时间资产的价格。

或许金融比物理学更为艰难。与粒子和钟摆不同,人类是复杂的、情感化的、创造性的生物,拥有自由意志和潜在的认知偏见。他们倾向于不一致地行事,并以不可预测的方式不断对他人的行为作出反应。此外,市场参与者通过击败或操纵其操作系统来获利。

在南海公司投资亏损惨重后,牛顿曾说:“我可以计算星星的运动,但无法预测人类的疯狂。”⁴ 值得注意的是,牛顿并非投资新手。他在英国造币厅任职近 31 年,帮助将英镑与金本位挂钩,这种标准一直保持了两个多世纪。

一些学者甚至认为,理论上的金融模型不仅是错误的,而且是危险的。对经济模型的物理科学表象的盲目信仰使其信奉者对其预测能力的准确性产生了虚假的确定感。⁵ 这种盲目信念已经导致了对他们和整个社会的许多灾难性后果。⁶ 论坛中讨论的 LTCM 的壮观灾难充分体现了学术傲慢和对分析金融模型的盲目信任所带来的危险后果。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (1)

图 1-1. 长期资本管理公司(LTCM)的史诗般灾难⁷

文艺复兴技术公司(Renaissance Technologies),这家有史以来最成功的对冲基金,采用与对冲基金如 LTCM 截然不同的策略,将其对金融理论的批判观点付诸实践。该公司不青睐金融或华尔街背景的人才,而更愿意招聘物理学家、数学家、统计学家和计算机科学家。它运用基于信息论、数据科学和机器学习等非金融理论的定量模型进行交易。

无论金融模型是基于学术理论还是经验数据挖掘策略,它们都面临模型错误的三重困扰。分析和预测中的错误可能源于以下任何建模问题:使用不合适的功能形式、输入不准确的参数或未能适应市场结构变化。⁸

模型规范错误

几乎所有的金融理论在其模型中使用了高斯或正态分布。例如,正态分布是马科维茨现代投资组合理论和布莱克-斯科尔斯-默顿期权定价理论的基础。⁹ 然而,学术研究中有大量文献记载,股票、债券、货币和大宗商品的收益分布具有明显的厚尾特性,显然不服从高斯分布。¹⁰ 换句话说,极端事件的发生频率远高于正态分布的预测。在第三章和第四章中,我们将实际上利用 Python 进行金融数据分析,以展示权益收益分布的非高斯结构。

如果资产价格回报符合正态分布,那么在宇宙的年龄内将不会发生以下任何金融灾难:黑色星期一、墨西哥比索危机、亚洲货币危机、LTCM 的破产或者闪崩。个别股票的“小型闪崩”甚至比这些宏观事件发生得更频繁。

然而,金融教科书、专业程序和专业人士继续在其资产估值和风险模型中使用正态分布,因为其简单性和分析可追溯性。然而,考虑到今天的先进算法和计算资源,这些理由已不再具备说服力。对于放弃正态分布的不愿意,这是“醉汉的寻找”明确的例子:一个源自笑话的原则,讲述了一个醉鬼在公园的黑暗中丢失了钥匙,但在路灯下拼命寻找,因为那里有光亮。

模型参数估计误差

此类错误可能是因为市场参与者可以获得不同级别和速度的信息传递。他们在处理能力和认知偏差方面也有不同水平的精通。此外,这些参数通常是通过过去的数据估计的,这些数据可能不准确地反映当前的市场情况。这些因素导致对模型参数的深刻认识上的不确定性。

让我们考虑一个利率的具体例子。对于任何金融资产的估值至关重要的是利率,它们用来贴现资产未来的不确定现金流,估计其在当前的价值。在消费者层面上,例如,信用卡的利率是根据一个称为基准利率的基准利率浮动的。这个利率通常与联邦基金利率同步变化,这是对美国和世界经济至关重要的利率。

让我们设想,您想要估计一年后您信用卡的利率。假设当前的基准利率是 2%,而您的信用卡公司向您收取 10%加上基准利率。鉴于当前经济的强势,您相信联邦储备系统更有可能上调利率而非不动。根据我们目前的信息,我们知道在接下来的 12 个月内,联邦储备系统将会开会八次,每次要么上调 0.25%,要么保持不变。

在以下 Python 代码示例中,我们使用二项分布来模拟您信用卡在 12 个月期末的利率。具体来说,我们将使用以下参数来估计联邦基金利率在每次会议上升 0.25%的概率范围:fed_meetings = 8(试验或会议次数);probability_raises = [0.6, 0.7, 0.8, 0.9]。

# Import binomial distribution from sciPy libraryfrom scipy.stats import binom# Import matplotlib library for drawing graphsimport matplotlib.pyplot as plt# Total number of meetings of the Federal Open Market Committee (FOMC) in any # yearfed_meetings = 8# Range of total interest rate increases at the end of the yeartotal_increases = list(range(0, fed_meetings + 1))# Probability that the FOMC will raise rates at any given meetingprobability_raises = [0.6, 0.7, 0.8, 0.9]fig, axs = plt.subplots(2, 2, figsize=(10, 8))for i, ax in enumerate(axs.flatten()): # Use the probability mass function to calculate probabilities of total # raises in eight meetings # Based on FOMC bias for raising rates at each meeting prob_dist = binom.pmf(k=total_increases, n=fed_meetings, p=probability_raises[i]) # How each 25 basis point increase in the federal funds rate affects your # credit card interest rate cc_rate = [j * 0.25 + 12 for j in total_increases] # Plot the results for different FOMC probability ax.hist(cc_rate, weights=prob_dist, bins=fed_meetings, alpha=0.5, label=probability_raises[i]) ax.legend() ax.set_ylabel('Probability of credit card rate') ax.set_xlabel('Predicted range of credit card rates after 12 months') ax.set_title(f'Probability of raising rates at each meeting: {probability_raises[i]}')# Adjust spacing between subplotsplt.tight_layout()# Show the plotplt.show()

在 Figure 1-2 中,注意到您信用卡利率在 12 个月内的概率分布如何严重依赖于您对联邦在八次会议中每次上升利率概率的估计。您可以看到,如果您估计每次会议上升利率增加 0.1,那么您信用卡 12 个月后的预期利率将增加约 0.2%。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (2)

图 1-2. 信用卡利率的概率分布取决于您的参数估计

即使所有市场参与者在其模型中使用二项分布,他们对未来的主要利率可能存在分歧,因为他们对联邦每次会议上升息率的估计不同。确实,这个参数很难估计。许多机构都有专门的分析师,包括前联邦储备系统的雇员,分析联邦的每篇文件、演讲和事件,试图估计这个参数。这是因为联邦基金利率直接影响所有金融资产的价格,间接影响实体经济中的就业和通胀率。

回想一下,在我们的模型中假设这个参数probability_raises对于接下来八次联邦公开市场委员会(FOMC)会议是恒定的。这有多现实?FOMC 成员不只是一组偏见硬币。他们可以根据经济随时间变化而调整其个人偏好。假设参数probabil⁠ity_​raises在接下来 12 个月内保持恒定不仅不现实,而且也是有风险的。

由于模型未能适应结构性变化而导致的错误

底层数据生成的随机过程可能会随时间变化——即过程不是平稳遍历的。这意味着从特定时刻获取的样本金融数据或者在足够长的时间段内取样的数据计算出的分布统计矩,如均值和方差,不能准确预测未来基础分布的统计矩。平稳性和遍历性的概念在金融中非常重要,将在本书的后续部分详细解释。

我们生活在一个动态的资本主义经济中,其特点是技术创新和不断变化的货币与财政政策。资产价值和风险的时变分布是规则,而不是例外。对于这种分布,基于历史数据的参数值必然会在预测中引入误差。

在我们之前的例子中,如果经济显示出放缓的迹象,美联储可能会决定在其第四次会议上采取更中立的立场,从而使你将probability_raises参数从 70%调整为 50%。这一参数的变化将进一步改变你对信用卡利率预测的影响。

有时,时变分布及其参数会连续或突然地改变,比如墨西哥比索危机。对于这两种情况下的变化,所使用的模型都需要适应不断变化的市场条件。在新的市场环境中,可能需要一种新的函数形式和不同的参数来解释和预测资产价值和风险。

假设在我们的例子中第五次会议后,美国经济受到外部冲击——比如希腊的新兴民粹主义政府决定违约。现在,美联储可能更有可能降息而不是加息。考虑到美联储展望的这一结构性变化,我们将不得不将模型中的二项概率分布改变为具有适当参数的三项概率分布。

金融模型的不准确性是特征,而不是错误。 将金融估计表示为科学精确值是不诚实且愚蠢地冒险。 所有模型都应量化金融推断和预测中固有的不确定性,以便在商业世界中进行明智的决策和风险管理。 金融数据存在噪声和测量误差。 模型的适当功能形式可能是未知的或是一个近似值。 模型参数和输出可能具有一系列值,并附带着合理性。 换句话说,我们需要数学上合理的概率模型,因为它们可以容纳不准确性,并以逻辑一致的方式量化不确定性。

当前有两种模型不确定性的量化方式:输出不确定性的前向传播和输入不确定性的反向传播。 图 1-3 显示了今天在金融中用于量化这两种不确定性的常见类型的概率模型。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (3)

图 1-3. 用概率模型量化输入和输出不确定性

在前向不确定性传播中,由模型的不准确参数和输入引起的不确定性在整个模型中传播,以生成模型输出的不确定性。 大多数金融分析师使用情景和敏感性分析来量化其模型预测中的不确定性。 但是,这些都是只考虑了几种可能性的基本工具。

在情景分析中,仅构建了三种情况以供考虑:最佳情况,基准情况和最差情况。 每种情况都为模型的所有输入和参数设置了一个值。 同样,在敏感性分析中,只更改了一些输入或参数,以评估其对模型总输出的影响。 例如,可以对公司价值随利率或未来收入的变化进行敏感性分析。 在第三章中,我们将学习如何使用 Python 执行蒙特卡洛模拟(MCS)并将其应用于常见金融问题。 MCS 是所有科学中最强大的概率数值工具之一,用于分析确定性和概率系统。 它是一组数值方法,使用来自指定输入参数分布的独立随机样本生成我们将来可能观察到的新数据。 这使我们能够计算模型的预期不确定性,特别是当其功能关系无法解析时。

在逆向不确定性传播中,模型输入参数的不确定性是从观测数据推断出来的。这是一个比正向传播更难的计算问题,因为参数必须通过依赖随机抽样从数据中学习出来。使用先进的统计推断技术或复杂的数值计算来计算模型输入参数的置信区间或可信区间。在第四章中,我们解释了使用 p 值和置信区间的深层次缺陷和局限性,这些统计技术今天在金融数据分析中常用。稍后在第六章中,我们解释了马尔可夫链蒙特卡罗,一种先进的依赖随机抽样方法,可以用来计算模型输入参数的可信区间,从而量化不确定性。

我们需要一个综合的概率框架,无缝结合正向和逆向不确定性传播。我们不希望今天实践中常见的零散方法。也就是说,我们希望我们的概率模型能够量化时间变化随机过程输出的不确定性,其输入参数是从样本数据中学习而来的。

我们的概率框架将需要根据新的数据集持续更新模型输出或其输入参数——或两者——基于实质性新数据集。由于基础环境可能变化过快,以致于无法收集到大量相关数据,因此这些模型将必须使用小数据集开发。最重要的是,我们的概率模型需要知道它们所不知道的。在从以前未遇到过的数据集推断时,它们需要以低置信水平或更宽的不确定性边界提供答案。

概率机器学习(ML)满足了构建最先进、下一代金融系统的所有前述要求。¹¹ 但是什么是概率 ML?在回答这个问题之前,让我们确保我们特别是在普遍情况下理解了 ML 和 AI 的含义。通常情况下,尽管它们并不是同义词,但我们会看到这些术语被滥用。ML 是 AI 的一个子领域。参见图 1-4。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (4)

图 1-4. ML 是 AI 的一个子领域

AI 是试图自动化人类的认知能力,如分析思维、决策制定和感知能力的一般领域。在 20 世纪,计算机科学家开发了 AI 的一个子领域,称为符号 AI(SAI),其中包括将人类知识的符号表示嵌入到计算机系统中的方法和工具,以定义良好的规则或算法的形式。

SAI 系统自动化由领域专家指定的模型,并被称为专家系统。例如,交易员、金融主管和系统开发人员共同明确制定所有规则和其金融和投资管理系统中自动化的模型参数。在我之前的公司,我曾经管理过几个这样的重要金融机构项目。

然而,SAI 在自动化复杂任务如图像识别和自然语言处理方面失败了——这些技术今天在企业金融和投资中广泛使用。这些类型的专家系统的规则太复杂,并且需要不断更新以适应不同情况。在 20 世纪后期,随着改进的算法、丰富的数据和廉价的计算资源的结合,机器学习的新 AI 子领域应运而生。

ML 将 SAI 范式颠倒过来。与专家指定模型来处理数据不同,没有或几乎没有领域专业知识的人提供通用算法,从数据样本中学习模型。更重要的是,机器学习程序会持续从新数据集中学习,并更新其模型,无需人工干预进行代码维护。查看下一个侧栏,了解如何从数据中学习参数的简单解释。

我们将在书的后半部分详细介绍建模、训练和测试概率机器学习系统。Tom Mitchell,一位机器学习先驱,对机器学习给出了一个有用的定义:“计算机程序在完成某一类任务 T 时,若对某一性能度量 P 的表现随着经验 E 的增长而改善,则称其从经验 E 中学习”。¹² 见图1-5。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (5)

图 1-5. 一个 ML 模型从样本数据中学习其参数,但其性能是在样本外数据上评估的

性能是根据预先指定的目标函数进行衡量的,例如最大化年度股票价格回报或降低参数估计的平均绝对误差。

机器学习系统通常根据它们需要多少来自人类教师或监督员的帮助而分为三种类型。

监督学习

机器学习算法从数据中学习功能关系,这些数据以输入和期望输出对的形式提供。这是研究和工业中最常见的机器学习形式。一些机器学习系统的例子包括线性回归、逻辑回归、随机森林、梯度提升机和深度学习。

无监督学习

机器学习算法只需提供输入数据,就能自行学习数据中的结构关系。K 均值聚类算法是投资分析师常用的数据探索算法。主成分分析是一种流行的降维算法。

强化学习

机器学习算法会根据来自环境的反馈不断更新策略或一组操作,以最大化累积奖励的现值。它与监督学习不同,因为反馈信号不是期望的输出或类别,而是奖励或惩罚。算法的示例包括 Q-learning、深度 Q-learning 和策略梯度方法。强化学习算法正在高级交易应用中得到应用。

在 21 世纪,金融数据科学家正在训练机器学习算法,以利用来自多个金融和非金融来源的数据发现复杂的功能关系。新发现的关系可能会增强或取代财务和投资执行者的见解。机器学习程序能够检测高维数据集中的模式,这对人类来说是一项难以实现的壮举。它们还能够减少维度,以便为人类提供可视化。

AI 在金融和投资过程的所有方面都有所应用——从创意生成到分析、执行、组合和风险管理。今天在金融和投资中领先的 AI 驱动系统利用专家系统和基于 ML 的系统的组合,以充分利用这两种方法和专业知识的优势。此外,AI 驱动的金融系统继续利用人类智慧(HI)进行研究、开发和维护。在市场条件突变且难以从突发变化中学习的情况下,人类也可能会介入。因此,您可以将现代金融系统视为 SAI + ML + HI 的复杂组合。

概率机器学习是下一代 AI 驱动的金融和投资系统的框架和技术。领先的技术公司清楚地了解传统 AI 技术的局限性,并正在开发其概率版本,以扩展其适用性到更复杂的问题上。

谷歌最近推出了 TensorFlow Probability,以扩展其成熟的 TensorFlow 平台。类似地,Facebook 和 Uber 推出了 Pyro 以扩展其 PyTorch 平台。目前,最流行的开源概率机器学习技术是 PyMC 和 Stan。PyMC 用 Python 编写,而 Stan 则用 C++ 编写。在 第七章 中,我们使用 PyMC 库,因为它是 Python 生态系统的一部分。

本书讨论的概率机器学习基于一个生成模型。尽管其他系统计算概率分数,但与今天使用的传统机器学习(如线性、非线性和深度学习系统)根本不同。图1-6 显示了这两种系统之间的主要区别。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (6)

图 1-6. 概率机器学习系统主要特征总结

概率分布

即使传统机器学习系统使用校准的概率,它们也只计算输入和输出的最可能估计值及其相关概率作为单点值。这在数据丰富且信噪比高的领域(如图像识别)中效果良好。正如前面的部分所讨论和证明的那样,点估计是对金融现实的不准确和误导性表达,其中不确定性非常高。此外,校准的概率可能不是有效的概率,因为 MLE 模型几乎从不计算数据的无条件概率分布。这可能会导致不确定性的糟糕量化,正如将在第六章中解释的那样。

概率机器学习系统在计算输入参数和模型输出时只处理概率分布。这是对金融模型变量不确定性的现实和诚实的表达。此外,概率分布让用户根据他们的业务目标灵活选择适当的点估计。

知识整合

传统机器学习系统没有一个理论上合理的框架来整合先验知识,无论是既定的科学知识、机构知识还是个人见解。在本书的后面部分,我们将看到,传统的统计学家使用特定的统计方法来秘密地引入先验知识,例如零假设、统计显著水平以及 L1 和 L2 正则化,同时大谈特谈“只让数据说话”。

在个人和专业生活中不整合先验知识是愚蠢的。这是学习的对立面,违背了科学方法的本质。然而,这是零假设显著性检验(NHST)的基础,NHST 自上世纪 60 年代以来一直是学术界、研究界和工业界的主流统计方法。NHST 禁止在基于虚假主张的实验中包含先验知识,该主张声称客观性要求我们只让数据说话。通过遵循这个虚假主张,NHST 最终陷入了检察官谬误,我们将在第四章中展示。

NHST(Null Hypothesis Significance Testing,零假设显著性检验)对客观性的定义要求我们在每次发现火时都必须触及,因为我们无法纳入我们在过去类似情况下的先验知识。这就是愚蠢的定义,而不是客观性。在第四章中,我们将讨论为什么以及如何有几个荟萃研究表明基于 NHST 的大多数发表的医学研究结果都是错误的。是的,你没看错,自 2005 年发表的一篇重要论文以来,这一点一直是一个公开的秘密。¹³

幸运的是,在本书中,我们不必在关于客观性的这种伪论或 NHST 产生的垃圾科学的蔓延上浪费太多墨水或像素。概率 ML 系统提供了一个数学严谨的框架,用于将先验知识纳入其中,并根据新信息的学习适当地更新。先验知识的表示是显式的,以便任何人都可以对其提出质疑或更改。这是学习的本质,也是科学方法的基础。

"没有免费午餐"(NFL)定理的一个重要含义是,为了优化算法在特定问题领域的性能,先验领域知识是必要的。如果我们不应用我们的先验领域知识,那么我们无偏的算法在所有问题领域上的平均表现将不会比随机猜测更好。在金融和投资领域,不存在免费的午餐,尤其是这一点。我们将在下一章详细讨论 NFL 定理。

众所周知,将累积的机构知识整合到公司的组织、流程和系统中,将在业务上带来可持续的竞争优势。此外,对市场的个人见解和经验可以导致“α”或基金经理在观点上与其他人群有主观上不同的看法,从而实现交易和投资中的超额回报。这就是沃伦·巴菲特,有史以来最伟大的投资者之一,获得他巨额财富的方式。市场通过失去利润,最终导致财务破产,来嘲笑教条主义和不切实际的客观性定义。

参数推断

几乎所有传统的 ML 系统都使用同样传统的统计方法,例如 p 值和置信区间,来估计模型参数的不确定性。正如将在第四章中解释的那样,这些都是深度有缺陷的,几乎是丑闻的统计方法,这些方法困扰着社会科学,包括金融和经济学。这些方法坚持对客观性的虔诚假装和对隐含和不现实的假设的遵循,通过晦涩的统计术语来掩盖,以便为一小部分情景产生分析可追溯的解决方案。

概率机器学习基于概率作为逻辑的简单直观定义,并且一般概率理论以及特别是反向概率规则的严格微积分。在下一章中,我们将展示反向概率规则(错误地和令人尴尬地被称为贝叶斯定理)如何作为乘法规则的一个平凡重述。这是一个逻辑重言式,极易证明。考虑到大多数数学定理的推导是多么地痛苦难以完成,它根本不值得被称为定理。

然而,由于反转公式中的归一化常数,在以前几乎不可能在简单问题中分析地反转概率。随着汉密尔顿蒙特卡洛和自动微分变分推断等最新数值算法的进展,概率机器学习系统现在能够反转概率,从样本内数据中计算模型参数估计,适用于几乎任何现实世界的问题。更重要的是,它们能够用数学上合理的可信区间量化参数不确定性,以任意置信水平。这使得反向不确定性传播成为可能。

生成集成

几乎所有传统的机器学习系统都是基于判别模型。这种类型的统计模型只从样本内数据中学习决策边界,而不了解数据的统计分布。因此,传统的判别式机器学习系统不能模拟新数据并量化总体输出的不确定性。

概率机器学习系统基于生成模型。这种类型的统计模型学习数据分布的统计结构,因此可以轻松地模拟新数据,包括生成可能缺失或损坏的数据。此外,参数的分布生成一系列模型。更重要的是,这些系统能够基于先前从样本内数据中学习到的数据变异性和输入参数不确定性,无缝地模拟二维输出不确定性。这无缝地实现了前向不确定性传播。

不确定性意识

在计算概率时,传统的机器学习系统使用最大似然估计(MLE)方法。这种技术优化假定概率分布的参数,使得样本内数据最有可能被观察到,考虑到模型参数的点估计。正如我们在本书后面将看到的那样,当数据稀疏时(这在金融和投资中经常发生,特别是当市场制度突然改变时),MLE 会导致错误的推断和预测。

更糟糕的是,这些基于 MLE 的机器学习系统会给这些错误估计附加可怕地高概率。我们正在自动化缺乏基本常识的强大系统的过度自信。这使得传统的机器学习系统在被那些不理解这些机器学习系统基本原理或者对其盲目信任的人员用于关键任务操作时具有潜在的风险和危险性。

概率机器学习系统不依赖于单一点估计,无论其可能性多高或最优,而是依赖于参数整个概率分布的每一个可能估计的加权平均。此外,当系统处理在训练中从未见过的数据类别,或者在已知数据范围之外进行外推时,这些估计的不确定性会适当增加。与基于 MLE 的系统不同,概率机器学习系统知道自己不知道的事情。这使得对不确定性的量化诚实,并防止对估计和预测的过度自信。

经济学不像物理学那样是一门精确的预测科学。远远不是这样。所以让我们不要假装是这样,并将经济学的学术理论和模型视为量子物理学模型,尽管其混淆的数学不可忽视。

所有金融模型,无论基于学术理论还是机器学习策略,都受制于建模误差的三重困扰。虽然这三个误差可以通过适当的工具(如概率机器学习系统)来减轻,但却无法消除。信息不对称和认知偏差将始终存在。资产价值和风险模型会随着资本主义、人类行为和技术创新的动态性而发生变化。

概率机器学习技术基于对概率的简单直观定义以及概率论的严格演算。它们能够将不断更新的先验知识与新的学习内容系统地整合。

这些系统将金融和投资系统中的不确定性和误差视为特征而非错误。它们将由不精确输入、参数和金融、投资系统输出产生的不确定性量化为概率分布,而非点估计。这样做可以得出对决策和风险管理有用的现实金融推断和预测。最重要的是,这些系统能够在它们的推断和预测在当前市场环境中不再有用时预警我们。

有几个原因使得概率机器学习成为下一代 AI 驱动金融和投资系统的框架和技术。其概率框架摆脱了有缺陷的统计方法学(NHST、p 值、置信区间)和传统的概率观念,将我们引向将概率视为逻辑的直观视角,以及一个能够全面和成功量化不确定性的数学严谨统计框架。因此,它使我们能够摆脱过去错误的理想化分析模型,走向更少错误、更现实的数值模型的未来。

概率编程中使用的算法是 AI 世界中最复杂的算法之一,在本书的下半部分我们将深入探讨它们。在接下来的三章中,我们将更深入地了解为何使用传统的 ML 系统部署资本非常危险,因为它们基于丑闻性缺陷的正统概率和统计方法。

Géron, Aurélien。“The Machine Learning Landscape.” 收录于Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow,1–34。第 3 版。O’Reilly Media, 2022。

Hayek, Friedrich von。“Bankquet Speech.” 在 1974 年 12 月 10 日的诺贝尔宴会上的演讲。斯德哥尔摩,瑞典。1974 年。Nobel Prize Outreach AB, 2023, https://www.nobelprize.org/prizes/economic-sciences/1974/hayek/speech/

Ioannidis, John P. A.。“Why Most Published Research Findings Are False.” PLOS Medicine,2 卷,8 期(2005 年):e124。https://doi.org/10.1371/journal.pmed.0020124

Offer, Avner, 和 Gabriel Söderberg. The Nobel Factor: The Prize in Economics, Social Democracy, and the Market Turn. Princeton, NJ: Princeton University Press, 2016.

Orrell, David, 和 Paul Wilmott。The Money Formula: Dodgy Finance, Pseudo Science, and How Mathematicians Took Over the Markets。West Sussex, UK: Wiley, 2017。

Sekerke, Matt。Bayesian Risk Management。Wiley, 2015。

Simons, Katerina。“Model Error.” New England Economic Review(1997 年 11 月):17–28。

Thompson, J. R., L.S. Baggett, W. C. Wojciechowski, 和 E. E. Williams。“Nobels For Nonsense.” Journal of Post Keynesian Economics,29 卷,1 期(2006 年秋):3–18。

Jaynes, E. T. Probability Theory: The Logic of Science. New York: Cambridge University Press, 2003.

Lopez de Prado, Marcos. Advances in Financial Machine Learning. Hoboken, New Jersey: Wiley, 2018.

Taleb, Nassim Nicholas。Fooled by Randomness: The Hidden Role of Chance in Life and in the Markets。New York: Random House Trade, 2005。

¹ David Orrell 和 Paul Wilmott,“Going Random”,收录于The Money Formula: Dodgy Finance, Pseudo Science, and How Mathematicians Took Over the Markets(West Sussex, UK: Wiley, 2017)。

² Avner Offer 和 G. Söderberg,《诺贝尔因素:经济学奖、社会民主主义和市场转向》(Princeton, NJ: Princeton University Press, 2016 年)。

³ 弗里德里希·冯·哈耶克,《宴会演讲》,2023,https://www.nobelprize.org/prizes/economic-sciences/1974/hayek/speech

⁴ David Orrell 和 Paul Wilmott,《早期模型》,收录于《金钱公式:欺诈金融、伪科学与数学家如何主宰市场》(West Sussex, UK: Wiley,2017 年)。

⁵ J. R. Thompson, L.S. Baggett, W. C. Wojciechowski 和 E. E. Williams,《无稽之谜的诺贝尔奖》,《后凯恩斯经济学杂志》29 卷 1 期(2006 年秋季):3–18。

⁶ Orrell 和 Wilmott,《金钱公式》。

⁷ 来自 Wikimedia Commons 的一幅图像的改编。

⁸ Orrell 和 Wilmott,《金钱公式》;M. Sekerke,《贝叶斯风险管理》(Wiley,2015 年);J. R. Thompson, L. S. Baggett, W. C. Wojciechowski 和 E. E. Williams,《无稽之谜的诺贝尔奖》,《后凯恩斯经济学杂志》29 卷 1 期(2006 年秋季):3–18;及 Katerina Simons,《模型误差》,《新英格兰经济评论》(1997 年 11 月):17–28。

⁹ Orrell 和 Wilmott,《金钱公式》;Sekerke,《贝叶斯风险管理》;及 Thompson、Baggett、Wojciechowski 和 Williams,《无稽之谜的诺贝尔奖》。

¹⁰ Orrell 和 Wilmott,《金钱公式》;Sekerke,《贝叶斯风险管理》;及 Thompson、Baggett、Wojciechowski 和 Williams,《无稽之谜的诺贝尔奖》。

¹¹ Sekerke,《贝叶斯风险管理》。

¹² Aurélien Géron,《机器学习风景》,收录于《Scikit-Learn、Keras 和 TensorFlow 实战》,第三版(O’Reilly Media,2022),1–34。

¹³ 本文作者是 John P. A. Ioannidis,《为什么大多数发表的研究结果是错误的》,《PLOS 医学》2 卷 8 期(2005 年):e124,https://doi.org/10.1371/journal.pmed.0020124。另见 Julia Belluz,《这就是为什么你不应该相信那些令人兴奋的新医学研究》,《Vox》,2017 年 2 月 27 日,https://www.vox.com/2015/3/23/8264355/research-study-hype

已知的是已知的。这些是我们知道自己知道的事情。已知未知。也就是说,有些我们知道自己不知道的事情。但也有未知的未知。有些事情我们不知道自己不知道。

—唐纳德·拉姆斯菲尔德,前美国国防部长

蒙提霍尔问题是一个著名的概率智力游戏,是探索我们在个人和职业生活中面临的不确定性复杂和深刻本质的一种娱乐方式。更为相关的是,蒙提霍尔问题的解决方案本质上是一种投注策略。在本章中,我们利用它来解释概率、统计、机器学习、博弈论、金融和投资中的许多关键概念和陷阱。

在本章中,我们将通过使用概率论的基本规则开发两种不同复杂度的分析解决蒙提霍尔问题的明显悖论。我们还推导出反向概率规则,这对于概率机器学习至关重要。稍后在本章中,我们将用蒙特卡洛模拟(MCS)确认这些分析解决方案,这是一种在金融和投资中广泛使用的最强大的数值技术之一。

Monty Hall 问题嵌入了三种类型的不确定性,我们进行了探讨。Aleatory 不确定性是观察数据中的随机性(已知已知)。Epistemic 不确定性源于对潜在现象的不了解(已知未知)。Ontological 不确定性则源自人类事务的本质及其固有的不可预测动态(未知未知)。

概率被用来系统地量化和分析不确定性。在这样做时,我们拒绝了风险和不确定性之间的虚无区别。概率确实是科学的逻辑。也许令你惊讶的是,我们可以同意概率论公理,但在概率的含义上却存在分歧。我们探讨了两种主要的思想流派,频率主义和认识论概率观。我们发现传统的概率观,即频率主义版本,充其量只是认识论概率的一个特例,并且更适合简单的偶然游戏。最糟糕的是,频率主义对概率的观点基于对经典物理学和常识的不可原谅的无知。

No Free Lunch(NFL)定理是一组不可能定理,它在概率框架内重新阐述了归纳问题的古老问题。我们探讨了这些认识论概念如何在概率机器学习、金融和投资中具有重要的实际意义。

著名的蒙特霍尔问题最初由著名统计学家史蒂夫·塞尔文构思并解决。现在我们所知的问题基于流行的 1970 年代游戏节目 Let’s Make a Deal 并以主持人蒙特·霍尔的名字命名。以下是这个脑筋急转弯的规则:

  1. 三扇门中有一扇门后面是汽车,另外两扇门后面是山羊。

  2. 目标是赢得汽车(而不是山羊!)。

  3. 只有蒙特知道哪扇门藏着汽车。

  4. 蒙特允许你选择三扇门中的任意一扇。

  5. 根据你的选择,他会打开另外两扇门中有一扇门后面是山羊的门。

所以让我们来玩这个游戏。无论你选择哪扇门,游戏的进行方式都是类似的。假设你选择了门 1。基于你的选择门 1,蒙特打开了门 3,给你展示了一只山羊。参见 Figure2-1。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (7)

图 2-1. 蒙特霍尔问题¹

现在蒙特向你提出一个交易:他让你选择是保持原来选择的门 1 还是换到门 2。你会选择换到门 2 还是保持原来的选择门 1?在继续阅读之前尝试解决这个问题——这将是值得的麻烦。

我必须承认,当我多年前第一次遇到这个问题时,我的直接反应是无论你是保持还是换门,现在汽车被放置在门 1 或门 2 后面的概率是相等的。所以我坚持了我最初的选择。结果证明我的选择是错误的。

最佳策略是换门,因为蒙特开启其中一扇门后,为你提供了宝贵的新信息,你可以利用这些信息增加赢得汽车的几率。在我分析解决方案并意识到我错了之后,我感到欣慰的是,这个问题曾经困扰过成千上万的博士统计学家。这个问题甚至使伟大的数学家保罗·埃尔德什感到困惑,他只有在看到解决方案的模拟之后才确信换门是一个获胜策略。本章对蒙特霍尔问题的深入分析是我的“复仇分析”。

如下面的侧边栏解释的那样,人们为什么不换门可能存在心理上的原因。

在我们模拟这个问题之前,让我们尝试通过应用概率公理来逻辑推理出解决方案。

下面是概率公理或基本规则的复习。令人惊讶的是,概率的计算可以完全从以下三个公理和几个定义中推导出来。

假设 S 是任意一种情况(也称为事件)。通常情况下,我们将 S 定义为汽车在门后的情况。因此,S[1] 是指汽车在门 1 后面的具体情况。类似地,我们类似地定义了 S[2] 和 S[3]。S 的补集是 S′(不是 S),表示门后是一只山羊而不是汽车的情况。

情景 S 和 S'被称为互斥,因为任何给定门后面要么是山羊要么是车,而不会同时是两者。由于这是游戏中唯一可能的情景,S 和 S'也被称为完全穷尽的情景或事件。所有可能情景的集合称为样本空间。让我们看看如何将概率规则应用到蒙特霍尔游戏中。

公理 1: P(S) ≥ 0

事件或情景的概率 P(S)总是被赋予非负实数。例如,当蒙特告诉我们门 3 后面没有车时,P(S[3]) = 0。事件概率为 0 意味着事件是不可能的或没有发生。

公理 2: P(S[1]) + P(S[2]) + P(S[3]) = 1

这个公理的含义是,我们确信样本空间中至少会发生其中一个情景。请注意,这个公理意味着事件概率为 1 意味着事件肯定会发生或已经发生。根据蒙特霍尔游戏的规则,我们知道只有一辆车,而它在三扇门中的一扇后面。这意味着情景 S[1]、S[2]和 S[3]是互斥且完全穷尽的。因此,P(S[1]) + P(S[2]) + P(S[3]) = 1。此外,请注意公理 1 和公理 2 确保概率始终在 0 到 1 之间,包括边界值。此外,P(S[1]) + P(not S[1]) = 1 暗示了 P(S[1]) = 1 – P(not S[1])。

公理 3: P(S[2] 或 S[3]) = P(S[2]) + P(S[3])

这个公理被称为求和规则,使我们能够计算两个互斥情景的概率。比如,我们想知道车可能在门 2 或门 3 后面的概率,即我们想知道 P(S[2] 或 S[3])。由于车不可能同时在门 2 和门 3 后面,S[2]和 S[3]是互斥的,即 P(S[2] 和 S[3]) = 0。因此,P(S[2] 或 S[3]) = P(S[2]) + P(S[3])。

概率质量函数(PMF)提供了离散变量将具有特定值的概率,例如在蒙特霍尔问题中计算的值。PMF 只提供离散且有限的值。累积分布函数(CDF)列举了变量小于或等于特定值的概率。CDF 的值始终是非递减的,并且在 0 到 1 之间包括边界值。

概率密度函数(PDF)提供了连续变量落入数值范围内的概率。PDF 可以取无限多个连续值。然而,PDF 对于任何具体点估计都分配了零概率。或许令人惊讶的是,PDF 在分布的不同点处可以大于 1。这是因为 PDF 是(CDF)的导数或斜率,其值没有超过 1 的约束。

我们将应用概率公理来解决蒙蒂霍尔问题。非常重要的一点是,在本书中,我们不区分确定性变量和随机变量。这是因为我们将概率解释为关于事件信息的动态、外在属性,这些信息可能是可重复的或随机的。我们唯一区分的是一个变量和一个常数的常识性区分。我们完全了解的事件被视为常数。所有其他事件都被视为变量。

例如,当蒙蒂在其中一扇门后放置汽车,另外两扇门后放置山羊后,不存在与哪个实体位于哪个门后相关的随机性。对于蒙蒂及其观众来说,所有这样的事件现在都是静态的和非随机的。然而,与他的观众不同,蒙蒂确切地知道汽车放在哪里。对于蒙蒂来说,汽车在特定门后的概率是一个常数,即他选择放置汽车的门为 1,选择放置山羊的另外两扇门的概率为 0。由于在游戏开始时我们缺乏关于汽车位置的任何信息,我们可以将其视为一个变量,其值可以根据新信息动态更新。对于我们来说,这些事件既不是确定性的也不是随机的。我们的概率只反映了我们缺乏信息。然而,我们可以应用概率理论的计算来估计和更新我们对汽车放置位置的估计。所以让我们试着弄清楚这一点,不再拖延。

由于每种情况是互斥的(每扇门后要么是山羊要么是汽车)且全面的(这些是所有可能的情况),它们的概率必须相加为 1,因为以下至少会发生其中之一的情况:

  • P(S[1]) + P(S[2]) + P(S[3]) = 1 (方程式 2.1)

在我们做出选择之前,最合理的假设是汽车同等可能地在三扇门后。游戏规则中没有任何东西让我们认为不是这样,而蒙蒂·霍尔也没有给我们任何相反的提示。因此,假设P(S[1])=P(S[2])=P(S[3])是合理的。使用方程式 2.1,我们得到:

  • 3 × P(S[1]) = 1 或 P(S[1]) = ⅓(方程式 2.2)

由于P(S[1]) = P(S[2]) = P(S[3]),方程式 2.2 暗示着合理地假设汽车在三扇门后的概率是 1/3。

根据总和规则,汽车在 2 号门或 3 号门后的概率是:

  • P(S[2] 或 S[3]) = P(S[2]) + P(S[3]) = ⅓ + ⅓ = ⅔ (方程式 2.3)

当你选择 1 号门,蒙蒂打开 3 号门,并展示给你一只山羊后,P(S[3]) = 0。将这个值代入方程 2.3 并解出 P(S[2]),我们得到:

  • P(S[2]) = P(S[2]或 S[3]) – P(S[3]) = ⅔ – 0 = ⅔ (方程式 2.4)

因此,将选择从门 1 换到门 2 会使您赢得汽车的几率翻倍:从⅓增加到⅔。在这场游戏中,换门是最优的投注策略。参见图2-2。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (8)

图2-2。蒙特霍尔问题的一个简单逻辑解³

需要注意的是,由于不确定性,如果您换门,仍然有⅓的机会会输。总的来说,结果的随机性使得确定您的投资或交易策略是赢家还是赌运成为困难和令人沮丧的事情。在蒙特霍尔问题中确定一个赢的策略要容易得多,因为可以通过分析或模拟多次进行游戏来确定。

让我们对蒙特霍尔问题开发一个更严格的分析解决方案。为此,我们需要理解条件概率及其反转方法。这相当于理解普通数字的乘法和除法规则。回想一下,当我们对概率进行条件设定时,我们通过将来自条件数据的新信息纳入来修正情景或事件的可能性。给定条件数据集 D 的情景 H 的条件概率表示为 P(H|D),它读作给定 D 时 H 的概率,并定义如下:

  • P(H|D) = P(H 和 D) / P(D),前提是 P(D) ≠ 0,因为除以 0 是未定义的

通过 P(D)的除法确保了在 D 条件下的所有情景的概率将加起来为 1。回想一下,如果两个事件是独立的,则它们的联合概率是它们各自概率的乘积。也就是说,如果 D 的知识不会提高我们对 H 的概率,反之亦然。

P 给定 H 的条件概率的定义还意味着 P(H 和 D) = P(H|D) × P(D)。这被称为乘法规则。现在我们可以从乘法规则推导出逆概率规则。我们知道从两个事件的联合概率的对称性:

  • P(H 和 D) = P(D 和 H)

  • P(H|D) × P(D) = P(D|H) × P(H)

  • P(H|D) = P(D|H) × P(H) / P(D)

亲爱的读者们,这就是著名且错误命名为“贝叶斯定理”的证明。如果所有数学证明都这么简单就好了!正如您所见,这个所谓的定理是乘法规则的一个微不足道的改写。它与将两个数相乘并根据它们的乘积解出一个数的规则一样(例如,H = H × D/D)。困难和富有洞察力的部分是解释和应用这个公式来反转概率并解决复杂的现实世界问题。自上世纪 50 年代以来,先前提到的公式也错误地被称为贝叶斯定理。请参阅以下侧栏。

在本书中,我们将通过恢复其原始名称,即逆概率规则,来纠正这种公然的不公正和明显的误称。在 20 世纪中叶,R. A. Fisher 将其蔑称为贝叶斯规则之前,这就是这条规则在两个多世纪中的称呼。我怀疑,通过将一个业余数学家的名字附加到一个无可争议的数学规则上,费舍尔能够在虔诚的借口下不受限制地犯下检察官谬误。费舍尔的“比毫无用处更糟糕”的统计推断方法将在第四章进一步讨论。此外,在本书中,我们恢复规则的原始名称,因为它具有更长、更真实的传统,而将逆概率规则称为拉普拉斯-贝努利-莫伊弗-贝叶斯-普赖斯规则太长了。

此外,我们将把贝叶斯统计称为认识论统计学,将贝叶斯推断称为概率推断。正如频率统计学解释概率为事件的相对极限频率一样,认识论统计学将概率解释为关于事件信息的属性。希望这将使我们远离错误地将这一重要的科学努力和知识体系归因于一个可能对此努力的贡献存在疑议的人。事实上,并没有证据表明贝叶斯今天被用作这个术语的贝叶斯。

一般来说,认识论统计学和特别是逆概率规则是概率机器学习的基础,在本书的第二部分我们将深入讨论它。现在,让我们将其应用于蒙提霍尔问题,并继续使用 S[1]、S[2]和 S[3]及其相关的概率定义。现在我们定义我们的数据集 D,其中包括两个观察结果:您选择门 1;根据您选择的门 1,蒙提打开门 3 让您看到一只山羊。我们要求解 P(S[2]|D),即给定数据集 D 时汽车在门 2 后面的概率。

根据逆概率规则,我们知道这等于 P(D|S[2]) × P(S[2])/P(D)。挑战性的计算是 P(D),即无条件或边际概率,即观察到数据集 D 的概率,无论汽车停在哪个门后面。全概率规则允许我们从条件概率计算边际概率。具体而言,该规则指出,D 的边际概率 P(D)是在不同场景下实现 D 的加权平均概率,其中 P(S)给出了 S 样本空间中每个场景的具体概率或权重:

  • P(D) = P(D|S[1]) × P(S[1]) + P(D|S[2]) × P(S[2]) + P(D|S[3]) × P(S[3])

在蒙提霍尔游戏开始时,我们估计了三种情况的概率,即 P(S[1]) = P(S[2]) = P(S[3]) = ⅓。这些将是每种可能情况的权重。让我们计算观察到我们的数据集 D 的条件概率。注意,P(D|S[1]) 意味着在车实际上在门 1 后面的情况下看到数据集 D 的概率,依此类推。

如果车在门 1 后面,你选了门 1,其他两扇门后面是山羊。所以蒙提可以打开门 2 或门 3 中的任一扇来给你看一只山羊。因此,蒙提打开门 3 给你看一只山羊的概率,假设你选择了门 1,是 ½,即 P(D|S[1]) = ½。

如果车在门 2 后面而你选择了门 1,蒙提只能打开门 3 来给你看一只山羊。所以 P(D|S[2]) = 1。

如果车在门 3 后面,蒙提打开门 3 的概率为零,因为他会破坏游戏,而你只是为了露个脸就得到了车。因此,P(D|S[3]) = 0。

我们将数字代入总概率法则中,以计算在游戏中观察到数据集 D 的边际或无条件概率:

  • P(D) = P(D|S[1]) × P(S[1]) + P(D|S[2]) × P(S[2]) + P(D|S[3]) × P(S[3])

  • P(D) = [½ × ⅓] + [1 × ⅓ ] + [0 × ⅓ ] = ½

现在我们拥有了计算车在门 2 后面的概率的所有需要使用的概率,假设我们的数据集 D:

  • P(S[2]|D) = P(D|S[2]) × P(S[2]) / P(D)

  • P(S[2]|D) = [1 × ⅓ ] / ½ = ⅔

我们可以类似地计算在给定数据集 D 的情况下车在门 1 后面的概率:

  • P(S[1]|D) = P(D|S[1]) × P(S[1]) / P(D)

  • P(S[1]|D) = [½ × ⅓] / ½ = ⅓

显然,通过换门我们的机会增加了一倍,因为 P(S[2]|D) = 2P(S[1]|D) = ⅔。请注意,仍然有 ⅓ 的机会你不换门就能赢。但是就像交易和投资一样,你的投注策略应该始终让赔率对你有利。

仍然不确定?让我们通过使用一个称为蒙特卡罗模拟(MCS)的强大数值方法来解决蒙提霍尔问题,这在前一章中提到过。这种强大的计算方法几乎应用于每个领域的理论家和实践者,包括商业和金融。回想一下,MCS 从概率分布中随机抽样,以生成系统的许多可能情景,其结果是不确定的。它通常用于量化模型输出的不确定性。下面的 MCS 代码显示了如果多次玩这个游戏,换门是最佳的投注策略:

import randomimport matplotlib.pyplot as plt# Number of iterations in the simulationnumber_of_iterations = [10, 100, 1000, 10000]fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(8, 6))for i, number_of_iterations in enumerate(number_of_iterations): # List to store results of all iterations stay_results = [] switch_results = [] # For loop for collecting results for j in range(number_of_iterations): doors = ['door 1', 'door 2', 'door 3'] # Random selection of door to place the car car_door = random.choice(doors) # You select a door at random your_door = random.choice(doors) # Monty can only select the door that does not have the car and one # that you have not chosen monty_door = list(set(doors) - set([car_door, your_door]))[0] # The door that Monty does not open and the one you have # not chosen initially switch_door = list(set(doors) - set([monty_door, your_door]))[0] # Result if you stay with your original choice and it has the # car behind it stay_results.append(your_door == car_door) # Result if you switch doors and it has the car behind it switch_results.append(switch_door == car_door) # Probability of winning the car if you stay with your original # choice of door probability_staying = sum(stay_results) / number_of_iterations # Probability of winning the car if you switch doors probability_switching = sum(switch_results) / number_of_iterations ax = axs[i // 2, i % 2] # Plot the probabilities as a bar graph ax.bar(['stay', 'switch'], [probability_staying, probability_switching], color=['blue', 'green'], alpha=0.7) ax.set_xlabel('Strategy') ax.set_ylabel('Probability of Winning') ax.set_title('After {} Simulations'.format(number_of_iterations)) ax.set_ylim([0, 1]) # Add probability values on the bars ax.text(-0.05, probability_staying + 0.05, '{:.2f}' .format(probability_staying), ha='left', va='center', fontsize=10) ax.text(0.95, probability_switching + 0.05, '{:.2f}' .format(probability_switching), ha='right', va='center', fontsize=10)plt.tight_layout()plt.show()

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (9)

如您从模拟结果中所见,长期来看换门是获胜的策略。如果您玩游戏一万次,概率与分析解几乎相同。如果您玩游戏超过十万次,概率几乎完全与分析解相同。我们将在下一章节中特别探讨这些结果的理论原因,以及蒙特卡罗模拟在一般情况下的用途。

然而,从模拟中并不清楚在短期(10 次试验)内是否换门是正确的策略,特别是如果游戏只玩一次的话。我们知道,无论我们赢还是输汽车,蒙蒂都不会再邀请我们回来玩游戏。那么我们甚至能谈论一次性事件的概率吗?但是我们到底是什么意思?大家对概率的含义是否都同意?让我们现在来探讨这个问题。

两大学派关于概率基本含义的争论已经持续了约一个世纪——这是统计推断的灵魂。这两个阵营不仅在我们列举的公理中对概率的基本含义存在分歧,而且在应用这些公理以保持一致性进行推断的方法上也存在分歧。这些核心差异导致了统计推断理论及其实践中的不同发展。

频率主义概率

认为概率是事件或物理对象的自然、不变属性,并且概率是作为长期相对频率经验性测量的统计学家被称为频率主义者。频率主义是现代统计学的主流学派,无论是在学术研究还是工业应用中都是如此。它也被称为正统、经典或传统统计学。

正统统计学家声称概率是事件或物理现象的自然属性。事件的概率应该通过重复类似的实验来经验性地测量——无论是在现实中还是假设地,可以使用想象力或计算机模拟。例如,如果一个实验重复 N 次,事件 E 发生了 M 次,那么相对频率 M/N 近似于事件 E 的概率。随着实验次数 N 趋向无穷大,事件 E 的概率等于 M/N。图2-3 显示了投掷两个公平骰子多次的长期相对频率的直方图。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (10)

图2-3. 两个公平骰子的长期相对频率⁵

频率学家认为概率的任何其他解释都是厌恶的,几乎是亵渎的。然而,他们对概率的定义是意识形态的,不基于科学实验。正如本章后面将讨论的那样,骰子和硬币没有任何静态的、固有的、“真实”的概率。例如,抛硬币并不是随机的,而是基于物理定律,可以用机械硬币翻转器 100%准确地预测。这些实验嘲笑了频率学派对概率的定义,显示出对基础物理学的极端无知。在第四章中,我们将探讨频率学派对概率和统计方法的方法如何对社会科学一般以及经济金融特别是其中大多数使用其方法的出版研究造成了深远的损害,它们是错误的。

认知概率

另一个重要的思想流派是广为人知并且错误地称为贝叶斯统计学。如前所述,这是一个极其错误的称呼,在本书中我们将这种解释称为认知概率。在认知学派中,概率有一个更简单、更直观的含义:它是逻辑的延伸,并根据当前的知识或无知量化事件发生的可能性程度。认知概率是动态的、心理建构,是事件信息的函数,这些事件可能是随机的或不可重复的。

随着获取更多信息,使用反向概率规则更新概率。最重要的是,事件的可能性表达为概率分布,而不是点估计。在生活和商业中存在的不确定性使点估计尽可能被避免。此外,对于概率密度函数,点估计的概率为零。概率机器学习就是基于这种思想流派。

重要的是要注意,概率的认知解释是广泛的,并将频率学派对概率解释作为一个特殊的极限情况。例如,在蒙蒂·霍尔问题中,我们假设汽车可能在三扇门后的任一扇门后,认知和频率概率都是⅓。此外,两种思想流派都得出了同样的结论,即换门可以增加你的概率,并且是一种获胜的策略。然而,认知方法不需要对游戏进行任何独立和相同分布的试验来估计两种策略的概率。同样地,对于诸如骰子和牌的简单游戏,两种概率学派都给出了相同的结果,但频率学派需要想象重新采样数据,或者实际进行模拟。

在过去的一个世纪里,频率学派的理论信徒们以明示或隐晦的方式贬低并试图摧毁认知学派的思想。在其他事情中,他们将认知概率标记为主观的,在科学中通常是一个贬义词。所有的模型,特别是社会和经济科学中的模型,其假设都是根据定义主观的,因为它们涉及在众多可用选项中进行设计选择。

在金融和投资中,主观概率是常态,并且是可取的,因为它们可能导致竞争优势。主观概率可以防止当每个人都遵循同样“客观”的推断或事件预测时发生的赶羊效应和群体思维。认知统计学将确保我们的主观概率与概率理论一致和一贯。如果我们在投资策略的主观概率上是不理性或不一致的,其他市场参与者将利用这些不一致性,并通过反对我们的交易或投资来进行荷兰式套利。这个概念相当于体育博彩中的无风险套利机会,无论结果如何,我们在交易或投资中都会输给其他市场参与者。

统计学的频率派理论被作为科学严谨、高效、健壮和客观的思想销售给了学术界和工业界。这与事实相去甚远。频率学派使用最大似然估计(MLE)方法来学习他们模型参数的最优值。在他们热衷于“只让数据说话”并使推断无偏的过程中,他们并未明确应用任何先验知识或基础率到他们的推断中。然后他们声称他们拥有无偏算法,适用于任何类别的问题。但是 NFL 定理清楚地表明这是不可能的。

NFL 定理在数学上证明了声称一个算法在所有问题域中既无偏又最优的说法是错误的。这是一个免费的午餐,在机器学习、搜索和优化中是不允许的。如果一个算法实际上是无偏的,NFL 定理告诉我们它在不同数据集上会有很高的方差,并且其性能在所有目标分布上的平均表现不会比随机猜测好。风险在于它比随机猜测还要糟糕,这在社会和经济科学中已经发生,那里的大多数研究发现都是错误的(参见第四章的引用)。如果频率学派的辩护是,这个世界上并不是所有的目标分布都是同等可能的,他们需要意识到选择一组目标分布的行为是对偏见的愚蠢承认,因为这涉及到做出主观选择。

但是,我们甚至不必使用 NFL 定理的复杂数学和逻辑来揭示频率主义框架的深刻缺陷。在第四章中,我们将探讨频率主义推断方法为什么“不仅无用”,因为它们违反了概率的乘法和除法规则(乘积和逆概率规则),并在其假设检验方法中使用了检察官谬误的统计诡计。

尽管频率主义者竭力努力,认识论统计已被证明在理论上是合理的,并经过实验证实。事实上,当暴露于复杂的统计现象时,频率主义概率实际上是失败的,揭示了其在处理图像处理和重建等领域时的脆弱性和特设性,其中任何测量的抽样分布总是恒定的。概率算法主导着图像处理领域,利用其更广泛的认识论基础。⁶

在表 2-1 中概述了频率主义和认识论统计之间的差异。这些差异每一个都已经或将在本书中进行解释,并得到了大量学术参考资料的支持。

表 2-1. 频率主义和认识论统计之间差异的总结

维度频率主义统计学认识论统计学
概率事件或对象的长期相对频率的固有静态属性。不受物理实验支持。任何事件信息的动态外在属性,可能是可重复或随机的。
数据被视为随机变量的方差来源。推断不能用于小数据集。被视为常数的已知数据。数据集的大小无关紧要。
参数被视为未知或不可知的常数。被视为未知变量。
模型存在一个解释数据的最佳参数的“真实”模型。存在多个解释模型,其可信度各异。
模型类型判别模型——只学习决策边界。不能生成新数据。生成模型——学习数据的基本结构。模拟新数据。
模型假设隐含在零假设、显著性水平、正则化和渐近限制中。最重要的模型假设明确陈述,并以先验概率形式量化。
推断方法最大似然估计。逆概率法则 / 乘法规则。
假设检验零假设显著性检验是二元的,并且有检察官谬误。给多个不同假设分配可信度。
不确定性类型只处理随机不确定性。处理随机和认识不确定性。
不确定性量化置信区间在认识论上不一致且在数学上有缺陷。P 值犯了反向谬误。基于逻辑和常识的可信区间。在认识论上一致且在数学上合理。
计算复杂性低。中等到高。
无免费午餐(NFL)定理违反了无免费午餐定理。不包括先验知识,因此算法具有很高的方差。在所有可能的问题上平均下来,它们的性能不比随机猜测好。符合无免费午餐定理。先验知识降低了算法的方差,使其在特定问题领域中最优。
科学方法论在客观性表象下的意识形态化、非科学、特定场合下的临时方法。否认反向概率法则/乘法法则的有效性。社会和经济科学中虚假发现的主要原因。逻辑和科学观点,系统地整合基于反向概率法则/乘法法则的先验知识。明确陈述和量化所有客观和主观假设。

相对概率

蒙提霍尔问题中是否存在客观概率?汽车在 2 号门后面,所以 S[2] = 1 的“真实”和客观概率不是一个常数吗?是的,任何与蒙提相同位置的主持人将会分配 S[2] = 1,就像任何参与者会分配 S[2] = ⅓ 一样。然而,在这个游戏中,没有任何事件的静态、不可变的“真实”概率,即独立于人类行为的本体存在。如果蒙提将汽车放在 1 号门后面,对他来说 S[2] = 0,但对任何参与者来说,仍然恒定为 ⅓。

概率取决于使用的模型、游戏的阶段以及参与者或主持人可用的信息。如前所述,任何参与者或主持人的概率不是主观的,而是他们拥有的信息的函数,因为任何主持人和任何合理的参与者都会使用基本概率理论或常识得出相同的概率。概率是用来动态量化不确定性的心理构造。

它类似于特殊相对论的物理学,自从阿尔伯特·爱因斯坦在 1905 年发表其重要论文以来,已经通过实验证实。相对论原理表明,物理定律在所有不相对加速的参考系中不变。共享同一参考系的两个观察者将始终就质量、长度和时间的基本测量达成一致。然而,根据他们的参考系如何相对运动及其相对于光速的比较,他们对这些量的测量将有所不同。相对论原理有许多重要的含义,包括没有绝对运动的事实。运动总是相对于某个参考系的。

图2-4 显示了两个参考系,其中带有撇号的坐标系相对于不带撇号的坐标系以恒定速度运动。观察者 O 和 O′ 将同意物理法则适用于他们的世界。然而,观察者 O 将声称他们静止不动,观察者 O′ 则声称他们沿着 x 轴正向以恒定速度 (+v) 运动。但观察者 O′ 将声称他们静止不动,而观察者 O 则是在 x′ 轴负向以恒定速度 (–v) 运动。这意味着无法明确地说 O 还是 O′ 真的在运动。他们彼此相对运动,但在绝对意义上,两者都没有运动。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (11)

图 2-4. 两个相对运动的参考系中的相对论原理⁷

我发现根据观察者的参考系或信息获取情况来思考相对概率比绝对或主观概率更有用。不管怎样,我们都需要概率论来处理我们日常个人和专业生活中不得不面对的深刻不确定性。但在量化不确定性之前,我们需要对其有相当深入的理解。

在传统的统计学和经济学文献中,通常会将风险和不确定性进行空洞的区分。据称,只能对已知且具有客观概率分布和相关参数的事件进行风险估计。可以准确估计概率和回报,并使用各种指标计算风险。当不存在客观概率分布或者事件是未知或无法预测时,就描述该事件为不确定性,并声称风险无法估计。

在金融和投资中,我们不是在处理像赌场游戏这样的简单游戏,其中玩家、规则和概率分布都是固定和已知的。产品市场和金融市场与这类简单的游戏有很大不同,其中事件风险可以被准确估计。正如前一章讨论的那样,未知的市场参与者可能根据他们自己的策略和假设使用不同的概率分布模型。即使对于流行的、共识的统计分布,也不存在关于参数估计的一致性。此外,由于市场不是平稳遍历的,这些概率分布及其参数正在不断变化,有时会突然变化,从而使每个人的估计和预测都成为笑柄。

因此,基于风险和不确定性的传统定义,几乎所有的投资和金融都是不确定的。在实践中,这是一个无用的区分,源自无用的频率主义统计学和新古典经济学关于客观、学术模型的意识形态,而非市场参与者的现实。作为从业者,我们根据我们的经验、专业知识、机构知识和判断力发展我们自己的主观模型。事实上,我们极为谨慎地保护我们的专有、主观模型,因为与公众分享它们将削弱我们的竞争优势。

Edward Thorp,有史以来最伟大的量化赌徒和交易员,在 Fischer Black 和 Myron Scholes 1973 年发表其著名的“客观”模型之前,就发明了一种期权定价模型。由于 Thorp 的模型是他的对冲基金的商业秘密,他有责任向投资者保密,不与公众分享他的模型,以保持公司的竞争优势。Thorp 运用他的主观、数值的专有期权模型,创造了历史上最佳的风险调整回报之一。Black 和 Scholes 应用他们的“客观”、分析的期权定价模型到实际市场中,结果几近破产,匆忙撤退到学术象牙塔的庇护所。

期权市场做市商和衍生品交易员像我一样,通常会以不同的方式修改“客观”的 Black-Scholes 定价模型,以纠正其许多深层次的缺陷。通过这样做,我们使我们的期权交易模型变得主观和专有。最重要的是,我们使其在成功交易这些复杂市场中变得有用。

“客观”的 Black-Scholes 期权定价模型的真正价值显然不在于其对期权的准确定价。学术界和从业者都普遍认为,它并不准确,尤其是因为错误地将基础资产的波动性视为恒定的。关于 Black-Scholes 模型的一个经典笑话是,你必须在“错误的公式里输入错误的数字才能得到正确的价格。”

Black-Scholes 模型的真正增值,在解释其在从业者中持久流行的原因时,是其促进市场参与者之间的沟通,这些参与者通常使用自己不同的专有期权定价模型。具有讽刺意味的是,尽管 Black-Scholes 模型有虚构的假设和市场幻想,但它在实际期权市场的快速增长中做出了显著贡献。人类对任何格式的优秀虚构作品都情有独钟。也许 Black 和 Scholes 应该被授予真正的诺贝尔文学奖。

在认识论统计学中,概率是逻辑的延伸,并且可以分配给任何不确定事件——已知的、未知的和不可知的。我们通过拒绝点估计,并对任何事件被认为是确定性(概率=1)或不可能性(概率=0)设定极高的标准来做到这一点。这就是为什么在认识论统计学中,我们只处理概率分布。通过使用像柯西分布这样的厚尾概率分布来承认不可知事件,该分布没有定义的均值或方差,反映了在我们的交易和投资持有期间几乎任何事情都是可能发生的事实。

概率估计基于我们的先验知识、观察数据和在进行这类估计时的专业知识。但更重要的是,它们依赖于人类的判断、常识和对因果关系的理解,而这些是 AI 系统无法处理的。我们对我们的估计和预测的信心程度将根据许多因素而变化,包括事件的性质、不确定性的来源、我们的资源以及我们执行此类任务的能力。

在金融和投资领域,我们没有奢侈品不进行这种不完美、混乱的统计尝试。我们这样做是充分了解到这些困难的练习充满了近似,充斥着潜在的错误,并且容易受到市场的破坏和嘲笑。德怀特·艾森豪威尔,前美国将军和总统,在解释这些练习的价值时说:“在准备战斗时,我始终发现计划是无用的,但规划是不可或缺的。”⁹ 通过对风险和不确定性进行某些无用的定义来放弃这种统计练习的选择甚至更糟糕。最糟糕的行动是被某些经济意识形态或对人类行为和理性的客观统计模型或规范理论的错误安全感所麻痹,这些理论没有基础于数据和世界的实际经验现实。

我们拒绝在风险和不确定性之间进行这种无用的区分。根据适当的概率分布和边界条件,所有不确定事件在逻辑上和现实上都是合理的。我们知道所有的模型都是错误的,包括有用的模型,并且不对这些现实的影子效忠。

不确定性通常根据其来源分为三种类型:伪随机、认知和本体。这些是哲学家和科学家们几千年来努力理解和应用的复杂概念。让我们看看如何使用蒙提·霍尔问题来理解这三种不确定性的复杂性。稍后,我们将这些不确定性类型应用到实际中机器学习的各个方面。

伪随机不确定性

“Aleatory”在拉丁语中意味着“掷骰子”。从根本上讲,伪随机不确定性是结果的不可减少的随机性。蒙提·霍尔问题的分析和模拟解决方案都表明,在这个游戏中,无论你选择保持或换门,单次玩游戏或多次玩游戏都不能保证你赢得汽车。你可以坚持最初选择的 1 号门,有 1/3 的几率赢得汽车;或者你可以换到 2 号门,有 1/3 的几率输掉汽车。每当你玩这个游戏时,你确实在掷象征性的骰子,因为结果是不确定的。

实际上,与掷骰子或抛硬币相比,硬币投掷更不确定,因为它们都没有伪随机不确定性,只有认知不确定性,正如下一节所解释的那样。在当前关于概率和统计学的文献中,抛硬币是伪随机不确定性的一个典型例子。然而,这显示了对古典物理定律的无可辩解的无知。已经实验证明,如果你知道硬币投掷的初始条件和其他参数,你可以以 100%的准确率预测其结果。这是因为硬币投掷是物理学,不是随机性。¹⁰

统计学家和前魔术师佩尔西·迪亚康尼斯(Persi Diaconis)让工程师们为他建造了一个机械硬币投掷器,以便他可以进行实验和研究硬币投掷。事实上,他和他的同事们验证了使用机械硬币投掷器进行硬币投掷时没有随机性。¹¹ 硬币投掷的随机性来自于人类投掷硬币时初始条件的不一致性以及硬币在地面上滚动的情况。

我们观察到的不确定性源于我们对投掷物理学的精确信息或知识的缺乏。这是伪随机不确定性的一个糟糕示例。它也表明,硬币没有任何固有的、不可变的、限制频率,正如频率学派想让我们相信的那样。你可以利用硬币投掷的物理学使有偏的硬币变得公正,反之亦然,只需一些练习。¹²

抛硬币和掷骰子是认知不确定性的例子,我们将在下一小节讨论。与硬币或骰子相反,无论对门的物理特性或它们的运动有多少信息,都无法减少蒙蒂·霍尔问题中汽车位置的 aleatory uncertainty。这是 aleatory uncertainty 的一个很好的例子,也是为什么社会系统与物理系统根本不同且更难预测的原因。

在机器学习(ML)中,aleatory uncertainty 是由数据生成的不可消除误差的源头。它设定了任何 ML 模型能够达到的泛化误差的下界。这种普遍存在的噪音以两种不同的方式生成:

测量不确定性

并非总能完全精确地测量数据。例如,当市场因某一事件(如经济报告发布)出现高波动性时,几乎不可能实时捕捉每笔交易或每一次价格变动,导致缺失或延迟的交易数据。同样,数据传输错误可能导致缺失或损坏的价格数据。

抽样不确定性

每当我们从人口中的随机数据样本,或在不同时间抽样随机过程时,样本统计数据(如均值和方差)会因样本而异。这种 aleatory uncertainty 类型是由抽样过程本身的固有随机性以及基础统计分布的可变性所导致的。例如,由不同公司进行的消费者情绪调查会产生不同的统计估计。此外,股票价格回报的方差也随时间变化。图2-5 显示了如何从总体中获取特定的随机数据样本以估计总体的均值和方差。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (12)

图 2-5. 因为随机抽样用于估计其总体的统计特性¹³

认知不确定性

Episteme 在希腊语中意为“知识”。任何情境的认知不确定性取决于面对其的个体的知识或无知状态。与 aleatory uncertainty 不同,你可以通过获取更多的知识和理解来减少 epistemic uncertainty。当蒙蒂打开一扇门展示给你一只山羊时,他为你提供了非常宝贵的新信息,从而降低了你的认知不确定性。基于蒙蒂对你选择的反应,门 1 背后有汽车的概率保持不变为 1/3,但门 2 的概率从 1/3 变为 2/3,门 3 的概率从 1/3 变为 0。

然而,Monty 对于汽车在哪扇门后面没有任何不确定性:他对每扇门的概率始终是 1 或 0。他只对你会选哪扇门感到不确定。而且,一旦你选择了任何一扇门,他就确定接下来会做什么。但是,他不确定你在面对选择时会怎么做。你会留在最初选择的门 1 还是换到门 2,然后很可能赢得汽车?Monty 的不确定性不是认识论的,而是本体论的,这是一种根本不同的不确定性性质,我们将在下一小节中讨论。

所以我们可以从这个游戏中看到,为了为您选择正确的门而存在的不确定性是一个知识状态或“认识论”的功能。重要的是要注意,这不是主观信念,而是信息或其缺乏的功能。本章早期的任何参与者和任何主持人都将计算出相同的不确定性,而换门仍然是获胜策略。

注意

这个游戏也是描述金融交易和市场的信息不对称性的一个例子。一般来说,交易方总是可以获得关于交易或资产各个方面的不同数量的信息,这导致他们在价格估计和交易结果上存在不确定性。不同的信息处理能力和速度进一步加剧了这些不确定性。

机器学习中存在许多认识论不确定性的来源,这源于对底层现象的知识和理解的缺乏。

它们可以按以下方式分类:

数据不确定性

为了进行有效推断,我们希望我们的数据样本能够代表底层人口或数据生成过程。例如,审计师在特定时间段内对公司的交易或财务记录的子集进行抽样,以检查是否符合会计准则。如果样本不代表交易的总体,则审计员可能无法检测到错误或欺诈。

模型不确定性

选择哪种模型来进行推断和预测总是存在不确定性。例如,在进行财务预测时,我们应该使用线性回归还是非线性回归模型?还是神经网络?或者其他一些模型?

特征不确定性

假设我们选择线性模型作为我们的第一个近似和财务预测的基线模型。我们将选择哪些特征来进行推断和预测?我们为什么选择这些特征而排除其他特征?需要多少个特征?

算法不确定性

现在我们已经为线性模型选择了特征,接下来应该使用什么线性算法来训练模型并学习其参数呢?岭回归、套索回归、支持向量机还是概率线性回归算法?

参数不确定性

假设我们决定使用市场模型和概率线性回归算法作为我们的基准模型。我们将为每个参数分配什么概率分布?或者这些参数将是点估计?超参数呢——即参数的概率分布,它们将是概率分布还是点估计?

方法不确定性

在我们的模型中,我们将使用什么数值方法从样本数据中学习其参数?我们将使用马尔可夫链蒙特卡洛(MCMC)方法还是变分推断?Metropolis 抽样方法还是 Hamiltonian Monte Carlo 抽样方法?我们将使用哪些值来设置所选数值方法的参数?我们如何证明这些参数值的合理性?

实施不确定性

假设我们决定使用 MCMC 方法。我们应该使用哪个软件来实现它?PyMC、Pyro、TensorFlow Probability 还是 Stan?或者我们将使用 Python 从头开始构建?R 或者 C++ 呢?

正如前面的讨论所示,设计机器学习模型涉及对目标函数、数据样本、模型、算法和计算资源等的选择。正如前一章提到的,我们的目标是训练我们的 ML 系统,以使其最小化可归纳泛化错误。

如果我们对问题域有先验知识,我们可能会开发一个简单的系统,因为这些知识和假设。这被称为 ML 中的偏差。风险在于,我们对模型的先验假设可能是错误的,导致它在系统地欠拟合训练数据并未从中学习新的模式或信号。因此,模型暴露于偏差误差,并在未看见的测试数据上表现不佳。另一方面,如果我们对问题域没有先验知识,我们可能会构建一个参数较多的复杂模型,以尽可能地适应和学习训练数据。那里的风险在于,模型可能会过度拟合训练数据并学习到伪相关性(噪音)。这导致模型在其预测和推断中引入误差,这些误差被称为方差误差,并导致模型在未看见的测试数据上表现不佳。图2-6 展示了开发模型时需要进行的减少可归纳泛化误差的偏差-方差权衡。当基础数据分布不是稳定的遍历时(就像金融和投资问题中一样),这种权衡变得更加困难和动态。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (13)

图 2-6. 在开发机器学习模型时需要进行的偏差-方差权衡¹⁴

本体不确定性

本体论是关于存在和现实本质的哲学研究。本体不确定性通常源于未来的人类事务本质上是不可预测的。¹⁵

要使蒙蒂·霍尔游戏类似于现实世界的商业交易或交易,我们必须深入探讨游戏的目标,即赢得汽车。从蒙蒂的角度来看,赢就意味着保住汽车,这样他可以在吸引大量观众的同时降低节目成本。从这种视角看游戏时,蒙蒂对汽车藏在哪扇门后并不减少他在赢得游戏方面的本体不确定性。这是因为他不知道你会选择哪扇门,以及在有选择权时你是留在原门还是换门。由于他的概率是你概率的补集,如果你不换门,他有 2/3 的机会保住汽车,如果你换门,他有 1/3 的机会把汽车输给你。

你还有其他可能的本体不确定性。比如你第二次参加游戏时,拿出了对游戏和换门策略的分析。蒙蒂让你大吃一惊,改变了规则,不再打开另一扇门给你看山羊。相反,他让你观察他的身体语言和语调,以便帮助你做出决定。然而,蒙蒂并不打算给你任何有用的线索,想要将你的获胜概率降低到 1/3,无论你是留在原门还是换门。蒙蒂这样做是因为本周早些时候他的制片人曾威胁要取消节目,因为收视率下降,且不足以支付蒙蒂高额的薪水。

商业和金融市场的意外变化是常规而非例外。市场在经历结构性变化时不会向参与者发出备忘录。公司、交易和交易策略经常因这些类型的变化而彻底失败。这与海明威笔下的一个角色描述自己如何破产的方式类似:“有两种方式……逐渐地然后突然地。”¹⁶

在机器学习中,本体不确定性发生在基础人口或数据生成过程中存在结构性断裂的情况下,正如第一章中讨论的那样,我们不得不将模型从二项式更改为三项式。在金融和投资中,本体不确定性的来源是人类活动的复杂性,如政治选举、货币和财政政策变化、公司破产和技术突破等。只有人类能够理解这些变化背后的因果关系,并运用常识从头开始重新设计机器学习模型以适应新的制度。图 2-7 显示了在实践中用于航行金融和投资的概率、认知和本体不确定性的智能系统类型。

正如您所看到的,设计模型涉及理解不同类型的不确定性,每种都需要在各种设计选项中做出决策。这些问题的答案需要对问题域有先验知识,并有经验尝试许多不同的模型和算法。它们不能从演绎逻辑的第一原理中推导出,也不能仅从非静止遍历的样本数据中学习到。这对像我这样的从业者似乎是显而易见的。最令大多数从业者感到惊讶的事情之一(就像我一样),是有一组数学定理被称为无免费午餐(NFL)定理,证明了我们各种方法的有效性。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (14)

图 2-7. 由概率 AI 系统支持的人类智能是航行金融和投资三维不确定性的最有用模型

1891 年,诺贝尔文学奖获得者、英国帝国主义者鲁德亚德·吉卜林(Rudyard Kipling)在其旅行日记《美国笔记》中回忆了对一家酒吧的访问:“我碰巧看到了‘免费午餐’这个制度。你付一杯酒的钱,就可以吃到想吃的东西。在旧金山,一个人每天花不到一卢比,甚至是一个破产者也可以吃得很丰盛。如果你在这些地方受困,记住这一点。”¹⁷

我很幸运地“滞留”在这些地方已经一段时间了,还剩下一些印度卢比,这是我最近访问过前孟买省时留下的。不幸的是,这种曾经流行的美国传统“免费午餐”现在已不常见,尤其是在旧金山的酒吧里,几百卢比可能只能买到一些花生和一杯自来水。然而,“午餐永远不是免费”的观念一直存在,并且在许多学科,特别是经济学、金融学和投资学中得到了广泛应用。

大卫·沃尔珀特(David Wolpert)是一位杰出的计算机科学家和物理学家,他发现这个思想也适用于机器学习和统计推断。1996 年,他发表了一篇论文,通过数学证明了不存在一个能够在所有问题上都最优地解决的优秀机器学习算法的存在。在选择适当的学习算法并提高其性能之前,需要先了解问题域的先验知识。¹⁸ 沃尔珀特当时还是博士后学生,发表这篇论文后,遭到了工业界高管的人身攻击,学术界也对这些定理感到嘲讽,因为它们揭穿了他们关于发现这种最优、无偏、通用机器学习算法的虚假主张。

后来,沃尔珀特与威廉·麦克里迪(William Macready)在 1997 年发表了另一篇论文,为搜索和优化算法提供了类似的证明。¹⁹ 这些定理被称为“无免费午餐”(NFL)定理。请注意,在选择和设计学习算法时,关于问题域的先验知识和假设也被称为偏见。此外,问题由一个数据生成的目标分布定义,算法试图从训练数据中学习。成本函数用于衡量学习算法在样本外测试数据上的性能。这些定理对我们理解机器学习具有许多重要的影响,对我们非常关键。

重要的一个推论是,所有学习算法的表现在所有问题领域中平均来看是相同的。如图 2-8 所示,每位数据科学家都有一个不同的学习算法(A、B、C),它们在四个不同问题领域(苹果、梨、工具和鞋子)的未见数据上的表现被测量。在苹果问题领域中,这三个学习算法表现得都很好。因此,我们在苹果领域或任何其他问题领域中都没有一个唯一的最优学习算法。然而,这些学习算法在其他三个问题领域中的表现各有不同。在所有四个问题领域中独立考虑并取平均后,这三个学习算法的表现是相同的,即 32 / 4 = 8。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (15)

图 2-8. 所有三个学习算法在所有四个问题领域中平均表现相同,得分为 8。²⁰

这个例子说明了 NFL 定理中的核心思想,即没有数学上的理由可以根据在所有问题领域中的预期表现来优先选择一个学习算法。由于学习算法在不同问题领域中的表现各不相同,我们必须利用我们对特定问题领域的经验知识来选择一个与该领域目标函数最匹配的学习算法。因此,学习算法的表现如何取决于我们领域知识和假设的有效性。在机器学习中没有免费的午餐。

如果我们不支付先验知识的代价来使我们的学习算法与问题领域的潜在目标函数对齐,就像那些吃白食的频率主义者声称我们必须保持无偏一样,那么基于未见数据的学习算法预测平均来看将不会比随机猜测更好。事实上,风险是可能比随机猜测还要糟糕。因此,在机器学习中我们不能吃了免费午餐而不付出代价。如果我们在不支付午餐费用的情况下冲出去,后来我们会意识到我们所狼吞虎咽的是垃圾食品,而不是一顿真正的饭菜。

NFL 定理最常见的批评是现实世界中并非所有目标分布都同等可能。这种批评是无稽之谈,并且忽略了使用这样一种数学技术的目的。原因在于,在频率学家幻想的无偏世界中,我们被要求按定义给所有可能的目标分布分配相等的概率。从所有可能的目标分布的有限集中选择单个目标分布必然涉及做出主观选择,而根据无偏世界的定义,这是不允许的。因为在无偏世界中,我们被禁止利用我们对问题领域的先验知识来选择单一的目标分布,所以无偏算法在未见数据上的平均性能被降低到不会比随机猜测更好。频率学家使用的隐式选择目标函数的伎俩,同时用统计术语和客观性的虚假意识形态掩盖他们的偏见选择,经不起严格的审查。

NFL 定理的最重要实际影响是,任何学习算法的良好泛化性能始终取决于上下文和使用方式。如果我们对问题领域拥有充分的先验知识和有效的假设,我们应该使用它来选择并对齐学习算法与特定问题的基础结构及其目标函数的本质。虽然这可能会引入偏见到学习算法中,但这是值得付出的代价,因为它将导致在我们特定的问题领域中更好的性能。

但请记住,这种性能的优化是因为我们“付出”了先验知识。由于我们的学习算法将偏向于我们的问题领域,我们应该期望它几乎肯定在具有不同基础目标函数的其他问题领域上表现不佳,因此其在所有问题领域中的平均性能将不会优于另一个学习算法的性能。

但我们的学习算法在其他问题领域的表现并不是我们关心的问题。我们并不吹嘘我们的偏见学习算法和模型是解决所有问题领域的灵丹妙药。那将违反 NFL 定理。在本书中,我们主要关注优化我们的概率机器学习算法和模型,用于金融和投资。

最重要的是,NFL 定理是关于频率主义/传统统计的虚伪客观性和深层次缺陷的又一个数学证明。频率主义者不使用明确的先验领域知识,仅基于样本内数据进行统计推断的虔诚假装是错误的,并对所有社会科学造成了严重后果。它导致基本比率谬误和大量无效研究的泛滥,其结果不比随机猜测好。我们将在第四章进一步讨论此问题。

归纳推理综合从过去的观察中获取信息,以制定在未来仍然可能成立的一般假设。简而言之,归纳推理基于对随机数据样本进行分析来推断一般人群分布的推理。图 2-9 显示了演绎和归纳推理在科学方法中的应用。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (16)

图 2-9。在科学方法中使用归纳和演绎推理²¹

这通常是我们在金融和投资领域所做的。我们分析过去的数据来检测模式(如趋势)或制定变量(如收益和价格回报)或人类行为(如恐惧和贪婪)之间的因果关系。我们试图提出一个关于为什么这些历史模式和因果关系在未来很可能会持续存在的有力论点。这样的金融分析通常分为两种类型:

技术分析

这是根据供需市场动态对任何时间段内资产价格和交易量数据的历史模式进行研究。模式和统计指标与资产未来的上涨、下跌或横盘价格走势相关联。参见图 2-10,这是一个名为双底的技术模式信号,表明资产在确认第二底部价格找到支撑后将来会上涨。

一般来说,技术分析师不关心资产的性质或是在任何给定时间内导致其价格变动的原因。这是因为所有必要的信息被认为都反映在资产的价格和交易量数据中。技术分析师只关心在历史价格和交易量中检测模式、计算统计指标,并利用它们的相关性来预测资产未来的价格变动。技术投资和交易策略假设历史价格和交易量模式及其相关价格将在未来重复,因为这些基于人类行为以及供需市场动态的基础通常不会发生本质性变化。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (17)

图 2-10. 双底技术模式预测资产价格将来会上涨。

基本分析

这是对金融、经济和人类行为的研究。分析师们研究历史上的公司财务报表以及经济、行业和消费者报告。利用过去的实证数据、统计分析或学术金融理论,分析师们构建了特征(或风险因素)与资产基本价值之间的因果机制。基本分析师主要关注他们分析的资产的本质以及决定其估值的潜在因果机制。

例如,折现现金流(DCF)模型被广泛用于估值资产,如公司的股本和债务或其工厂的价值。基本分析师预测公司或资本项目未来(通常是三到五年)预计产生的现金流,并根据利率将其贴现回现在,以考虑公司资本的机会成本。他们还预测宏观经济变量,如税率、通货膨胀率、国内生产总值和货币汇率等。DCF 模型的基本原则是明天的现金比今天的现金少,因此必须相应地贴现。这假设利率始终为正,并且可以将现金出借以按适当利率赚取利息。通过放弃将现金以适当利率放贷的机会,投资者承担的机会成本反映在贴现率中。参见图 2-11。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (18)

图 2-11. 现金流需要贴现,因为假设利率为正,明天的现金比今天的现金少。

DCF 模型对贴现率和现金流预期增长率的微小变化非常敏感。这就是为什么央行设定的利率对所有资产的估值至关重要,因为它直接影响投资者的资本成本。基本交易和投资策略假设特征(风险因素)与资产估值之间的构建的因果机制将持续存在。

所有其他方法,如量化分析或机器学习,都使用技术分析和基本分析的某种组合。不过,我们怎么知道迄今观察到的技术分析模式和基本分析的因果关系会在未来继续存在呢?嗯,因为过去与未来相似。但这正是我们首先要证明的!这种循环推理通常被称为归纳问题。

这是一个令人困惑的形而上学问题,早在西方人们 18 世纪为了西方观众时,印度哲学卡尔瓦卡学派就已经研究了至少 2400 年。²² 我们可以在物理学中忽略归纳问题(参见侧边栏)。然而,在社会科学中,特别是金融和投资领域,这是对将过去推广到未来的任何逻辑的一个明显且存在的危险。这是因为人类有自由意志、情感和创造力,并且他们对彼此的行为做出不可预测的反应。有时历史会重演,有时会押韵,有时则毫无意义。这就是为什么美国证券交易委员会(SEC)要求所有投资管理行业的营销材料都必须声明,过去的回报不能保证未来的结果。这句陈词滥调但却屡见不鲜的声明只是回应了古老的归纳问题。与物理宇宙不同,社会系统不需要无限的时间和空间来产生看似不可能的事件。平均寿命已经足够让我们见证其中一些令人难以置信的事件。例如,在过去的十年中,日本和欧洲已经发行了超过 15 万亿美元的负利率债券!负利率违背了常识、金融基本原理和 DCF 模型的基础。

归纳推理是机器学习的基础。所有的机器学习模型都建立在这样一个假设之上:在过去的训练数据中发现的模式将在未来的未见数据中持续存在。需要注意的是,NFL 定理是概率框架内归纳问题的杰出算法重新表述。在这两个框架中,我们必须使用关于问题领域的先验知识或假设,以便在未见数据上做出比随机猜测更好的预测。更重要的是,这种知识不能仅仅从样本内数据或演绎逻辑的原理或数学定理中获取。必须基于过去的经验观察和对观察现象或数据生成目标函数结构统一的假设。只有当我们应用关于问题领域的先验知识时,我们才能期望优化我们的学习算法,以便在未见数据上做出比随机猜测更好的预测。

最重要的是,认识论统计热衷于归纳问题,并直接回答其核心问题:我们能否确定我们从过去的观察中获得的知识是有效的,并且将来仍将有效?当然不能—坚定的答案是,我们几乎永远不能确定。从不确定和不完整信息中持续学习是认识论统计和概率推理建立的基础。

因此,正如我们将在第五章中看到的那样,认识论统计为机器学习提供了一个概率框架,系统地整合先验知识,并随着新观察结果更新,因为我们永远不能确定我们的知识的有效性将持续到未来。几乎所有的知识都以不同程度的不确定性存在,并最好表示为概率分布,而不是点估计。从这些模型中生成关于未来(预测)和过去(回溯预测)的预测概率分布。然而,它面临的最大挑战是处理本体不确定性,这是人类智能至关重要的。

在本章中,我们使用了著名的蒙提霍尔问题来复习概率论的基本规则,并应用这些规则来解决蒙提霍尔问题。我们还意识到了推导逆概率规则的惊人简单,这对认识论统计和概率机器学习至关重要。此外,我们利用蒙提霍尔游戏探讨了贯穿我们生活和业务的偶然性、认识论和本体不确定性的深刻复杂性。对三种不确定性类型及概率含义的更好理解将使我们能够分析并为我们在金融和投资领域面临的困难问题开发适当的模型。

我们确切知道,即使像硬币这样的物理对象也没有基于长期频率的内在概率。它取决于初始条件和投掷的物理过程。概率是认识论的,而非本体论的——它们是地图,而不是地形。频率主义者们应该停止用他们的心灵投射谬误来愚弄自己和他人,并放弃他们的虔诚假装客观性和科学严谨性。

NFL 定理可以解释为在一般机器学习和特别是金融与投资中重新表述归纳问题。算法或投资策略的过去表现不是其未来表现的保证。问题域的目标分布或样本外数据集可能会发生足够的变化,从而降低算法和投资策略的性能。换句话说,不可能有一个既无偏差又对所有问题域或市场环境都最优的学习算法或投资策略。如果我们希望为我们特定的问题域找到一个最优算法,就必须通过假设和先前的领域知识来支付代价。

概率机器学习在其框架内结合了归纳问题和 NFL 定理的基本概念。它系统地整合先前的领域知识,并持续更新新信息,始终表达对先前知识、推断、预测和预测的不确定性。我们将在第五章中探讨这个认识论上合理、数学上严谨、常识性的机器学习框架。在下一章中,我们将深入研究基本的蒙特卡洛方法及其在独立采样中量化不确定性的应用。

Clark, Matthew P. A., and Brian D. Westerberg. “How Random Is the Toss of a Coin?” Canadian Medical Association Journal 181, no. 12 (December 8, 2009): E306–E308.

Dale, A. I. A History of Inverse Probability: From Thomas Bayes to Karl Pearson. New York: Springer, 1999.

Diaconis, Persi, Susan Holmes, and Richard Montgomery. “Dynamical Bias in the Coin Toss.” Society for Industrial and Applied Mathematics (SIAM) Review 49, no.2 (2007): 211–235.

Hemingway, Ernest. The Sun Also Rises. New York: Charles Scribner’s Sons, 1954.

Jaynes, E. T. Probability Theory: The Logic of Science. Edited by G. Larry Bretthorst, New York: Cambridge University Press, 2003.

Kahneman, Daniel. Thinking, Fast and Slow. New York: Farrar, Straus and Giroux, 2011.

Kipling, Rudyard. From Sea to Sea: Letters of Travel, Part II. New York: Charles Scribner’s Sons, 1899.

McElreath, Richard. Statistical Rethinking: A Bayesian Course with Examples in R and Stan. Boca Raton, FL: Chapman and Hall/CRC, 2016.

McGrath, James,《大管理智慧小书》,O’Reilly Media,2017 年。访问于 2023 年 6 月 23 日。https://www.oreilly.com/library/view/the-little-book/9781292148458/html/chapter-079.html

Njå, Ove, Øivind Solberg 和 Geir Sverre Braut,《不确定性——其本体论地位及其与安全的关系》,收录于《风险控制的错觉:如何与不确定性共存?》,编辑:Gilles Motet 和 Corinne Bieder,5–21 页。瑞士,香槟:SpringerOpen,2017 年。

Patterson, Scott,《量化交易者:如何新一代数学天才征服华尔街并几乎摧毁它》,纽约:皇冠商业,2010 年。

Perrett, Roy W.,《印度哲学中的归纳问题》,《东西方哲学》34 卷 2 期(1984 年):161–74 页。

Stigler, Stephen M.,《谁发现了贝叶斯定理?》,《美国统计学家》37 卷 4 期 a(1983 年):290–296 页。

Thaler, Richard,《不当行为:行为经济学的形成》(纽约:W·W·诺顿公司,2015 年)。

Wolpert, David,《学习算法之间缺乏先验区别》,《神经计算》8 卷 7 期(1996 年):1341–90 页。

Wolpert, David H. 和 William G. Macready,《优化的无免费午餐定理》,《IEEE 进化计算交易》1 卷 1 期(1997 年):67 页。

¹ 改编自维基共享资源上的一幅图像。

² Richard Thaler,《不当行为:行为经济学的形成》(纽约:W·W·诺顿公司,2015 年);Daniel Kahneman,《思考,快与慢》(纽约:法拉尔、斯特劳斯和吉鲁克斯,2011 年)。

³ 改编自维基共享资源上的一幅图像。

⁴ Stephen M. Stigler,《谁发现了贝叶斯定理?》,《美国统计学家》37 卷 4 期 a(1983 年):290–96 页;E. T. Jaynes,《历史演变》,收录于《概率论:科学逻辑》,编辑:G. Larry Bretthorst(纽约:剑桥大学出版社,2003 年),112–14 页;A. I. Dale,《逆概率》,收录于《逆概率的历史:从托马斯·贝叶斯到卡尔·皮尔逊》(纽约:斯普林格,1999 年),1–16 页。

⁵ 改编自维基共享资源上的一幅图像。

⁶ Richard McElreath,《布拉格的格雷姆》,收录于《统计重新思考:R 和 Stan 实例的贝叶斯课程》(弗罗里达州博卡拉顿:查普曼和霍尔/CRC,2016 年),1–18 页。

⁷ 改编自维基共享资源上的一幅图像。

⁸ Scott Patterson,《量化交易者:如何新一代数学天才征服华尔街并几乎摧毁它》(纽约:皇冠商业,2010 年)。

⁹ 引自“引语 64:德怀特·D·艾森豪威尔关于计划无用但计划至关重要的理由”,收录于《大管理智慧的小书》(作者:詹姆斯·麦克格拉思博士,O’Reilly Media,2017 年),https://www.oreilly.com/library/view/the-little-book/9781292148458/html/chapter-079.html

¹⁰ Jaynes,《如何作弊:硬币或骰子抛掷》,收录于《概率论》,317–20 页。

¹¹ Persi Diaconis、Susan Holmes 和 Richard Montgomery,《硬币抛掷中的动态偏差》,《工业和应用数学学会评论》49 卷 2 期(2007 年):211–35 页。

¹² Matthew P. A. Clark 和 Brian D. Westerberg,《抛硬币有多随机?》,《加拿大医学协会杂志》181 卷 12 期(2009 年 12 月 8 日):E306–E308 页。

¹³ 改编自维基共享资源上的一幅图像。

¹⁴ 改编自维基共享资源上的一幅图像。

¹⁵ Ove Njå、Øivind Solberg 和 Geir Sverre Braut,《不确定性——其本体论地位及其与安全性的关系》,收录于《风险控制的幻觉:如何与不确定性共存?》,编辑:Gilles Motet 和 Corinne Bieder(瑞士,Cham:SpringerOpen,2017 年),5–21 页。

¹⁶ Ernest Hemingway,《太阳照常升起》,(纽约:查尔斯·斯克里布纳子公司,1954 年),136 页。

¹⁷ Rudyard Kipling,《从海到海:旅行信件,第二部分》,(纽约:查尔斯·斯克里布纳子公司,1899 年),39 页。

¹⁸ David Wolpert,《学习算法之间缺乏先验区分》,《神经计算》8 卷 7 期(1996 年):1341–90。

¹⁹ David H. Wolpert 和 William G. Macready,《优化中的无免费午餐定理》,《IEEE 进化计算期刊》1 卷 1 期(1997 年):67 页。

²⁰ 改编自维基共享资源上的一幅图像。

²¹ 改编自维基共享资源上的一幅图像。

²² Roy W. Perrett,《印度哲学中的归纳问题》,《东西方哲学》34 卷 2 期(1984 年):161–74。

我掌握骰子的科学,我精于数字。

—《摩诃婆罗多》中的王子吉尔陀兰(约公元前 900 年),关于从随机选择的树枝上估计树叶数目的话语

蒙特卡洛模拟(MCS),又称蒙特卡洛方法,在金融和投资领域中的重要性不可忽视。MCS 用于估值各种资产、优化多样化投资组合、估计风险和评估复杂的交易策略。MCS 特别用于解决那些没有解析解的问题。¹ 确实,有许多类型的金融衍生品——如回溯期权和亚洲期权——不能用任何其他技术进行估值。尽管支撑 MCS 的数学并不简单,但一旦理解了其基于的关键统计概念,应用这一方法实际上是相当容易的。

MCS 也广泛应用于机器学习算法,尤其是概率机器学习领域。正如在第一章中讨论的,并在第二章中模拟解决蒙特霍尔问题中展示的,MCS 使您能够量化模型输出的不确定性,这是一种称为前向传播的过程。它将金融分析师使用的传统场景和敏感性分析提升到完全不同的水平。

你可能会想,一个使用随机抽样的方法如何会导致一个稳定的解?这不是自相矛盾吗?从某种意义上来说确实如此。然而,当你理解了一些统计定理之后,你会发现在某些情况下多次试验可以驯服随机性,并使其收敛到一个稳定的解。这正是我们在模拟解决蒙特霍尔问题时观察到的,大约经过 1000 次试验后,解决方案收敛到了理论值。在本章中,我们使用蒙特卡洛模拟来回顾关键的统计概念,并向你展示如何将这一强大的工具应用于解决金融和投资领域中的实际问题。特别是,我们将蒙特卡洛模拟应用于一个资本预算项目,即软件开发项目,并估计其价值和持续时间的不确定性。

在我们开始探索这条路之前,我们怎么知道 MCS 确实像描述的那样有效?让我们通过计算π这个已知常数来进行一个简单的 MCS 概念验证。图 3-1 展示了我们如何设置模拟以估计π的值。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (19)

图 3-1. 在边长为两个单位长度的红色正方形中,单位长度的蓝色圆圈模拟计算π的值,使用蒙特卡洛模拟。

正如 Python 代码所示,你模拟 N 个点随机喷洒以填满整个正方形。接下来我们计算半径为 R 的圆内的 M 个点。圆的面积是 pi × R² = M。正方形的边长是 2R,所以它的面积是 2R × 2R = 4 × R² = N。这意味着圆的面积与正方形的面积的比值是 pi/4 = M/N。因此 pi = 4 × M/N:

# Import modulesimport numpy as npfrom numpy import random as nprimport matplotlib.pyplot as plt# Number of iterations in the simulationn = 100000# Draw random points from a uniform distribution in the X-Y plane to fill #the area of a square that has a side of 2 unitsx = npr.uniform(low=-1, high=1, size=n)y = npr.uniform(low=-1, high=1, size=n)# Points with a distance less than or equal to one unit from the origin will # be inside the area of the unit circle. # Using Pythagoras's theorem c² = a² + b²inside = np.sqrt(x**2 + y**2) <=1# We generate N random points within our square and count the number of points # that fall within the circle. Summing the points inside the circle is equivalent # to integrating over the area of the circle. # Note that the ratio of the area of the circle to the area of the square is # pi*r²/(2*r)² = pi/4\. So if we can calculate the areas of the circle # and the square, we can solve for pipi = 4.0*sum(inside)/n # Estimate percentage error using the theoretical value of Pierror = abs((pi-np.pi)/np.pi)*100print("After {0} simulations, our estimate of Pi is {1} with an error of {2}%".format(n, pi, round(error,2)))# Points outside the circle are the negation of the boolean array insideoutside = np.invert(inside)# Plot the graphplt.plot(x[inside], y[inside], 'b.')plt.plot(x[outside], y[outside], 'r.')plt.axis('square');

就像蒙特霍尔模拟一样,你可以从这个模拟的结果中看到 MCS 对 pi 的近似值接近理论值。此外,随着你增加在正方形上喷洒的点数 N,估计值与理论值之间的差异越来越接近 0。这使得正方形和圆形的面积比更加准确,从而给出更好的 pi 的估计值。现在让我们来探讨一下关键的统计概念,这些概念使得 MCS 能够利用随机性来解决复杂问题,无论是否具有解析解。

这里有一些非常重要的统计概念,你需要理解这些概念,这样你就能更深入地理解为什么 MCS 有效,以及如何将其应用于解决金融和投资中的复杂问题。这些概念也是金融、统计和机器学习模型的理论基础。

均值和方差

图 3-2 应该可以让你回忆起你在高中学到的基本描述性统计概念。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (20)

图 3-2. 样本均值和标准差的公式²

算术平均值是数据点样本中心趋势的一种测量方法。它很容易计算:将样本中的所有点值相加并将总和除以点的总数。数据集中心趋势的其他测量方法是中位数和众数。要记住中位数是将数据集分为上半部分和下半部分的值。虽然算术平均值对异常值很敏感,但中位数不受异常值的影响。众数是数据中观察到的最频繁的值。它也不受异常值的影响。有时一个样本中可能有许多众数,而其他时候众数甚至可能不存在。

需要注意的是,所有值相对于值的算术平均值的偏差的总和总是等于零。这就是使算术平均值成为样本中心趋势的一个好的测量方法的原因。这也是为什么你必须对偏差进行平方使其变为正数,以防它们相互抵消。从平均值得到的平均偏差可以让你对数据样本的分散性或数据样本与其算术平均值的散布情况有一个感觉。

请注意,样本方差通过将平方偏差的总和加起来并将其除以总点数(n)减 1 来计算。您使用 n-1 而不是 n 的原因是,通过计算平均值,您已经失去了一个自由度;即平均值和 n-1 个点将为您提供整个数据集。标准偏差,单位为平均值,是通过取方差的平方根获得的。

资产价格回报的波动性是使用样本回报的标准偏差计算的。如果在金融模型中连续复利回报,如几何布朗运动(GBM)中所假设的,我们使用价格回报的自然对数来计算波动性。这还具有使分析和数值计算变得更加简单的额外优势,因为乘法操作可以转换为其对数的加法。此外,当执行涉及多个小于 1 的值的乘法时,由于计算机固有的数值下溢限制,计算的精度可能会受到影响。

期望值:概率加权算术平均数

一种重要的算术平均数类型是交易或投资的期望值。期望值定义为未来支付的概率加权算术平均数:

  • E[S] = P(S[1]) x Payoff(S[1]) + ....+ P(S[n]) x Payoff(S[n])

在金融领域,您应该使用期望值来估计您交易和投资的未来回报。其他用于此目的的测量方法是不完整或具有误导性的。例如,常见的金融新闻网络上的交易员谈论的回报风险比。这种比率是一个不完整的度量标准,因为它没有考虑到正面和负面支付的预计概率。您可以构建一个交易,使其具有任何您想要的回报风险比。它并不能说明您认为支付的可能性有多大。如果回报风险比是您要考虑的关键指标,那么不要浪费时间投资。直接买一张彩票就好了。回报风险比可以超过一亿比一。

为什么波动率是一个荒谬的风险测量方法

假设股票 A 的价格一个月上涨 5%,下个月上涨 10%,第三个月上涨 20%。A 的每月复利回报率,即回报的几何平均数,大约为 11.49%,每月标准偏差或波动率为 7.64%。请注意,我们使用图 3-2 中的公式,并且在分母中使用 2,因为此估计是基于三个月的样本。与之相比,股票 B 连续三个月下跌-10%。每月复利回报率将为-10%,但每月波动率将为零。您更希望哪只股票进入您的投资组合?

波动率是一种荒谬的风险度量,因为它将不等于算术平均值(期望的一种度量)的利润视为与同等亏损一样的风险。同样荒谬的是,符合期望的亏损不被视为风险。显然,不管它是否等于回报样本的平均亏损,亏损就是亏损。

波动率不考虑回报分布的方向性,将正向和负向偏差对待得一视同仁。因此,波动率误估了非对称风险。投资者谈论并且不想要的波动性是损失的半标准差。然而,半标准差在分析上是棘手的,并且不适合于金融理论中的优雅公式。

这意味着基于回报波动性的任何风险或绩效度量本质上是有缺陷的。夏普比率衡量资产价格回报超过基准回报并将其除以资产价格回报的波动性。这是一种在学术界和行业中广受欢迎的标准投资绩效指标。然而,许多价值投资者,如沃伦·巴菲特、对冲基金经理和大宗商品交易顾问,都认为夏普比率是一种有缺陷的绩效衡量指标。更糟糕的是,波动性低估了金融风险,我们很快会讨论这一点。

小贴士

如果你投资的正回报未达到预期,并且其结果的波动性让你夜不能寐,你可以放心了,因为帮助即将到来。现在,你可以通过免费转移那些有风险的正回报偏差来降低你的投资回报的波动性!

偏度和峰度

偏度衡量了分布关于其算术平均值的不对称性。正态分布的偏度为零。偏度的计算方式类似于方差,但是不是对偏离平均值的平方,而是将其提升到三次方。这样可以保留偏离的正负号,从而给出平均偏离的方向。偏度告诉你期望值(平均值)相对于中位数和众数的分布位置。参见 图3-3。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (21)

图 3-3. 与正态分布等对称分布相比的偏态分布³

作为投资者或交易员,你希望你的回报分布尽可能向正偏态发展。在正偏态分布中,期望值将大于中位数,因此它将位于分布的上半部分——平均而言,正回报将超过负回报。正如前面所讨论的,波动性是无方向性的,因此会误估偏态分布的非对称风险。

峰度是衡量分布在算术平均值周围有多陡峭,尾部有多肥厚,与正态分布相比的一种度量。像偏度一样,峰度是通过类似于方差的方法计算的,但不是将偏离均值平方,而是提升到四次方。肥尾分布意味着低概率事件比如果分布是正态的话更有可能发生。均匀分布没有尾巴。事实上,柯西(或洛伦兹)分布看起来与正态分布非常相似,但由于其无限的均值和方差,其尾部非常肥厚,正如在图3-4 中所示。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (22)

图3-4. 比较柯西分布的尾部与正态分布⁴

高斯或正态分布

高斯分布在自然界中随处可见,并且在所有科学中都被使用。我们经常看到数据呈钟形曲线分布,就像在图3-5 中展示的那样。这就是为什么高斯分布也被称为正态分布。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (23)

图3-5. 大约 99.7% 的高斯或正态分布面积落在均值的三个标准差内⁵

不幸的是,金融数据和学术研究显示,正态分布在所有金融市场中并不如此常见。但这并没有阻止大多数学者和许多从业者将其用于他们的模型。为什么?因为高斯分布在解析上可处理,并且适合于不使用计算机就能解决的优雅公式。如果你知道高斯分布的均值和标准差,你就知道关于分布的一切。例如,在图3-3 中,你可以看到大约 68% 的数据落在均值的一个标准差内,95% 落在两个标准差内,几乎所有数据都落在均值的三个标准差内。

为什么波动率低估了金融风险

S&P 500 是一个全球市场指数,作为股票市场的基准,被全球市场参与者广泛使用。该指数代表一个由全球一些顶级公司组成的股权投资组合。基于 S&P 500 的金融工具是世界上最流动的市场,每周运行超过 5 天,全天 24 小时。我可以证明这一点,因为我交易基于该指数的 ETF(交易所交易基金),以及期权和期货。

根据现代投资组合理论(MPT),标准普尔 500 指数的资产价格回报应该大致服从正态分布。它还假设这个分布的均值和方差是平稳的遍历的。这意味着这两个参数是时间不变的,我们可以从任何时间段的一个相当大的样本中估计它们。

在下面的 Python 代码中,我们测试了 MPT 的基本原则,即资产价格回报是正态分布的。我们导入了 30 年的标准普尔 500 价格数据,并计算了其日回报、偏度和峰度:

# Import Python librariesimport pandas as pdfrom datetime import datetimeimport numpy as npimport matplotlib.pyplot as pltplt.style.use('seaborn')# Install web scraper for Yahoo Finance!pip install yfinanceimport yfinance as yf# Import over 30 years of S&P 500 ('SPY') price data into a dataframe # called equitystart = datetime(1993, 2, 1)end = datetime(2022, 10, 15)equity = yf.Ticker('SPY').history(start=start, end=end)# Use SPY's closing prices to compute its daily returns. # Remove NaNs from your dataframe.equity['Returns'] = equity['Close'].pct_change(1)*100equity = equity.dropna()# Visualize and summarize SPY's daily price returns. # Compute its skewness and kurtosis.plt.hist(equity['Returns']), plt.title('Distribution of S&P 500 Daily Percentage Returns Over the Past 30 Years'), plt.xlabel('Daily Percentage Returns'), plt.ylabel('Frequency'), plt.show();print("Descriptive statistics of S&P 500 percentage returns:\n{}".format(equity['Returns'].describe().round(2)))print('The skewness of S&P 500 returns is: {0:.2f} and the kurtosis is: {1:.2f}.'.format(equity['Returns'].skew(), equity['Returns'].kurtosis()))

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (24)

显然,日回报分布看起来与正态分布差别很大。它的负偏度为 0.07,非常厚的尾部,峰度为 11.43。如果标准普尔 500 的日回报真的是正态分布,会是什么样子呢?让我们模拟一下理论金融声称我们应该生活在其中的世界。

MPT 的时间不变原则意味着,我们可以利用来自任何时间段的足够大的样本估计其统计矩。三十年的数据绝对够用。我们使用上述历史数据的均值和标准差作为这些参数的估计值:

# Estimate the mean and standard deviation from SPY's 30 year historical datamean = equity['Returns'].mean()vol = equity['Returns'].std()sample = equity['Returns'].count()# Use NumPy's random number generator to sample from a normal distribution# with the above estimates of its mean and standard deviation# Create a new column called 'Simulated' and generate the same number of # random samples from NumPy's normal distribution as the actual data sample# you've imported above for SPYequity['Simulated'] = np.random.normal(mean, vol, sample)# Visualize and summarize SPY's simulated daily price returns.plt.hist(equity['Simulated']), plt.title('Distribution of S&P 500 Simulated Daily Returns'), plt.xlabel('Simulated Daily Percentage Returns'), plt.ylabel('Frequency'), plt.show();print("Descriptive statistics of S&P 500 stock's simulated percentage returns:\n{}".format(equity['Simulated'].describe()))# Compute the skewness and kurtosis of the simulated daily price returns.print('The skewness of S&P 500 simulated returns is: {0} and the kurtosis is: {1}.'.format(equity['Simulated'].skew().round(2), equity['Simulated'].kurtosis().round(2)))

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (25)

由于我们是从正态分布中随机抽样,偏度和峰度的值在零周围有轻微的抽样误差。无论如何,这两个分布看起来完全不像。过去 30 年的标准普尔 500 日回报显然不是正态分布的。

大多数金融时间序列都是不对称且有厚尾。这些并不是好玩的金融和统计小知识。具有负偏斜和厚尾的资产价格回报分布可能会使投资者、公司和整个经济陷入破产,如果它们的建模者忽视了这些,因为他们会低估极端事件的概率。大金融危机最近提醒了我们,使用忽视科学方法基本原则和真实世界数据中的嘈杂、丑陋和厚尾现实的优雅数学方程建立理论模型可能会带来灾难性后果。

大数定理

这是最重要的统计定理之一。大数定理(LLN)说,如果样本是独立的,并且从同一分布中抽取,那么样本均值几乎肯定会随着样本量的增加收敛于理论均值。在图3-6 中,每次掷骰子所得数字之和除以总掷骰子次数或试验次数的值,在试验次数增加时接近 3.5。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (26)

图3-6. 骰子投掷的样本均值在样本量增大时逼近其理论均值⁶

请注意,理论平均值不必是物理结果。任何公平骰子上都没有 3.5。此外,请注意前几次试验的结果如何在均值周围广泛变化。然而,从长远来看,它们无情地收敛到理论均值。当然,我们假设骰子是公平的,并且我们不知道掷骰子的物理学。

中心极限定理

中心极限定理(CLT)指出,如果你不断从一个未知的任意形状的总体中抽取样本,并计算每个大小为 n 的样本的均值,则这些样本均值的分布将呈正态分布,如 图3-7 所示。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (27)

图3-7. 样本均值的抽样分布是正态分布⁷

这是最惊人的统计现象之一。要欣赏中心极限定理(CLT)的威力,考虑一个公平的骰子,因为每个数字在骰子上出现的概率都是相等的(1/6)。图3-8 显示了当你投掷一个公平的骰子并将每次投掷出现的数字相加并重复试验时会发生什么。瞧,CLT 的魔力:水平线变成了近似的钟形曲线。如果我们增加试验或者投掷骰子的次数,曲线将看起来像钟形曲线。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (28)

图3-8. CLT 显示我们如何将公平骰子的均匀分布转换为近似的高斯分布⁸

MCS 基于统计学中已提到的两个最重要的定理:大数定律(LLN)和中心极限定理(CLT)。⁹ 请注意,LLN 确保随着试验次数的增加,样本均值几乎肯定收敛于理论或总体均值。CLT 确保随着样本大小的增大,从理论均值得到的样本平均值的抽样误差或波动成为正态分布。

MCS 起作用并且可扩展到多维问题的原因之一是抽样误差与变量的维度无关。这种抽样误差随着样本大小的平方根而渐近地接近于零,而不是变量的维度。这是非常重要的。这意味着 MCS 中的抽样误差对单个变量和 100 维变量来说是一样的。

然而,误差随着样本大小 n 的平方根而减少。因此,为了使其估计的精度增加一个数量级,你必须将 MCS 迭代增加 100 倍。但随着计算能力日益便宜,这不像上个世纪那样成为大问题。

通过将 MCS 应用于如估值资本项目等真实金融问题,增进我们对 MCS 的理解。在全球范围内,估值资本项目和其他投资(如债券和股票)广泛使用的贴现现金流量(DCF)模型在上一章中详细讨论。贴现现金流量(DCF)模型预测预期的自由现金流(FCF)在 N 期间,通常以年为单位。一个时间段内的自由现金流等于运营活动的现金减去资本支出。模型还需要估计公司投资者每期所需的回报率(R)。这个利率被称为折现率,因为它用于将项目的 N 期自由现金流折现到现在。折现自由现金流的原因是我们需要考虑投资者进行项目投资而不是进行类似风险的其他投资的机会成本。模型分为四个步骤:

  1. 预测每个 N 期间项目的预期自由现金流(FCF)。

  2. 估计适当的机会成本或每期折现率(R)。

  3. 折现每个期望 FCF 回到现在。

  4. 将预期折现的 FCF(前述)相加以获得预期的净现值(NPV):

  • 项目的预期 NPV = FCF[0] + FCF[1] / (1 + R) + FCF[2] / (1 + R)² + ...+ FCF[n] / (1 + R)^N

NPV 决策规则表明,您应接受任何其预期 NPV 大于零的投资。这是因为具有正预期 NPV 的投资提供给投资者比类似风险的替代投资更高的回报率,这是他们的机会成本。

要创建我们的 DCF 模型,我们需要关注软件项目的主要成本和收入驱动因素。我们还需要确保这些变量之间没有强相关性。理想情况下,模型的所有 FCF 应该使用非常少的非相关变量或风险因素进行制定。

正如您所知,软件开发是劳动密集型的,因此我们的主要成本驱动因素将是工资和薪水。此外,一些开发人员将在项目上兼职工作,而一些则是全职工作。然而,对于开发劳动成本,我们只需要所需开发人员的全职当量(FTE),即我们估算的努力,就好像所有必需的开发人员都在全职工作。排程是我们将确定分配多少时间以及何时需要每个开发人员的地方:

# Import key Python libraries and packages that we need to process and analyze # our dataimport pandas as pdfrom datetime import datetimeimport numpy as npfrom numpy import random as nprimport matplotlib.pyplot as plt plt.style.use('seaborn')# Specify model constants per full-time equivalent (fte)daily_rate = 400technology_charges = 500overhead_charges = 200# Specify other constantstax_rate = 0.15# Specify model risk factors that have little or no correlation among them.# Number of trials/simulationsn = 10000# Number of full-time equivalent persons on the teamfte = npr.uniform(low=1, high=5, size=n)# In person days and driven independently by the scope of the projecteffort = npr.uniform(low=240, high=480, size=n)# Based on market research or expert judgment or bothprice = npr.uniform(low=100, high=200, size=n)# Independent of price in the price range consideredunits = npr.normal(loc=1000, scale=500, size=n)# Discount rate for the project period based on risk of similar efforts discount_rate = npr.uniform(low=0.06, high=0.10, size=n)# Specify how risk factors affect the project modellabor_costs = effort * daily_ratetechnology_costs = fte * technology_chargesoverhead_costs = fte * overhead_chargesrevenues = price * units# Duration determines the number of days the project will take to complete# assuming no interruption. Different from the elapsed time of the project.duration = effort/fte# Specify target_valuefree_cash_flow = (revenues - labor_costs - technology_costs - overhead_costs) * (1 - tax_rate)# Simulate project NPV assuming initial FCF=0npv = free_cash_flow/(1 + discount_rate)# Convert numpy array to pandas DataFrame for easier analysisNPV = pd.DataFrame(npv, columns=['NPV'])# Estimate project duration in daysDuration = pd.DataFrame(duration, columns=['Days'])# Plot histogram of NPV distributionplt.hist(NPV['NPV'], bins=50), plt.title ('Distribution of Project NPV'), plt.xlabel('Project NPV'), plt.ylabel('Frequency'), plt.show();print(NPV.describe().round())success_probability = sum(NPV['NPV'] > 0)/n *100print('There is a {0}% probability that the project will have a positive NPV.'.format(round(success_probability)))# Plot histogram of project duration distributionplt.hist(Duration['Days'], bins=50), plt.title ('Distribution of Project Duration'), plt.xlabel('Days'), plt.ylabel('Frequency'), plt.show();print(Duration.describe().round())

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (29)金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (30)

注意,我们没有按无风险利率贴现 FCF 分布。无风险利率是像美国 10 年期票据这样的政府证券的利率。这是 NPV 模拟中的常见错误,但是是不正确的,因为每个模拟都在估计 FCF 的预期值。每个 FCF 需要按风险调整折现率贴现,以考虑项目的总风险。

需要谨慎解释代码输出中风险调整净现值的分布。使用净现值的分散性来做决策将会双重计算项目风险。使用根据无风险利率调整后的净现值的分散性来考虑总体风险在公司财务中没有坚实的理论基础。

要利用 MCS 的力量来解决复杂的金融和投资相关问题,在面对不确定性时,遵循一个健全且可复制的过程是非常重要的。以下是一个完成这一目标的 10 步流程:

  1. 构建你的模型中目标/依赖变量如何受特征/独立变量(在金融中也称为风险因素)影响的公式。

  2. 指定每个风险因素的概率分布。一些常见的包括高斯分布、学生 t 分布、柯西分布和二项式概率分布。

  3. 指定初始值和时间的离散化方式,例如秒、分钟、天、周或年。

  4. 指定每个风险因素随时间如何变化,如果有的话。

  5. 指定每个风险因素如何受其他风险因素影响。这很重要,因为风险因素之间的相关性可能会错误地放大或减弱效果。这种现象也称为多重共线性。

  6. 让计算机从每个独立风险因素的概率分布中随机抽取一个值。

  7. 根据随机值计算每个风险因素的值。

  8. 根据所有风险因素的计算值计算目标/依赖变量。

  9. 反复执行步骤 6 至 8 直至必要次数。

  10. 记录并分析所有迭代的描述统计数据。

MCS 的威力在于,它将涉及积分微积分的复杂棘手问题转化为使用抽样算法进行描述统计的简单问题。然而,构建一个完善的 MCS 也面临许多挑战。以下是最重要的挑战:

  • 指定每个独立变量随时间如何变化。串行相关性(也称为自相关性)是变量与过去自身实例的相关性。这种相关性不是恒定的,通常随时间变化,特别是在金融市场中。

  • 指定模型中每个特征/独立变量如何受其他独立变量的影响。独立变量/风险因素之间的相关性通常随时间变化。

  • 将理论概率分布拟合到实际结果中。变量的概率分布通常随时间变化。

  • 收敛到最佳估计是非线性的,使其变慢且昂贵。它可能不会足够快地发生以对交易或投资产生任何实际价值。

可以如下解决这些挑战:

  • 严格的数据分析、领域知识和行业专业知识。你需要在制定严谨的财务建模与时间、成本以及你所生成模型的有效性之间取得平衡。

  • 将所有金融模型视为有缺陷和不完美的指导。不要让数学术语使你感到威胁或陷入虚假安全感。记住这句格言:“所有模型都是错误的,但有些是有用的。”

  • 管理风险至关重要。始终适当规模化资本位置,具备宽泛的误差边界,并在模型失效时有备用计划。

  • 显然,没有什么能替代管理经验和商业判断力。依靠常识,持怀疑态度,并对模型的假设、输入和输出提出困难问题。

从根本上讲,MCS 是一组使用概率分布的随机抽样进行近似估计或模拟模型结果不确定性的数值技术。其核心思想是利用随机性的统计特性来开发复杂确定性模型和解析难题的近似解决方案。MCS 将多维积分微积分中常常难以处理的复杂问题转化为任何从业者都能使用的描述统计问题。

当您尝试解决的问题没有解析可追踪的解时,MCS 尤为有用。它使您能够根据您的假设量化所有可能结果的概率和影响。当传统的最佳、最坏和基础情况分析对您的决策和风险管理可能不足时,应使用 MCS。MCS 使您更好地了解复杂金融模型的风险。蒙特卡洛方法是最强大的数值工具之一,对于概率机器学习至关重要。

在本章中,我们使用独立随机抽样应用了 MCS。这涉及从概率分布中随机选择样本,每个样本与任何先前样本都是独立的。当样本不相关时,这种方法用于模拟简单目标概率分布是有效的。

但是,当处理复杂的目标分布和相关样本时,我们必须使用更先进的相关随机抽样方法。这些依赖性随机抽样蒙特卡洛方法对于概率机器学习至关重要。在第六章中,我们将研究马尔可夫链蒙特卡洛(MCMC)方法,这是从具有依赖性的复杂分布中抽样的强大技术。在第七章中,我们将应用这些方法来进行金融建模,使用 PMC 库。

Brandimarte, Paolo. Monte Carlo Simulation: Applications in Financial Engineering, Risk Management, and Economics. Hoboken, NJ: John Wiley & Sons, 2014.

Cemgil, A. Taylan。“蒙特卡罗方法、马尔可夫链蒙特卡罗和粒子滤波的教程简介”,收录于《学术出版社信号处理系列:第 1 卷:信号处理理论和机器学习》,由 Paulo S. R. Diniz、Johan A. K. Suykens、Rama Chellappa 和 Sergios Theodoridis 编辑,1065–1114 页。牛津,英国:Elsevier,2014 年。

¹ Paolo Brandimarte,“蒙特卡罗方法简介”,收录于《蒙特卡罗模拟手册:金融工程、风险管理和经济应用》。霍博肯,新泽西州:John Wiley & Sons,2014 年。

² 改编自维基共享资源上的一幅图像。

³ 改编自维基共享资源上的一幅图像。

⁴ 改编自维基共享资源上的一幅图像。

⁵ 改编自维基共享资源上的一幅图像。

⁶ 改编自维基共享资源上的一幅图像。

⁷ 改编自维基共享资源上的一幅图像。

⁸ 改编自维基共享资源上的一幅图像。

⁹ A. Taylan Cemgil,“蒙特卡罗方法、马尔可夫链蒙特卡罗和粒子滤波的教程简介”,收录于《学术出版社信号处理系列:第 1 卷:信号处理理论和机器学习》,由 Paulo S. R. Diniz、Johan A. K. Suykens、Rama Chellappa 和 Sergios Theodoridis 编辑,1065–1114 页。牛津,英国:Elsevier,2014 年。

比毫无用处还要糟糕。

——杰兹·内曼,著名数理统计学家,指的是传统统计学建立者 R·A·费舍尔的统计推断方法

回顾来自第一章中,所有金融模型都受到三重错误的影响,即:模型规范错误;模型参数估计错误;以及模型未能适应其环境中结构性变化而产生的错误。因为这些错误,我们需要能够量化我们金融推断和预测中固有不确定性的动态模型。

一种称为零假设显著性检验(NHST)的统计推断方法几乎完全主导了社会和经济科学的研究和实践。在本章中,我们将探讨 NHST 及其 p 值统计如何用于测试假设和量化模型参数的不确定性。NHST 方法的深层逻辑缺陷主要是社会和经济科学中再现性危机的罪魁祸首,这里大多数发表的研究结果都是虚假的。¹ 在接下来的几节中,我们揭露 NHST 及其 p 值统计的统计诡计,并展示它如何犯有检察官谬误。这种谬误是逆谬误的另一种形式,其中条件语句错误地等同于其逆,从而违反了逆概率规则。

鉴于 p 值在量化参数不确定性方面存在深刻缺陷和滥用,² 另一种称为置信区间(CIs)的方法被正统统计学家誉为其数学严谨的替代品。不幸的是,CIs 在数据分析中也是错误的工具,因为它们并非设计用于从单一实验中进行统计推断。³ 更重要的是,在金融中应用 CIs 经常违反中心极限定理(CLT)的假设,使得 CIs 无效。在本章中,我们探讨在金融研究和实践中常见的三种应用 CIs 的错误。我们使用 Python 统计包 Statsmodels 开发了一个普通最小二乘(OLS)线性回归模型来说明这三种错误类型。我们使用回归模型的诊断测试结果来支持我们的理由,说明为什么一般情况下及特别是在金融领域不应使用 CIs 进行数据分析。

回顾逆概率规则的证明,这是对乘法规则的一个微不足道的改写。对于任何非零概率事件 H 和 D:

  • P(H and D) = P(D and H)(概率乘积交换)

  • P(H|D) × P(D) = P(D|H) × P(H)(对两边应用乘法规则)

  • P(H|D) = P(D|H) × P(H) / P(D)(逆概率规则)

注意到联合概率,即两个概率的乘积是可交换的,即单个概率的顺序不会改变其乘积的结果:

  • P(H and D) = P(D and H)

如你从上一个方程式中看到的,条件概率并不遵守交换律:

  • P(H|D) ≠ P(D|H)

这是人们在思考中常犯的逻辑错误,科学家们在使用 NHST 和 p 值时也经常犯这种错误。这被称为逆概率谬误,因为你误将条件概率 P(D|H)与其逆 P(H|D)等同起来,违反了逆概率规则。逆概率谬误也被称为转置条件谬误。举个简单的例子,考虑逆概率谬误如何从陈述 A 错误地推出陈述 B:

  • (A) 假设某人是程序员,很可能他们是分析型的。

  • (B) 假设某人是分析型的,很可能他们是程序员。

但是 P(分析型 | 程序员) ≠ P(程序员 | 分析型)。你知道,有许多许多分析型的人不是程序员,用这种方式框定的推理显得荒谬。然而,你将看到,人类通常并不擅长处理条件陈述及其逆向,尤其是在复杂情况下。事实上,检察官使用这种错误逻辑伪装在论证中已经毁了人们的生活,导致法官和陪审团做出了可怕的推理和决定。⁴ 检察官谬误的一个常见例子大致如下:

  • (A) 假设你们城市的 10 万名成年人中约有 0.1%具有与你相同的血型。

  • (B) 在谋杀案的受害者身上发现了一滴具有你的血型的血迹。

  • (C) 因此,城市检察官声称,有 99.9%的可能性你就是凶手。

这显然是荒谬的。真正令人恐惧的是,研究人员和实践者在统计推断中无意间使用了检察官的谬误逻辑,即在应用 NHST 和 p 值时。关于 NHST 的更多内容将在下一节介绍。我们在本节中揭示检察官在 NHST 方法中的错误推理,让你看看它是如何被使用的。

在发现血迹证据(E)之前,你有罪的概率(G)是 P(G) = 1/100,000,因为这个城市的每个成年人都是同等可能的嫌疑人。因此,你无罪的概率(I)是 P(I) = 99,999/100,000。即使你实际上是无辜的,血迹与你的血型匹配的概率仍然是 0.1%,仅仅因为这种血型在城市成年人口中的普遍性,这意味着 P(E | I) = 0.001。检察官需要估算你有罪的概率 P(G | E),利用先前提到的概率。检察官没有使用逆概率规则,而是使用以下错误的论点:

  • (A) 根据证据,你可能有罪也可能无罪,所以 P(G | E) + P (I | E) = 1

  • (B) 现在检察官犯了逆谬误,使得 P(I | E) = P(E | I)

  • (C) 因此,检察官的谬误给出了你的 P (G | E) = 1 – P(I | E) = 1 – P(E | I)

  • (D) 填入数字,得到 P(G | E) = 1 – 0.001 = 0.999 或 99.9%

不需要显式地使用逆概率规则,你的律师可以运用一些常识,正确地论述在这个城市有 100 名成年人(0.1% × 100,000)与你相同的血型。因此,仅凭血迹证据,你有罪的概率只有百分之一,即 99%的概率你是无辜的。这与应用逆概率规则得到的概率大致相同,因为它只是一种理解可能性的常识性方法。现在让我们这样做,计算给定证据下你无罪的概率,P(I | E):

  • (A) 逆概率规则表明 P (I | E) = P(E | I) × P(I)/ P(E)

  • (B) 我们使用总概率法则得到 P(E) = P(E | I) × P(I) + P(E | G) × P(G)

  • (C) 所以 P(I | E) = 0.001 × 0.99999 / [(0.001 × 0.99999) + ( 1 × 0.00001)] = 0.99 或 99%

在检察官将你从嫌疑人名单中除名之前,重要的是注意,现在你的律师也不应请求陪审团忽视血迹作为你有罪的弱证据,基于刚刚计算的 1%条件概率。这种错误的推理被称为辩护律师的谬误,曾在臭名昭著的奥·J·辛普森谋杀案审判中被使用。证据并不薄弱,因为在发现血迹之前,你成为凶手的几率是十万分之一。但是在发现血迹后,你有罪的几率增加了一千倍至百分之一。这确实是非常强有力的证据,没有人应该忽视它。然而,如果这是陪审团面对的唯一证据,那么它完全不足以判决定罪。检察官需要额外的犯罪证据来有效地起诉你。

现在让我们看一个现实的金融情境,反向谬误可能更难以发现。经济衰退在其发展初期通常很难识别。当我写下这一章节(2022 年秋季)时,经济学家和投资者们正在就美国经济当前是否处于衰退或即将进入衰退进行激烈的辩论。经济研究国家局(NBER),负责宣布官方衰退的组织,只能在事后确认这一事实。有时,NBER 需要超过一年的时间才能确定衰退实际开始的时间,就像 2007-09 年的大衰退一样。当然,交易员和投资者不能等那么久,他们会开发自己的指标来实时预测衰退。

假设你开发了一种专有的经济指标,它通过分析各种数据,在美国经济实际处于或即将进入衰退时,99%的时间内正确地发出衰退信号。你还注意到,即使经济不处于衰退状态,你的指标有大约 20%的时间会错误地发出衰退信号。假设你刚刚发现你的专有指标正在发出衰退信号。那么美国经济实际进入衰退的概率是多少?如果你回答是 99%,像许多人本能地做的那样,那么你就犯了反向谬误,因为 P(信号给出衰退|衰退) ≠ P(衰退给出信号)。

让我们看看为什么衰退的概率不是 99%,而是更低。假设 R 是美国经济处于衰退的情况,S 是你的指标发出我们处于衰退的事件。你有以下条件概率:

  • 当我们实际处于衰退时,你的指标发出衰退信号的概率为 P(S|R) = 0.99 或 99%。这是其真正的正向率。

  • 这意味着当我们实际处于衰退时,你的指标未能检测到衰退的概率为 P(not S|R) = 1 - P(S|R) = 0.01 或 1%。这是其假阴性率。

  • 当经济不处于衰退时,你的指标错误地警示你衰退的概率为 P(S|not R) = 0.20 或 20%。这是其假阳性率。

  • 类似地,你的指标成功检测到经济不处于衰退状态的概率为 P(not S| not R) = 1 - P(S|not R) = 0.80 或 80%。这是其真正的负向率。

这些条件概率通常以混淆矩阵的形式组织,如图 4-1 所示。

你的目标是估计 P(R|S),即在你的指标生成这样的信号时,美国经济处于衰退状态的条件概率。为了计算这个逆概率 P(R|S),你不能只让数据表明一个特定的情景。为什么?因为你的经济指标并不百分百准确。当经济不处于衰退时,它有 20% 的概率给出假的衰退信号。这种情况可能是它误判经济衰退的五种情况之一吗?此外,它有 1% 的概率在经济实际处于衰退时未能检测到衰退。所以也许我们已经在衰退中度过了几个月,而你的指标在 100 次未能发出信号的情况中的 1 次。你怎么可能仅凭数据就了解到这个特定情况?你不能,因为你对自己所处的环境一无所知。你需要利用先验知识,以便理解你进行金融实验的背景。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (31)

图 4-1. 你专有的经济衰退指标的混淆矩阵⁵

你的具体数据集并不知道美国经济衰退的普遍或罕见程度。为什么这个问题很重要?因为你不知道你的假阳性率相对于美国经济衰退发生率是否太高或太低,以至于你的指标是否有用,尽管其真阳性率为 99%。

基于过去的发生情况,你需要估计在任何给定月份美国可能处于衰退状态的概率 P(R),这被称为特定事件/情景 R 的基础率。忽略基础率将违反逆概率规则并导致无效推断,我们将会证明这一点。

让我们从实际经济数据中计算基础率。美国国家经济研究局(NBER)自 1982 年以来每个月的经济衰退时间序列可以从美联储经济数据(FRED)下载,这是一个流行且免费的数据来源,拥有超过 50 万条经济和金融时间序列。让我们使用以下 Python 代码计算美国经济衰退的月度基础率:

# Import libraries and FRED datareaderimport numpy as npimport pandas as pdimport pandas_datareader.data as pdrfrom datetime import datetimestart = datetime(1982, 1, 1)end = datetime(2022, 9, 30)# NBER business cycle classificationrecession = pdr.DataReader('USREC', 'fred', start, end)# Percentage of time the US economy was in recession since 1982round(recession['USREC'].sum()/recession['USREC'].count()*100, 2)

从这些数据来看,自 1982 年 1 月至 2022 年 9 月,美国每个月只有 9.61% 的时间处于经济衰退中。一旦你估计出 P(R),你就可以将其插入到总概率法则中,得到无条件概率或边际概率 P(S),即不考虑经济状况,从你的指标中得到衰退信号的概率。然后,我们使用 P(R) 在逆概率规则中计算出美国经济处于衰退状态的概率,条件是你的专有指标正在发出衰退信号:

  • P(S) = P(S|R) × P(R) + P(S|not R) × P(not R) = (0.99 × 0.096) + (0.2 × 0.904) = 0.276

  • P(R|S) = P(S|R) × P(R) / P(S) = (0.99 × 0.096) / 0.276 = 0.344

对于 P(S) 的计算表明,无论美国经济是否处于衰退期,你都可以预期你的指标将在 27.6%的时间内生成信号。当你看到它闪烁时,P(R|S) 表明在这些场景中只有 34.4%的情况下,信号是关于经济是否处于衰退的正确。你的信号会在 65.6%的时间内给出虚假警报 P(not R|S)。这是一个非常糟糕的指标——你最好忽略它。

这个结果看起来违反直觉,因为你的指标具有 99%的真阳性率 P(S|R)。这是因为你不能掩盖你的指标的假阳性率,漠视美国经济衰退的基础率,用一些意识形态的垃圾来说只让数据说话,这是愚蠢的。因为这样做会否认反向概率规则,并忽视关于美国经济周期的客观先验数据。这样的谬误推断和决策几乎肯定会让你很快破产或失业。

在金融和投资的实际世界中,你需要一个误报率低于基础率的信号,以使你的信号正确的概率大于 50%。为了看到这一点,让我们重新计算,假设修订后的假阳性率为 9%,略低于自 1982 年以来每个月美国经济陷入衰退的 9.61%的基础率:

  • P(S) = P(S|R) × P(R) + P(S|not R) × P(not R) = (0.99 × 0.096) + (0.09 × 0.904) = 0.176

  • P(R|S) = P(S|R) × P(R) / P(S) = (0.95 × 0.0967) / 0.174 = 0.540

有 54%的概率能正确预测经济衰退,你的指标将具有优势或更好的决策和风险管理预期。

总结一下,你的指标的真阳性率很重要。然而,同样重要的是,指标的假阳性率需要低于你抽样的总体基础特征的基础率。所以,如果你忽略你的指标在 20%的情况下生成假阳性 P(S|not R),而美国经济以 9.61%的基础率生成衰退月份,你的假阳性将以 2 比 1 的比例压倒你的真阳性。现在想想,这样做并不那么离谱,可以认为不道德的检察官、江湖郎中和伪科学家可能会愚弄你(和他们自己)的逆向谬误。

由于你的指标仍然有 34.4% 的机会是正确的,随机性也可能欺骗你,通过给你一个幸运的猜测,而美国经济最终可能陷入衰退。 然而,你对 99% 的概率估计将大大偏离,你的推理将是错误的。 基于运气、错误的推理和糟糕的概率估计的交易或投资策略会很快导致财务破产。 更糟糕的是,像基于逆错误的统计方法 NHST 这样的统计方法会给我们带来大量的假阳性研究,造成混乱和伤害。 这将毁掉我们珍视和重视的科学企业。

现代统计学的主要创始人罗纳德·费舍尔在 1920 年代引入了 NHST。 他还将卡尔·皮尔逊的 p 值引入了他的方法中,用于量化不确定性。 这是一种后数据的方法,旨在使研究人员能够根据一个与他们试图证明的假设相反的零假设对单个实验进行统计推断。

在 1925 年,费舍尔发表了荒谬而毫无根据的言论:“逆概率理论建立在错误之上,必须完全被拒绝。”⁶ 当然,费舍尔没有也不能为这一言论提供任何证据。 他怎么能呢? 那就相当于证明了除法规则是错误的。 正如前一章所述,我怀疑通过将该规则改名为业余数学家托马斯·贝叶斯后,他可以对该规则进行诋毁。 通过拒绝逆概率规则,费舍尔能够利用检察官谬误来推广他错误的歧视性观念,假装客观和“让数据自说自话。”⁷ 费舍尔在工业界的谄媚同伙和学术界的盲目信徒仅仅重复了关于逆概率理论的谎言,并将其从他们的实践和课程中驱逐出去——这个问题直到今天仍然存在。

NHST 是建立在一个称为反证法的有效命题逻辑的外观后面的。 逻辑如下:假设我们有两个命题 H 和 D,使得如果 H 为真,则 D 为真。 现在如果我们可以证明 D 为假,则我们可以合理地得出结论 H 必须为假。

按照后一种逻辑,使用 NHST 的研究人员制定了一个假设,称为零假设(H[0]),他们希望在观察任何数据之前证明其错误。 H[0] 被视为替代研究假设(H[1])的否定,而后者并未明确指定,即,H[1] = not H[0] 并且 P(H[1]) + P(not H[0]) = 1. 在这方面,他们为零假设担任了魔鬼的代言人。

零假设通常被制定为摘要统计量,比如需要比较两组数据分布的样本均值之差。重要的是要注意,研究人员不预测他们的研究假设 H[1]预计会产生的数据。

在开始实验之前,研究人员还会选择一个显著性水平,由α表示,这作为在观察数据后接受或拒绝零假设的决策阈值。传统上将α设定为 5%。α水平被声称是研究人员可能错误地拒绝真实零假设的长期概率,从而犯下第一类错误并生成假阳性结果(声称结果为真实而实际为假)。α水平是实验中最关键的元素,因为它决定了实验是否被认为具有统计学显著性。

需要注意,任何显著性水平完全是主观的,因为它不基于观察到的数据、零假设、科学原因、任何数学规则或定理。传统上使用 5%的α水平是完全任意和自证预言的仪式。由于费歇尔使用了 5%的α显著水平,研究人员和学术界盲目地效仿他的例子。这对于频率学派所吹嘘的客观性和科学严谨来说,无疑是一个让数据说话的遗漏。

假设零假设为真,研究人员计算一个称为 p 值的统计量,以量化观察到的样本数据(D)的摘要统计量或比它更极端的东西的概率:

  • p 值 = P(D|H[0])

如果 p 值 ≤ α,那么在α显著水平上将 H[0]作为假的拒绝,同时接受备择假设(H[1])作为真实。

但 NHST 的这种逻辑是极其荒谬的。通过拒绝零假设(H[0])给定测试统计量(D)的 p 值,研究人员犯了逆谬误,因为 P(H[0] | D) ≠ P(D | H[0])。参见图4-2。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (32)

图 4-2. 如何在 NHST 中使用 p 值⁸

NHST 还做了更荒谬的逻辑跳跃。NHST 通过允许研究人员接受未指定的备择研究假设来犯下检察官的谬误,而这些数据在最初并未建模。回到上一节,重新了解我们如何解开检察官的谬误。

研究者想要确定 P(H[1]|D),即在给定数据的情况下研究假设(H[1])成立的概率。但 NHST 只计算 P(D|H[0]),即假设零假设(H[0])成立的情况下观察到数据的概率。然后它使用 p 值统计量在显著性水平 α 下接受或拒绝零假设。因此,遵循 NHST 方法的研究者会犯下检察官谬误,如下所述:

  • P(H[1]|D) = 1 – P(H[0]|D)(正确陈述)

  • P(H[0]|D) = P(D|H[0])(逆向谬误)

  • P(H[1]|D) = 1 – P(D|H[0])(检察官谬误)

如何有效计算 P(H[1]|D)?在确定性世界中,证明反证法的二元逻辑需要转化为不确定世界中条件概率的微积分。这种转化由反向概率规则和全概率法则实现,正如前一节中所应用的:

  • P(H[1]|D) = 1 – P(H[0]|D)

  • P(H[1]|D) = 1 – [P(D|H[0])P(H[0])/P(D)]

  • P(H[1]|D) = 1 – [P(D|H[0])P(H[0]) / (P(D|H[0])P(H[0]) + P(D|H[1])P(H[1]))]

正如我所推导的这个方程所示,研究者需要估计 P(D|H[1]),即在研究假设 H[1] 成立的情况下观察到数据的概率。更重要的是,研究者需要估计至少一种补充假设的先验概率或基本比率,即 P(H[0]) 或 P(H[1])。因为没有基本比率,你就无法计算证据或观察到数据的无条件概率。这种谬误的逻辑正是使得关于零假设或替代研究假设的统计推断无效的原因。杰兹·奈曼,一位杰出的统计学家和费希尔的同行,称费希尔在统计推断上的工作“比无用还要糟糕”。⁹

显而易见,假设检验(NHST)——社会和经济科学教育、研究和实践的基石——犯了检察官谬误。难怪大多数使用 NHST 发表的研究发现都是错误的。NHST 浪费了数十亿的研究经费,败坏了科学的声誉,并通过其错误的阳性研究结果严重损害了人类利益。尽管多次失败地试图废除或改革它超过半个世纪,但 NHST 仍然在社会和经济科学领域造成严重破坏,产生了太多错误的研究主张至今仍然存在。¹⁰ 现在是时候拒绝 NHST,因为它“是建立在错误之上的,必须完全拒绝。”¹¹

许多社会和经济科学家建议用置信区间理论替代 p 值,后者被吹捧为一种更数学严谨的量化不确定性的方式。因此,让我们研究置信区间理论,看看它是否有用。

正如前面边栏中提到的,杰尔齐·尼曼开发了一种旨在支持工业质量控制的统计决策理论。他的统计理论提供了一个决策框架,旨在通过多次实验来平衡长期成本与收益,控制类型 I(假阳性)和类型 II(假阴性)错误。尼曼故意忽略了 p 值,因为它违反了基本的概率逻辑,是一个无意义的概念。

1937 年,尼曼开发了置信区间理论作为统计推断的 前数据理论,旨在在从总体分布中抽取数据之前,为统计程序提供长期平均特性。尼曼非常清楚地表明,他的置信区间理论并非旨在支持在单个科学实验中从数据中进行推断的 后数据理论。尽管今天在社会和经济科学的研究与实践中如何应用,但置信区间理论并非统计推断的 后数据理论

置信区间理论量化了对总体参数估计的不确定性。例如,如图 4-3 所示的 90% 置信区间 (CI),通常理解为参数的真值有 90% 的概率落在区间 [–a, a] 内。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (33)

图 4-3. 区间 [–a, a] 被称为 90% 置信区间¹³

费歇尔批评尼曼的置信区间理论,称其不符合科学家的需求,可能会导致从数据中得出互相矛盾的推断。费歇尔对置信区间理论的批评已被证明是有道理的,但并非因为尼曼的置信区间理论在逻辑或数学上存在缺陷,正如费歇尔所说的那样。

让我们来检查由于常见做法误用尼曼的置信区间理论作为后数据理论而产生的三类错误——即基于特定数据样本推断总体参数。使用置信区间产生的三种错误类型包括:

  • 对总体参数进行概率声明

  • 对特定置信区间进行概率声明

  • 对抽样分布进行概率声明

频率学概率和统计推断的哲学对金融经济学的理论和实践产生了深远影响,特别是置信区间(CIs)。为了探讨置信区间在我们研究中的意义,我们从讨论简单市场模型的基本概念及其与金融理论的关系开始下一小节。随后,我们使用 Python 中的统计包 Statsmodels 构建股票回报的普通最小二乘线性回归模型,以估计我们市场模型的参数。这个实际例子使我们能够说明置信区间在金融数据分析中的实际应用。在接下来的章节中,我们探讨为什么置信区间在逻辑上不一致且实际上无用。

股票的单因子市场模型(MM)

现代投资组合理论假设理性、风险厌恶的投资者要求风险溢价,即超过无风险资产(如国库券)的回报,以投资风险资产如股票。股票的单因子市场模型(MM)基本上是股票的实现超额回报(结果或因变量)与单一风险因子的实现超额回报(预测或自变量)之间的线性回归模型,如此处所示:

  • ( R − F ) = α + β × ( M − F ) + ϵ

其中 R 是股票的实现回报率,F 是无风险资产的回报率,例如美国国债证券,M 是市场投资组合的实现回报率,例如标准普尔 500 指数,α(阿尔法)是预期的股票特定回报率,β(贝塔)是与市场的系统风险暴露水平,ε(伊普西隆)是意外的股票特定回报率。股票的贝塔值表示对整体市场投资组合回报率变化 1%的平均百分比回报响应。例如,如果一支股票的贝塔为 1.4,并且标准普尔 500 指数下跌了 1%,则预计股票平均下跌–1.4%。见 Figure4-4。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (34)

图 4-4. 市场模型显示苹果公司(AAPL)的超额回报与标准普尔 500 指数的超额回报回归关系

注意,资产的市场模型(MM)与其资本资产定价模型(CAPM)不同。CAPM 是现代金融的关键经济均衡模型,根据其贝塔或对整体市场的系统风险暴露预测资产的预期回报。与 CAPM 不同,资产的 MM 是一个关于实现回报的统计模型,其制定中包括特异风险项 ɑ 和误差项 ɛ

根据 CAPM,资产的 MM 的 alpha 有一个预期值为零,因为市场参与者被假设持有有效的投资组合,可以分散任何特定资产的特异风险。市场参与者只因承担系统性风险而受到奖励,因为它无法被分散掉。与 OLS 回归模型的一般假设一致,CAPM 和 MM 都假设残差 ɛ 的期望值将服从零均值和恒定有限方差的正态分布。

一个依赖现代投资组合理论和实践的金融分析师假设有一个基础的、时间不变的、随机过程来生成苹果公司的价格数据,这可以被建模为 OLS 线性回归 MM。这个 MM 将有人口参数,alpha 和 beta,它们有真正的、固定的值,可以从苹果的收盘价数据的理性随机样本中估计出来。

使用 Statsmodels 的简单线性回归

让我们运行我们的 Python 代码,基于五年的苹果每日收盘价格样本来估算 alpha 和 beta。只要在公式中一致使用,我们可以使用任何持有期回报。使用每日持有期是方便的,因为它可以使用 pandas 数据帧轻松进行价格回报计算:

# Install Yahoo finance package!pip install yfinance# Import relevant Python packagesimport statsmodels.api as smimport pandas as pdimport yfinance as yfimport matplotlib.pyplot as pltplt.style.use('seaborn')from datetime import datetime#Import financial datastart = datetime(2017, 8, 3)end = datetime(2022, 8, 6)# S&P 500 index is a proxy for the marketmarket = yf.Ticker('SPY').history(start=start, end=end)# Ticker symbol for Apple, the most liquid stock in the worldstock = yf.Ticker('AAPL').history(start=start, end=end)# 10 year US treasury note is the proxy for risk free rateriskfree_rate = yf.Ticker('^TNX').history(start=start, end=end)# Create dataframe to hold daily returns of securitiesdaily_returns = pd.DataFrame()daily_returns['market'] = market['Close'].pct_change(1)*100daily_returns['stock'] = stock['Close'].pct_change(1)*100# Compounded daily rate based on 360 days # for the calendar year used in the bond marketdaily_returns['riskfree'] = (1 + riskfree_rate['Close']) ** (1/360) - 1# Plot and summarize the distribution of daily returnsplt.hist(daily_returns['market']), plt.title('Distribution of Market (SPY) Daily Returns'), plt.xlabel('Daily Percentage Returns'), plt.ylabel('Frequency'), plt.show()# Analyze descriptive statisticsprint("Descriptive Statistics of the Market's daily percentage returns:\n{}".format(daily_returns['market'].describe()))plt.hist(daily_returns['stock']), plt.title('Distribution of Apple Inc. (AAPL) Daily Returns'), plt.xlabel('Daily Percentage Returns'), plt.ylabel('Frequency'), plt.show()# Analyze descriptive statisticsprint("Descriptive Statistics of the Apple's daily percentage returns:\n{}".format(daily_returns['stock'].describe()))plt.hist(daily_returns['riskfree']), plt.title('Distribution of the riskfree rate (TNX) Daily Returns'), plt.xlabel('Daily Percentage Returns'), plt.ylabel('Frequency'), plt.show()# Analyze descriptive statisticsprint("Descriptive Statistics of the 10 year note daily percentage returns:\n{}".format(daily_returns['riskfree'].describe()))# Examine missing rows in the dataframemarket.index.difference(riskfree_rate.index)# Fill rows with previous day's risk-free rate since daily rates # are generally stabledaily_returns = daily_returns.ffill()# Drop NaNs in first row because of percentage calculationsdaily_returns = daily_returns.dropna()# Check dataframe for null valuesdaily_returns.isnull().sum()# Check first five rows of dataframedaily_returns.head()# AAPL's Market Model based on daily excess returns# Daily excess returns of AAPLy = daily_returns['stock'] - daily_returns['riskfree']# Daily excess returns of the marketx = daily_returns['market'] - daily_returns['riskfree']# Plot the dataplt.scatter(x,y)# Add the constant vector to obtain the inteceptx = sm.add_constant(x)# Use ordinary least squares algorithm to find the line of best fitmarket_model = sm.OLS(y, x).fit()# Plot the line of best fitplt.plot(x, x*market_model.params[0]+market_model.params['const'])plt.title('Market Model of AAPL'), plt.xlabel('SPY Daily Excess Returns'), plt.ylabel('AAPL Daily Excess Returns'), plt.show();# Display the values of alpha and beta of AAPL's market modelprint("According to AAPL's Market Model, the security had a realized Alpha of {0}% and Beta of {1}".format(round(market_model.params['const'],2), round(market_model.params[0],2)))# Summarize and analyze the statistics of your linear regressionprint("The Market Model of AAPL is summarized below:\n{}".format(market_model.summary()));

运行我们的 Python 代码后,一个金融分析师会估计 alpha 为 0.071%,beta 为 1.2385,如 Statsmodels 摘要输出所示:

The Market Model of AAPL is summarized below:OLS Regression Results=========================================================================Dep. Variable: y R-squared: 0.624Model: OLS Adj. R-squared: 0.624Method: Least Squares F-statistic: 2087.Date: Sun, 07 Aug 2022 Prob (F-statistic): 2.02e-269Time: 06:28:33 Log-Likelihood: -2059.8No. Observations: 1260 AIC: 4124.Df Residuals: 1258 BIC: 4134.Df Model: 1Covariance Type: nonrobust ======================================================================== coef std err t P>|t| [0.025 0.975]const 0.0710 0.035 2.028 0.043 0.002 0.1400 1.2385 0.027 45.684 0.000 1.185 1.292========================================================================Omnibus: 202.982 Durbin-Watson: 1.848Prob(Omnibus): 0.000 Jarque-Bera (JB): 1785.931Skew: 0.459 Prob(JB): 0.00Kurtosis: 8.760 Cond. No. 1.30======================================================================Warnings:[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Alpha 和 Beta 的置信区间

显然,alpha 和 beta 的这些点估计将取决于样本大小以及在我们的随机样本中使用的起始日期和结束日期,每个估计都反映了苹果在该特定时间段内的特异价格波动。尽管人口参数 alpha 和 beta 是未知的,可能是不可知的,但金融分析师认为它们是随机过程的真实常数。正是对苹果价格数据的随机抽样引入了对常数人口参数估计的不确定性。频率派将数据及其派生的每个统计量,如 CIs,视为随机变量。金融分析师从随机样本中计算 CIs,以表达围绕常数人口参数点估计的不确定性。

置信区间提供了一个值范围,附有概率值或显著性水平。例如,在苹果的 MM 中,财务分析师可以通过计算 alpha 和 beta 的标准误差(SE)来计算 95%置信区间。由于假定残差ɛ服从未知且恒定方差的正态分布,需要使用 t 统计量来计算置信区间。然而,由于样本量大于 30,t 分布收敛于标准正态分布,t 统计量的值与标准正态分布的 Z 分数相同。因此,分析师会将每个 SE 乘以+/– 95%置信区间的 Z 分数,然后将结果加到 alpha 和 beta 的点估计上以获取其置信区间。从之前的 Statsmodels 回归结果来看,alpha 和 beta 的 95%置信区间如下计算:

  • α+/–(SE × t-statistic / Z-score for 95% CI)= 0.0710 % +/– (0.035 % × 1.96) = [0.002%, 0.140%]

  • β+/-(SE × t-statistic / Z-score for 95% CI)= 1.2385 +/– (0.027 × 1.96) = [1.185, 1.292]

要理解这三个错误,我们需要从现代统计学家的角度理解概率和统计推断。正如在第二章中讨论的那样,例如费希尔和内曼等频率主义者声称概率是事件的自然静态属性,并且作为其长期相对频率来经验测量。

频率主义者假设生成数据的潜在随机过程具有长期不变的统计特性:概率分布是静止的遍历过程。即使这些潜在过程的参数可能是未知或无法知道的,频率主义者认为这些参数是恒定的并具有“真实”的值。可以从数据的随机样本中估计总体参数。数据的随机性导致对真实的固定总体参数的估计存在不确定性。

大多数人认为从 95%置信区间得到的是真实总体参数在特定数据样本计算的特定区间内的 95%概率。例如,根据 Statsmodels 的结果,你可能会认为苹果的贝塔值的真实值有 95%的概率在[1.185, 1.292]的范围内。严格来说,你对这样的置信区间的解释是错误的。

根据Neyman 的置信区间理论,95%的置信区间实际上意味着,如果我们从苹果公司潜在的股票回报分布中抽取 100 个随机样本,我们将得到 100 个不同的置信区间,我们可以确信其中 95 个将包含真实的总体参数在其限制范围内。然而,我们不会知道这 100 个置信区间中的具体 95 个包含了总体参数的真实值,以及哪 5 个没有包含。我们可以肯定的是,只有包含总体参数的置信区间与不包含总体参数的置信区间的比率在长期抽样中接近 95%。

温斯顿·丘吉尔在谈论 CIs 时,可以说他也在谈论俄罗斯的世界战略,他说:“这是一个谜团,包裹在谜中,里面还有一个谜题;但或许有一把钥匙。”事实上,在本章节中我们确实提供了一个关键。让我们探讨在金融数据分析中误用置信区间作为后数据理论时产生的三重谬误。

关于总体参数概率性声明的错误

记住,频率主义统计学家认为总体参数是一个具有“真实”值的常数。这个值可能是未知的,甚至是无法知道的。但这并不改变其值是固定的事实。因此,一个总体参数要么在一个置信区间内,要么不在。例如,如果你相信资本市场高度有效的理论,你也会相信 alpha 的真实值是 0。现在 0 明显不在先前 Statsmodels 回归结果中计算的[0.002%,0.14%]的区间内。因此,alpha 在我们的置信区间内的概率是 0%,而不是 95%或其他任何值。

因为频率主义者认为总体参数是恒定的,所以对它们不会有任何歧义:在任何置信区间内总体参数的真实值的概率要么是 0%,要么是 100%。因此,在频率主义的概率解释下对任何总体参数做出概率性的声明是错误的。

关于特定置信区间概率性声明的错误

文献和教科书中更复杂的置信区间解释如下:假设我们要重复进行线性回归多次,区间[1.185, 1.292]将大约 95%的时间内包含 beta 的真实值。

记住,频率主义世界中的概率仅适用于可重复事件的长期频率。根据定义,一个唯一事件(如特定置信区间)的概率在频率主义者看来是未定义的,毫无意义。因此,频率主义者不能为我们计算的特定 alpha 和 beta 区间之一分配 95%的概率。换句话说,我们不能从特定置信区间推断出太多信息。

但这正是我们的主要目标!置信区间的这种限制使得它对于希望从他们的具体数据样本中推断总体参数的数据科学家来说毫无用处:即,他们想要进行后数据推断。但是,正如之前提到的,内曼打算他的置信区间理论仅用于基于长期频率的前数据推断。

在进行抽样分布的概率性声明时出现的错误

金融分析师如何证明在研究和实践中对置信区间(CIs)做出这些概率性声明的合理性?他们如何解决这个难题?以一种常识性的方式应用置信区间的关键是什么?统计学家可以在理论上或实践中,从总体分布中重复抽取数据。从许多不同的随机样本计算出的样本均值的点估计产生了一个称为样本均值的抽样分布的模式。抽样分布使频率主义者能够调用中心极限定理(CLT)来计算样本点估计的总体参数的不确定性。特别地,正如在前一章中讨论的那样,CLT 指出,如果从具有有限均值和方差的总体中随机抽取许多样本,则样本均值的抽样分布会渐近地趋于正态分布。潜在总体分布的形状无关紧要,只能影响到正态分布的这种不可避免的收敛速度。请参见前一章中的图 3-7。

频率主义概率的定义为可重复事件的长期相对频率与 CLT 从总体分布中重复抽取随机样本以生成其抽样分布的重复绘制相 resonates 。因此,统计学家通过调用 CLT 并声称他们的抽样分布几乎肯定会收敛到正态分布,而不管潜在总体分布的形状如何来解决这个难题。这也使他们能够使用标准正态分布的 Z 分数来计算置信区间,就像前面的 Statsmodels 回归结果所示的那样。这就是将置信区间用作后数据理论的关键。

然而,作为将我们的资本置于风险中的财务主管和投资者,我们需要仔细阅读中心极限定理(CLT)的细则:具体来说,我们需要注意其假设,即基础总体分布需要有有限的均值和方差。虽然大多数分布满足这两个条件,但在金融和经济领域尤其存在许多不满足这些条件的分布。对于这些类型的总体分布,CLT 不能被用来支撑置信区间。这把钥匙对这些门没有用—它不是魔法钥匙。例如,柯西分布和帕累托分布是具有无限均值或方差的厚尾分布。正如在前一章中提到并值得重复的是,柯西(或洛伦兹)分布看起来与正态分布非常相似,但由于其无限方差,尾部非常厚。见图4-5。

Statsmodels 计算的诊断测试在图4-4 中告诉我们,股票市场已经破坏了我们的 MM 的关键假设。具体来说,Bera-Jarque 和 Omnibus 正态性测试显示,残差ɛ几乎可以肯定不是正态分布的概率为零。这个分布是正偏斜的,尾部非常厚—其峰度约为标准正态分布的三倍。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (35)

图4-5. 比较柯西分布与正态分布¹⁴

增大样本量会使残差分布更加正态吗?这是否符合金融理论的说法?让我们使用 25 年的苹果每日收盘价格数据来运行我们的 MM。以下是结果:

The Market Model of AAPL is summarized below:OLS Regression Results=========================================================================Dep. Variable: y R-squared: 0.270Model: OLS Adj. R-squared: 0.270Method: Least Squares F-statistic: 2331.Date: Sun, 07 Aug 2022 Prob (F-statistic): 0.00Time: 07:03:34 Log-Likelihood: -14187.No. Observations: 6293 AIC: 2.838e+04Df Residuals: 6291 BIC: 2.839e+04Df Model: 1Covariance Type: nonrobust ======================================================================== coef std err t P>|t| [0.025 0.975]const 0.1063 0.029 3.656 0.000 0.049 0.1630 1.1208 0.023 48.281 0.000 1.075 1.166========================================================================Omnibus: 2566.940 Durbin-Watson: 2.020Prob(Omnibus): 0.000 Jarque-Bera (JB): 66298.825Skew: -0.736 Prob(JB): 0.00Kurtosis: 53.262 Cond. No. 1.25======================================================================Warnings:[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

所有诊断测试结果清楚地表明,股票市场已经摧毁了“诺贝尔奖获得者”CAPM(以及相关的 MM)理论。即使包含了四分之一世纪的每日收盘价格样本量,我们模型的残差分布也比以前更加非正态。现在它非常负偏斜,峰度非常高—几乎是标准正态分布的 18 倍。尤其值得注意的是,我们 25 年贝塔的置信区间是[1.075, 1.166],这超出了我们 5 年贝塔的置信区间[1.185,1.292]。事实上,AAPL 的贝塔似乎正在趋向于 1,即标准普尔 500 的贝塔值。

调用某些 CLT 版本并声称我们回归模型的残差或系数的抽样分布具有渐近正态性似乎是徒劳无益,如果不是无效的话。有大量经济研究表明,所有金融资产价格回报的底层分布都没有有限的方差。金融分析师不应如此确信他们可以召唤 CLT 的力量并在其置信区间计算中断言渐近正态性。此外,他们需要确保渐近正态性的收敛速度是相当快的,因为正如著名经济学家梅纳德·凯恩斯通过他的个人股权投资艰难地发现的,“市场可以在你破产之前保持不理性很长时间。”¹⁵ 对于一笔股票交易来说,一个季度已经是一个永恒了。

因为本章节详细讲述了 NHST、p 值和置信区间的错误,我对它们(或 CAPM)毫无信心,并且在我的金融数据分析中不使用它们。基于 Statsmodels 或任何其他软件应用程序计算的经验主义 MM 的估计置信区间α和β,我不会浪费一分钱进行交易或投资。任何使用 NHST、p 值或置信区间的社会或经济研究我也会直接扔进垃圾桶,因为那里才是垃圾应该待的地方,而不应该被回收利用。

由 Neyman 和 Pearson 发展的统计假设检验只有在像工业质量控制这样的机械过程中作为前数据决策理论才有意义。Fisher 和 Neyman 竞争的统计理论混合物是由非统计学家(或无能的统计学家)创造的,他们为了取悦两个互相敌对的竞争对手,结果创造了一个毫无意义、令人困惑的混合体。当然,这并没有阻止数据科学家盲目地使用 NHST、p 值和置信区间,或者学术界将其教授为一个数学严谨的后数据统计推断理论。

置信区间并不适用于从单一实验中进行人口参数的后数据推断。将置信区间作为后数据理论使用在认识论上是有缺陷的。它公然违反了频率学概率的脆弱哲学基础,而频率学概率正是其基础。然而,正统统计学家们为此创造了一种扭曲的、伪科学的理由来做这件事。如果 CLT 适用于您的数据分析——即底层人口分布具有有限均值和方差,从而导致其抽样分布渐近正态性,那么您可能可以滥用 Neyman 的置信区间理论而逃脱处罚。

However, it is common knowledge among academics and practitioners that price returns of all financial assets are not normally distributed. It is likely that these fat tails are a consequence of infinite variances of their underlying population distributions. So the theoretical powers of the CLT cannot be utilized by analysts to rescue CIs from the non-normal, fat-tailed, ugly realities of financial markets. Even if asymptotic normality is theoretically possible in some situations, the desired convergence may not be quick enough for it to be of any practical value for trading and investing. Financial analysts should heed another of Keynes’s warnings when hoping for asymptotic normality of their sampling distributions: “In the long run we are all dead.”¹⁶ And almost surely broke.

Regardless, financial data analysts using CIs as a postdata theory are making invalid inferences and grossly misestimating the uncertainties in their point estimates. Unorthodox statistical thinking, ground-breaking numerical algorithms, and modern computing technology make the use of “worse than useless” NHST, p-values, and CI theory in financial data analysis unnecessary. The second half of this book is dedicated to exploring and applying epistemic inference and probabilistic machine learning to finance and investing.

Aldrich, John. “R. A. Fisher on Bayes and Bayes’ Theorem.” International Society for Bayesian Analysis 3, no. 1 (2008): 161–70.

Colquhoun, David. “An Investigation of the False Discovery Rate and the Misinterpretation of p-values.” Royal Society Open Science 1, no. 3 (November 2014). http://doi.org/10.1098/rsos.140216.

Gigerenzer, Gerd. “Statistical Rituals: The Replication Delusion and How We Got There.” Advances in Methods and Practices in Psychological Science (June 2018): 198–218. https://doi.org/10.1177/2515245918771329.

Harvey, Campbell R., Yan Liu, and Heqing Zhu. “…And the Cross-Section of Expected Returns.” The Review of Financial Studies 29, no. 1 (January 2016): 5–68. https://www.jstor.org/stable/43866011.

Ioannidis, John P. A. “Why Most Published Research Findings Are False.” PLOS Medicine 2, no. 8 (2005), e124. https://doi.org/10.1371/journal.pmed.0020124.

Lambdin, Charles. “Significance Tests as Sorcery: Science Is Empirical—Significance Tests Are Not.” Theory & Psychology 22, no. 1 (2012): 67–90. https://doi.org/10.1177/0959354311429854.

Lenhard, Johannes. “Models and Statistical Inference: The Controversy Between Fisher and Neyman-Pearson.” The British Journal for the Philosophy of Science 57, no. 1 (2006): 69–91. http://www.jstor.org/stable/3541653.

Louçã, Francisco. “通过互动实现解放——优生学和统计学的交汇与分歧。” Journal of the History of Biology 42, no. 4 (2009): 649–684。http://www.jstor.org/stable/25650625

Morey, R. D., R. Hoekstra, J. N. Rouder, M. D. Lee, and E. J. Wagenmakers。“对置信区间放置信任的谬误。” Psychonomic Bulletin & Review 23, no. 1 (2016): 103–123。https://doi.org/10.3758/s13423-015-0947-8

Szucs, Dénes, and John P. A. Ioannidis。“当零假设显著性检验不适合研究:重新评估。” Frontiers in Human Neuroscience 11, no. 390 (2017 年 8 月). doi: 10.3389/fnhum.2017.00390。

Thompson, W. C., and E. L. Schumann。“在刑事审判中对统计证据的解释:检察官谬误与辩护律师谬误。” Law and Human Behavior 11, no. 3 (1987): 167–187。http://www.jstor.org/stable/1393631

Jaynes, E. T. 概率论:科学逻辑. Edited by G. Larry Bretthorst. New York: Cambridge University Press, 2003.

McElreath, Richard. 统计重新思考:贝叶斯方法与 R 和 Stan 实例. Boca Raton, FL: Chapman and Hall/CRC, 2016.

Leamer, Edward E. “让计量经济学摆脱空洞”,The American Economic Review 73, No. 1 (1983 年 3 月): 31-43。

¹ John P. A. Ioannidis,“为什么大多数发表的研究结果是错误的”,PLOS Medicine 2, no. 8 (2005), e124,https://doi.org/10.1371/journal.pmed.0020124;Campbell R. Harvey, Yan Liu, and Heqing Zhu,“……及预期回报的横截面”,The Review of Financial Studies 29, no. 1 (January 2016): 5–68,https://www.jstor.org/stable/43866011

² David Colquhoun,“假阳性发现率及 p 值误解的调查”,Royal Society Open Science (2014 年 11 月),http://doi.org/10.1098/rsos.140216;Charles Lambdin,“显著性检验如何成为巫术:科学是经验主义的,显著性检验却不是”,Theory & Psychology 22, no. 1 (2012): 67–90,https://doi.org/10.1177/0959354311429854

³ R. D. Morey, R. Hoekstra, J. N. Rouder, M. D. Lee, and E. J. Wagenmakers,“对置信区间放置信任的谬误”,Psychonomic Bulletin & Review 23, no. 1 (2016): 103–123,https://doi.org/10.3758/s13423-015-0947-8

⁴ W. C. Thompson 和 E. L. Schumann,“在刑事审判中对统计证据的解释:检察官谬误和辩护律师谬误,” 法律与人类行为 11, no. 3 (1987): 167–187, http://www.jstor.org/stable/1393631

⁵ 改编自维基共享资源上的一张图片。

⁶ 引自约翰·奥尔德里奇(John Aldrich)的文章,“R. A. Fisher on Bayes and Bayes’ Theorem,” 国际贝叶斯分析学会 3, no. 1 (2008): 163。

⁷ Francisco Louçã,“通过互动实现解放——优生学和统计学的交汇与分歧,” 生物学史杂志 42, no. 4 (2009): 649–684, http://www.jstor.org/stable/25650625

⁸ 改编自维基共享资源上的一张图片。

⁹ 约翰内斯·伦哈德(Johannes Lenhard),“模型和统计推断:费舍尔和内曼-皮尔逊之间的争议,” 英国科学哲学杂志 57, no. 1 (2006): 69–91, http://www.jstor.org/stable/3541653

¹⁰ Dénes Szucs 和 John P. A. Ioannidis,“当零假设显著性检验不适用于研究时:重新评估,” 人类神经科学前沿 11, no. 390 (2017 年 8 月), doi: 10.3389/fnhum.2017.00390。

¹¹ 奥尔德里奇(Aldrich),“R. A. Fisher on Bayes and Bayes’ Theorem,” 163。

¹² 格尔德·吉格伦泽尔(Gerd Gigerenzer),“统计仪式:复制错觉以及我们是如何到达这里的,” 心理科学方法与实践进展 (2018 年 6 月): 198–218, https://doi.org/10.1177/2515245918771329

¹³ 改编自维基共享资源上的一张图片。

¹⁴ 改编自维基共享资源上的一张图片。

¹⁵ “凯恩斯的投机活动,” 约翰·梅纳德·凯恩斯(John Maynard Keynes),访问于 2023 年 6 月 23 日,https://www.maynardkeynes.org/keynes-the-speculator.html

¹⁶ 保罗·雷(Paul Lay),“长期看凯恩斯(Keynes in the Long Run)”,《今日历史》(History Today),访问于 2023 年 6 月 23 日,https://www.historytoday.com/keynes-long-run

概率论不过是普通常识化为计算而已。

—皮埃尔-西蒙·拉普拉斯,认知统计学和概率推理的主要贡献者

回顾来自第二章的逆概率规则,该规则指出,给定关于模型参数的假设 H 和一些观察到的数据集 D:

P(H|D) = P(D|H) × P(H) / P(D)

仅仅是这个乘法规则的微不足道的改写就是一般认知推理和概率机器学习(PML)复杂结构建立的基础,这简直令人惊叹。这是为什么这两种结构在数学上是严谨和逻辑上一致的根本原因。在更深入的检验中,我们将看到逆概率规则以深远方式结合了条件概率和无条件概率。

在本章中,我们将分析和反思规则中的每个术语,以更好地理解它。我们还将探讨这些术语如何满足我们在第一章中概述的下一代金融和投资机器学习框架的每一个要求。

将逆概率规则应用于现实问题有两个非常重要的原因:逻辑和计算。正如在第四章中解释的那样,我们的大脑在处理概率时并不擅长,特别是条件概率。还提到了 P(D),逆概率规则中的分母,对于大多数现实问题而言是解析上难以处理的归一化常数。20 世纪突破性数值算法的发展和廉价计算能力的普及在很大程度上解决了这个问题。

我们将在下一章讨论应用逆概率规则的计算挑战。在本章中,我们通过高收益债券领域的一个简单例子解决了适用该规则的逻辑挑战。所有的 PML 模型,无论其复杂性如何,都遵循应用逆概率规则的相同过程。

推断模型参数只是解决方案的一半。我们希望使用我们的模型进行预测和模拟数据。先验和后验预测分布是我们模型的数据生成分布,它们与逆概率规则相关并从中派生。我们还讨论这些预测分布如何通过基于模型假设和观察数据生成新数据,从而实现 PML 模型输出的前向不确定性传播。

你可能想回到 第二章 中的反转概率部分,复习一下蒙提霍尔问题中如何分析和计算概率的记忆。我们计算的反向概率规则中的每个术语都有特定的名称,如后验概率分布或似然函数,并在概率机器学习模型的机制中担任特定的角色。重要的是,我们理解这些术语,以便能够将概率机器学习机制应用于解决金融和投资中的复杂问题。

P(H) 是先验概率分布,它编码了关于模型参数的当前知识状态,并量化了在观察任何新数据之前的认知不确定性。这些参数的先验知识可能基于逻辑、先前的经验研究基础率、专家判断或机构知识。它还可以明确表达我们的无知。

在蒙提霍尔问题中,我们对汽车可能位于哪扇门(S[1]、S[2]、S[3])的先验概率分布为 P(S[1], S[2], S[3]) = (⅓, ⅓, ⅓)。这是因为在我们选择门或观察数据集 D 之前,最合理的假设是汽车可能在这三扇门中的任何一扇后面。

所有模型都有明示和隐含的假设和约束条件,需要人类判断。请注意,先验概率分布是明确声明的模型假设,并以数学严谨的方式表达。它始终可以被质疑或更改。频率主义者的抱怨是,先验知识以先验概率分布的形式可能被滥用,用来支持似是而非的推论。这确实是可能的,就像所有模型一样,概率模型也无法免受 GIGO(垃圾进,垃圾出)病毒的影响。认知推断可能对先验概率分布的选择敏感。然而,关于先验的分歧并不证明不诚实或不一致的推断。更重要的是,如果有人想要不诚实,明确声明的先验概率分布将是操纵推论的最后一地方。此外,随着模型吸收更多数据,认知推断的机制会自动减少模型先验的权重分配。鉴于其对先验分布的敏感性,这是概率模型的重要自我修正机制。

回想一下来自第二章的无免费午餐(NFL)定理,它说如果我们希望我们的算法表现最佳,我们必须通过先验知识和假设了解我们特定问题领域及其基础数据分布。由于这种明确的透明度,对使用先验概率分布进行统计推断的普遍反对只是意识形态上的大放厥词,如果不是彻头彻尾的愚蠢的话。根据 NFL 定理,这也是危险和风险的。如果我们不包括关于问题领域的先验知识,我们的算法可能最终表现不如随机猜测。风险在于性能可能更差,并造成无法弥补的损害。

要确保你的先验概率分布不要将任何模型参数的概率分配为零是至关重要的。这是因为之后观察到的任何矛盾数据都无法改变这个零值。当然,除非你确信这个关于零值参数的具体假设在宇宙存在的年龄内不可能实现。这是物理学中通常接受的不可能事件的定义,因为在无限的空间和时间里任何事情都是可能的。

在金融领域,面对富有创造力、情感丰富和自由意志的人类,你会明智地对被认为不可能的事情设定更高的标准。例如,没有人认为负名义利率是可能的或者有任何意义的。请注意,名义利率大约等于实际利率加通货膨胀率。因此,负名义利率意味着你付给别人借款的资本,并且有义务在贷款期间继续支付他们的利息费用。荒谬吧!正如在第二章中提到的,长达十多年来,欧洲和日本政府债券市场上有 15 万亿美元的债券以负名义利率交易!

P(D|H) 是似然函数,它给出了在给定关于模型参数的特定假设 H 的情况下观察到样本数据 D 的条件概率。它量化了样本到样本数据在参数值 H 的特定假设下的随机不确定性。这是用于传统统计学中的抽样分布的相同似然函数。

在蒙特霍尔问题中,我们计算了三个似然函数:P(D | S[1]), P(D | S[2]), P(D | S[3])。回想一下,通过 P(D|S[1]) 我们指的是在汽车实际上在门 1 后面的情况下观察数据集 D 的概率,依此类推。这些似然函数给出了在参数 S[1], S[2], S[3] 下观察到我们的数据集 D 的条件概率。

需要注意的是,似然函数是一个函数而不是概率分布,因为其曲线下的面积通常不等于 1。这是因为似然函数是在不同假设(S[1]、S[2]、S[3])的条件下计算的。从蒙蒂霍尔似然函数计算的概率是 P(D | S[1]) = ½,P(D | S[2]) = 1,P(D | S[3]) = 0,总和为 1.5。

P(D) 是边际似然函数 或观察到的特定数据样本 D 的无条件概率,平均值为所有可能生成它的参数或情景。它结合了我们似然函数产生的不确定性与我们关于可能生成数据样本 D 的参数值的先验不确定性。

根据第二章的全概率法则,计算我们特定数据集 D 的无条件观察概率,即当蒙蒂在我们选择第 1 号门后打开第 3 号门展示一只山羊时。该公式将我们的先验概率和似然函数组合如下:

  • P(D) = P(D|S[1]) × P(S[1]) + P(D|S[2]) × P(S[2]) + P(D|S[3]) × P(S[3])

  • P(D) = [½ × ⅓] + [1 × ⅓ ]+ [0 × ⅓ ] = ½

通常,观察数据 D 的边际似然性被计算为在所有可能生成观察数据的参数上的加权平均,权重由先验概率分布提供。使用全概率法则,一般情况下,P(D) 被计算为:

  • P(D) = i P ( D | H i ) × P ( H i ) for discrete functions

  • P(D) = P ( D | H ) × P ( H ) d H for continuous functions

根据第三章,概率加权平均和被称为期望值的算术平均数是等效的。因此,P(D) 计算了基于我们模型参数的所有先验不确定估计来观察特定数据样本 D 的期望。我们观察到的特定数据样本的这种先验期望均值充当一个通常在现实世界问题中难以解析求解的归一化常数。

P(H|D) 是后验概率分布,也是我们推理的目标。它基于观察到的样本数据 D 更新我们对模型参数的先验知识。它结合了我们参数的先验认知不确定性和样本数据的随机不确定性。在蒙提霍尔问题中,我们计算了后验概率 P(S[2] | D),即我们的数据集 D 给出车在门 2 后的概率:

  • P(S[2]|D) = P(D|S[2]) × P(S[2]) / P(D)

  • P(S[2]|D) = [1 × ⅓ ] / ½ = ⅔

后验概率分布可以被视为我们先验知识与观察到的样本数据的逻辑和动态整合。当数据稀疏或噪声较大时,后验概率分布会受到先验概率分布的主导,并且似然函数的影响会相对较小。这在我们对先验知识有信心并希望在面对稀疏或噪声数据时进行推理时非常有用。

相反,随着数据的积累,后验分布将越来越受到似然函数的影响。这种学习行为是可取的,因为它意味着我们的推理需要在收集更多信息时调和观察到的数据与我们的先验知识。数据可能会加强和精炼我们的先验知识,也可能由于数据太嘈杂或稀疏而未添加新知识。当数据无法调和并挑战我们的先验知识时,学习机会就会出现。假设在数据质量和准确性方面没有问题,我们必须质疑所有的模型假设,从我们的先验开始。这通常发生在市场制度变化时。

先验分布和后验分布中似然函数之间的平衡可以通过选择适当的先验分布和收集更多或更高质量的数据来调整。先验概率分布的敏感性分析可用于评估不同先验概率分布选择对后验分布和最终结果的影响。这涉及深思熟虑的试错过程。

后验概率分布还能实现模型参数的逆不确定性传播。回顾第一章中的内容,逆不确定性传播是根据观察到的数据推断出模型输入参数的不确定性。后验概率分布编码了我们模型的概率学习。后验概率分布不仅从观察到的数据和我们对其先验知识学习我们模型的参数,还量化了这些估计的认知和随机不确定性。

后验概率分布以透明的方式完成所有这些操作,这在金融和投资管理行业尤为重要,这些行业受到严格监管。与其他传统的机器学习算法(如随机森林、梯度提升机和深度学习模型)形成对比,这些算法通常是黑盒子,因为它们推断的基本逻辑通常难以解释。

后验分布 P(H | D)在下一个学习周期的新数据样本到来时也可以作为先验概率分布 P(H)。这使得动态、迭代和综合的 PML 模型成为可能。这对金融和投资模型来说是一个非常强大的机制,并且在图 5-1 中进行了总结。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (36)

图 5-1. 逆概率规则如何通过迭代概率学习从数据中构建知识

让我们将前面讨论的 PML 机制应用到估计一家公司可能违约其债务的问题上。假设你是一家对高风险信用公司的公共信用市场中的高收益债券感兴趣的对冲基金的分析师,因为它们通常提供有吸引力的风险调整后回报。由于其高风险性质以及这些公司可能无法偿还债券持有者的实际可能性,这些债券也被贬称为垃圾债券。

你基金的分析师们通过公司的专有知识、经验和管理方法评估这些公司的信用风险。当投资组合经理估计某家公司可能违约的概率只有 10%时,他们以市场价格购买其债券,以补偿基金承担的风险。

你的基金还使用传统的机器学习算法,从各种数据源中搜索与其投资组合中公司相关的信息。这些数据可能包括盈利发布、新闻稿、分析师报告、信用市场分析、投资者情绪调查等。每当机器学习分类模型接收到可能影响投资组合公司的每一条信息时,它会立即将这些信息分类为该公司的正面或负面评级。

多年来,你基金的机器学习分类系统建立了一份非常有价值的专有数据库,详细记录了这些高风险企业借款人的关键信息特征。特别是,它发现那些最终违约的公司累积了 70%的负面评级。然而,那些最终不违约的公司只累积了 40%的负面评级。

假设您的投资组合经理要求您开发一个 PML 模型,利用这些专有资源,以便在 ML 分类系统处理公司新信息时不断评估债务违约的概率。如果您成功开发了这个 PML 模型,您的基金将在高收益债券交易策略的时机和方向上获得优势。

现在假设您的 ML 分类系统刚刚通知您给 XYZ 分配了一个负面评级,XYZ 是您负责监控的基金债券投资组合中的一个新公司。如何基于新的负面评级更新 XYZ 公司的违约概率?让我们将 PML 模型应用于这个简单问题,作为学习您将应用于真实复杂交易和投资的 PML 过程的一种方式。

  • XYZ 公司违约(P(违约))和不违约(P(未违约))其债务义务的概率是模型要估计的参数。

  • 有关 XYZ 公司的负面和正面评级包括将为您提供信息并影响您的参数估计。

  • 假设所有评级彼此独立,并且所有评级都是从同一潜在统计分布中抽样得到的。

  • 由于 XYZ 公司位于您基金的投资组合中,您在看到任何负面或正面评级之前的违约先验概率为 P(违约) = 10%。

  • 这意味着 XYZ 不违约其债务的先验概率是 P(未违约) = 90%。

  • 如果 XYZ 最终违约的话,您的 ML 分类系统观察到负面评级的可能性是 P(负面 | 违约) = 70%。

  • 尽管有负面评级,XYZ 公司最终不违约的可能性是 P(负面 | 未违约) = 40%。

或许会觉得奇怪,P(负面 | 违约) + P(负面 | 未违约) = 0.7 + 0.4 = 1.1。这两个概率之和不为 1,因为它们条件是关于投资组合公司的两种非互补假设。可以将任何投资组合公司视为两种类型的加权硬币之一可能会有帮助:不违约硬币和违约硬币。不违约硬币在 40%的时间内显示其负面面。违约硬币在 70%的时间内显示其负面面。您正试图弄清楚您的投资组合经理从一个包含这两种硬币的袋子中选择了哪一种。

您希望在观察到负面评级后估计违约后验概率 P(违约 | 负面),并结合您对信用风险管理的机构知识。现在您已经拥有所有的概率和信息,可以创建一个 PML 模型并应用逆概率规则。让我们用 Python 编码解决方案:

# Import Python librariesimport numpy as npimport pandas as pd# Create a dataframe for your bond analysisbonds = pd.DataFrame(index=['Default', 'No Default'])# The prior probability of default# P(Default) = 0.10 and P(No Default) = 0.90bonds['Prior'] = 0.10, 0.90# The likelihood functions for observing negative ratings# P(Negative|Default) = 0.70 and P(Negative|No Default) = 0.40bonds['Likeli_Neg'] = 0.70, 0.40# Joint probabilities of seeing a negative rating depending on # default or no default# P(Negative|Default) * P(Default) and P(Negative|No Default) * P(No Default)bonds['Joint1'] = bonds['Likeli_Neg'] * bonds['Prior']# Add the joint probabilities to get the marginal likelihood or unconditional # probability of observing a negative rating# P(Negative) = P(Negative|Default) * P(Default) + P(Negative|No Default) * P(No Default)prob_neg_data = bonds['Joint1'].sum()# Use the inverse probability rule to calculate the updated probability of# default based on the new negative rating and then print the data table.bonds['Posterior1'] = bonds['Likeli_Neg'] * bonds['Prior']/prob_neg_databonds.round(2)

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (37)

根据我们的代码,可以看到公司 XYZ 在刚刚收到负面评级后的违约后验概率 P(default | negative) = 16%。违约概率从我们先前的 10% 的先验概率上升,这是可以预料的。

假设几天后,您的 ML 分类器向您报告 XYZ 公司另一条负面评级。现在如何更新违约概率?PML 过程完全相同。但现在我们的违约的先验概率是我们先前计算的当前后验概率。这是 PML 模型最强大的特性之一:以数学严谨的方式持续集成我们的先验知识和新数据来动态学习。让我们继续编写我们的解决方案来演示这一点:

#Our new prior probability is our previous posterior probability, Posterior1\. #Compute and print the table.bonds['Joint2'] = bonds['Likeli_Neg'] * bonds['Posterior1']prob_neg_data = bonds['Joint2'].sum()bonds['Posterior2'] = bonds['Likeli_Neg'] * bonds['Posterior1']/prob_neg_databonds.round(2)

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (38)

# Create a new table so that you can plot a graph with the appropriate informationtable = bonds[['Prior', 'Posterior1', 'Posterior2']].round(2)# Change columns so that x axis is the number of negative ratingstable.columns = ['0', '1', '2']# Select the row to plot in the graph and print it.default_row = table.iloc[0]default_row.plot(figsize = (8,8), grid = True, xlabel = 'Updates based on recent negative ratings', ylabel = 'Probability of default', title = 'XYZ Bonds');

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (39)

在了解到公司的新信息后,两次负面评级条件下公司违约的概率 P(default | 2 negatives) 显著上升至 25%,接近基金风险限制。您决定将这些结果提供给投资组合经理,进行更深入、全面的 XYZ 公司及当前市场环境分析。

需要注意的是,PML 模型可以一次或逐点摄取数据。无论数据到达的顺序如何,最终得到的后验概率将是相同的。让我们验证这一点。假设基金的 ML 分类器在几分钟内向我们报告 XYZ 公司两次负面评级。

  • 再次假设 ML 分类系统的评级是独立的,并且从以前相同的分布中抽样。

  • 考虑到 XYZ 会违约的情况下,计算连续两次负面评级的概率 P(2 negatives | default) 使用独立事件的乘法规则:

    • P(2 negatives | default) = P(negative | default) × P(negative | default) = 0.70 × 0.70 = 0.49
  • 同样地,考虑到 XYZ 最终不会违约的情况下,计算两次负面评级的概率:P(2 negatives | no default) = 0.40 × 0.40 = 0.16。

  • 观察 XYZ 公司两次负面评级的边际似然或无条件概率是对公司遵守其债务义务两种可能性的加权平均:

    • P(2 negatives) = P(2 negatives | default) × P(default) + P(2 negatives | no default) × P(no default)

    • 将 P(2 negatives) 的数值代入计算:P(2 negatives) = (0.49 × 0.1) + (0.16 × 0.9) = 0.193

  • 因此,找到 XYZ 公司在连续两次负面评级后违约的后验概率:

    • P(default | 2 negatives) = P(2 negatives | default) × P(default) / P(2 negatives)

    • 将 P(default | 2 negatives) 的数值代入计算:0.049/0.193 = 0.25 或 25%

这与我们在 Python 代码中计算的posterior2的后验概率相同。

如第一章中提到的,PML 模型是生成模型,能够学习数据的潜在统计结构。这使它们能够无缝地模拟新数据,包括生成可能缺失或损坏的数据。最重要的是,PML 模型能够通过其模型输出进行前向不确定性传播。它通过其先验和后验预测分布来实现这一点,这些分布模拟了 PML 模型未来可能生成的数据,并与观察到的训练数据、模型假设和先验知识一致。

需要注意的是,先验和后验分布是用于推断模型参数在训练前后的概率分布,它们支持反向不确定性传播。相比之下,先验和后验预测分布是模型在训练前后用于生成新数据的概率分布,它们支持前向不确定性传播。

先验和后验预测分布结合了两种不确定性:从其似然函数模拟的样本到样本数据的随机不确定性;以及编码在其先验和后验概率分布中的参数的认知不确定性。让我们继续在前一节的示例中工作,以说明和探索这两种预测分布。

先验预测分布 P(D′) 是我们预期在训练数据(D)中观察到的模拟数据(D′)的先验概率分布, 我们实际开始训练模型之前。先验预测分布 P(D′)通过对参数的先验概率分布 P(H)进行似然函数 P(D′ | H)的平均来实现这一点。

我们的 PML 模型包括假设、约束、似然函数和先验概率分布。先验预测分布在训练开始之前作为我们的 PML 模型是否适用的检查。实质上,先验预测分布 P(D′)在对训练数据(D)进行回溯预测,以便我们评估模型是否准备好进行训练。参见图 5-2。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (40)

图 5-2. 先验预测分布在训练之前生成新数据。这些模拟数据用于检查模型是否准备好进行训练。

如果实际的训练数据(D)不在由我们先验预测分布生成的模拟数据(D′)的合理范围内,我们应考虑修订我们的模型,从先验概率分布开始,然后是似然函数。

在前面的部分中,当我们计算观察到负面评级的边缘似然函数时,我们已经计算出了负面评级的先验预测平均值 P(负面)作为期望值或加权平均值:

  • P(负面) = P(负面 | 违约) × P(违约) + P(负面 | 未违约) × P(未违约)

  • P(负面) = (0.70 × 0.10) + (0.40 × 0.90) = 0.43

我们可以通过使用负面似然函数的补集类似地计算正面评级的先验预测平均值 P(正面)。

  • P(正面 | 违约) = 1 – P(负面 | 违约) 并且

  • P(正面 | 未违约) = 1 – P(负面 | 未违约)。

  • 利用这些概率计算边缘似然函数并插入数字,我们得到:

  • P(正面) = P(正面 | 违约) × P(违约) + P(正面 | 未违约) × P(未违约)

  • P(正面) = (0.30 × 0.10) + (0.60 × 0.90) = 0.57

总的来说,先验预测分布的计算方法如下:

  • P(D′) = i P ( D ' | H i ) × P ( H i ) 用于离散函数

  • P(D′) = P ( D ' | H ) × P ( H ) d H 用于连续函数

注意边缘似然函数和先验预测分布之间存在差异,尽管它们的公式看起来相同。边缘似然函数是观察特定数据样本(D),如负面评级的期望值。先验预测分布是在实际观察到任何数据之前给出其样本空间内任何可能数据(D′)的无条件概率分布。在我们的例子中,在你开始监控公司之前,它给出了投资组合公司观察到负面评级和正面评级的无条件概率。

后验预测分布 P(D″ | D) 模拟了在训练模型后,我们期望在未来观察到的样本或测试数据 (D″) 的后验概率分布。它通过对后验概率分布 P(H|D) 中的似然函数 P(D″ | H) 求平均来模拟测试数据样本 (D″)。简而言之,训练后的后验预测分布 P(D″ | D) 预测了未见测试数据 (D^),以便评估模型的测试准备情况。见 图5-3。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (41)

图 5-3. 后验预测分布在训练后生成新数据。这些模拟数据用于检查模型是否准备好进行测试。

注意,当我们在样本数据 (D) 上训练了我们的 PML 模型,并使用似然函数 P(D|H) 捕获了其偶然不确定性后,我们的后验分布 P(H|D) 相较于我们的先验分布 P(H) 给出了参数 (H) 及其认识不确定性的更好估计。我们的似然函数 P(D″| H) 继续表达观察未见样本数据 (D″) 的偶然不确定性。

后验预测分布在测试环境中作为最终的模型检查。我们可以根据样本数据分布与后验预测概率分布预测的数据分布的接近程度来评估模型的实用性。

总的来说,后验预测分布由以下公式给出:

  • P(D″ | D) = i P ( D '' | H i ) × P ( H i | D ) 适用于离散函数

  • P(D″ | D) = P ( D '' | H ) × P ( H | D ) d H 适用于连续函数

需要更新观察到 XYZ 公司再次获得负面评级的概率,鉴于我们已经观察到两个负面评级。虽然它仍然是生成另一个负面评级的期望值,但每个参数值分配的权重由条件于观察到两个负面评级的后验概率分布提供。这称为后验预测均值,计算如下:

  • P(负面 | 2 个负面) = P(负面 | 默认) × P(默认 | 2 个负面) + P(负面 | 非默认) × P(非默认 | 2 个负面) = (0.7 × 0.25) + (0.4 × 0.75) = 0.475 或 47.5%

现在我们观察到两个负面评级后,观察到 XYZ 公司获得正面评级的概率是多少?由于后验预测分布是一个概率分布,所以 P(正面 | 2 个负面) = 1 − P(负面 | 2 个负面) = 0.525 或 52.5%。您可以通过像我们在前面章节中所做的概率计算来检验这一点。

在本章中,我们研究了逆概率规则的具体术语及其如何支持在第一章中讨论的全面概率机器学习框架。具体来说,规则的以下术语支持持续的知识整合和逆不确定性传播:

  • 先验概率分布 P(H)编码了我们对模型参数的当前知识和认识论不确定性,在我们观察到任何样本内或训练数据之前。

  • 似然函数 P(D|H)捕获了数据分布和样本对样本训练数据的随机不确定性,给定我们模型参数的特定值。

  • 边际似然函数 P(D)通过对所有可能参数值加权平均其先验概率,给出了观察特定样本的无条件概率。它结合了观察样本数据的随机不确定性与可能生成该样本的每个参数的认识论不确定性。它是一个通常不可解的常数,用于归一化后验概率分布,使其积分为 1。

  • 后验概率分布 P(H|D)通过将我们对模型参数的先验知识与每个参数生成我们实际观察到的样本数据的可能性进行整合来更新我们对模型参数的估计。这是我们最感兴趣的目标概率分布,因为它编码了我们模型参数的概率学习,包括它们的随机性和认识论不确定性。

先验和后验预测分布支持我们 PML 模型的前向不确定性传播。它们还作为我们模型有效性的检验:

  • 先验预测分布 P(D′) 提供了我们在实际开始实验并观察之前观察到假想的样本训练数据 (D′) 的无条件概率。请注意,这不是实际观察到的样本数据 D。

  • 后验预测分布 P(D″|D) 提供了我们在我们的 PML 模型从样本内训练数据(D)中学习其参数后,观察到假想的样本外测试数据(D″)的条件概率。

重要的是要注意,先验分布 P(H) 和后验分布 P(H | D) 分别提供了我们关于我们模型参数的概率分布,这些参数是在样本数据 D 上训练我们的模型之前和之后的。

先验预测 P(D′) 和后验预测 P(D″ | D) 分布分别提供了在我们在样本数据 D 上训练我们的模型之前和之后,模拟的样本内 (D′) 和样本外数据 (D″) 的数据生成概率分布。

这些强大的机制使得在数据条件下动态、迭代和整合的机器学习成为可能,同时量化这些学习的随机和认知不确定性。PML 模型使得能够基于数据推断模型参数和预测。它在逻辑一致和数学严谨的情况下无缝集成了逆向不确定性传播和正向不确定性传播,同时不断地吸收新数据。这为基于数据的决策制定和风险管理提供了坚实的支持。

在下一章中,我们探索了 PML 模型的一个最重要的特性,特别是在金融和投资领域。将 PML 模型置于其独特的类别中的一个重要特征是它们知道自己不知道的东西,并据此校准他们的认知不确定性。这使我们远离了传统机器学习系统的潜在灾难性和破坏性后果,后者无论其无知如何,都极其自信。借用来自标志性电影警察“肮脏哈里”的一句名言,一个模型必须知道自己的限制。

Downey, Allen B. “贝叶斯定理。”在 Think Bayes:Python 中的贝叶斯统计,第 2 版。奥莱利媒体,2021 年。

Jaynes, E. T. 概率论:科学的逻辑。G. Larry Bretthorst 编。纽约:剑桥大学出版社,2003 年。

McElreath, Richard。“小世界和大世界。”在 统计重新思考:具有 R 和 Stan 示例的贝叶斯课程,19-48 页。博卡拉顿,佛罗里达州:查普曼和霍尔/CRC 出版社,2016 年。

Ross, Kevin。“预测简介。”在 贝叶斯推理与方法介绍Bookdown.org,2022 年。https://bookdown.org/kevin_davisross/bayesian-reasoning-and-methods/

一个人必须知道自己的限制。

——《铁证悬案》中的侦探“脏哈利”,他目睹一个自信过度的犯罪头目的汽车爆炸

一个模型必须知道自己的限制。这点很重要,因为这是金融和投资模型特性的重要性所在。其推论是,一个人工智能必须知道自己的限制。所有人工智能系统最严重的限制是它们缺乏常识。这源于它们无法理解因果关系。人工智能系统在训练期间只学习了难以推广到新情况的统计关系,而没有理解因果关系。

在 第一章 中,我们探讨了金融市场如何在你谨慎和深思熟虑地应用最佳模型时,仍然可能使你感到羞辱的三种方式。当你的模型基于有缺陷的金融和统计理论(例如本书上半部分讨论的内容)时,市场几乎肯定会让你感到羞辱。实际上,这并不是那么糟糕的结果,因为羞辱性的财务损失通常会带来个人的洞察和成长。更糟糕的结果是被解雇或者职业生涯以不光彩的方式结束。最糟糕的结果是个人财务破产,这种经历带来的智慧可能来不及发挥作用。

当传统的机器学习模型(如深度学习网络和逻辑回归)被训练时,它们通常使用最大似然估计(MLE)方法从样本数据中学习模型参数。因此,这些机器学习系统有三个严重缺陷,严重限制了它们在金融和投资领域的应用。首先,在使用小数据集时,尤其是在学习嘈杂的金融数据时,它们的模型参数估计是错误的。其次,这些机器学习模型在超出它们已经训练和测试过的数据范围和类别时,表现糟糕。第三,MLE 模型的概率分数必须通过使用 Sigmoid 或 Softmax 等函数进行校准,以将其校准为有效的概率。然而,这些校准不能保证准确地表示潜在的概率,导致了糟糕的不确定性量化。

所有这些缺陷的严重性在于,这些机器学习系统所依赖的传统统计模型在错误估计和预测时表现出令人震惊的高置信度,使它们在不确定的世界中变得非常危险。就像电影《铁证悬案》中一样,这些自信过满的人工智能模型有潜力引爆投资账户、公司、金融机构和经济,如果在不了解它们严重限制的情况下实施。

在第四章中,我们揭示了流行统计方法如 NHST、p 值和置信区间的错误推理推断。在本章中,我们检视了流行的 MLE 方法的严重限制和缺陷,以及其在金融和投资领域的失败原因。我们通过研究一个案例,试图预测我们投资的新上市公司是否能超过其季度盈利预期,基于一个短期记录。通过比较传统 MLE 模型与概率模型的结果,我们展示了为什么概率模型更适合于金融和投资,特别是在数据稀缺时。

正如之前讨论的,由于边缘概率分布中求和/积分的复杂性无法解析解决大多数现实世界的概率推断问题。与 MLE 模型使用的有缺陷的概率校准方法不同,我们只能采用近似数值解来解决概率推断问题。即使通过基本微积分可以解析解决盈利预期问题,我们也应用网格近似来解决它,以展示这种简单而强大的技术是如何运作的,使概率推断更容易理解。

马尔可夫链蒙特卡洛(MCMC)模拟是一种突破性的数值方法,通过估计解析上难以处理的高维后验概率分布,改变了概率推断的可用性。MCMC 使用依赖随机抽样算法模拟复杂的概率分布。我们探索了支持这种强大、可扩展模拟方法的基本概念。作为 MCMC 方法的概念验证,我们使用著名的 Metropolis 抽样算法模拟具有重尾的学生 t 分布。

人类天生具有一种非常重要的质量,迄今为止没有任何 AI 能够学会:一种具有常识的能力,合理地将我们的学习推广到未见过的、样本外的相关类别或范围,即使我们没有专门接受过这些训练。与 AI 系统不同的是,几乎所有人类都能够轻松推断、推理,并根据常识调整自己的知识以应对新的情况。例如,一个训练用于在荒野中识别活象的深度神经网络无法识别展览馆中展示的一只标本象。[¹] 一个幼儿只需运用他们的常识就能轻松完成这项任务。正如其他人指出的那样,AI 系统实际上无法看到房间里的大象!

这种常见失败的主要原因是 AI 模型只计算相关性,而没有工具来理解因果关系。此外,人类能够从具体例子中抽象概念,并以对象的泛化和它们之间的因果关系来思考,而 AI 系统却无法做到这一点。当处理嘈杂的大数据集时,这是一个主要问题,因为它们提供了丰富的机会,可以关联那些没有合理物理或因果关系的变量。在大数据集中,变量之间的虚假关联是常规,而不是例外。

例如,图 6-1 显示在 1999 年至 2009 年期间,美国在科学、太空和技术上的支出与自杀(包括绞刑、勒颈和窒息)之间存在 99.8%的相关性。²

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (42)

图 6-1. 大数据集中常见的虚假关联³

显然,这种关系是荒谬的,并且强调了相关性并不意味着因果关系的格言。人类可以很容易理解这种虚假关联的荒谬之处,但 AI 系统却无法做到。这也使得那些理解这些弱点并能利用它们的人可以轻易愚弄 AI 系统。

虽然人工神经网络灵感来自人脑的结构和功能,但我们对人类神经元如何学习和工作的理解仍然不完整。因此,人工神经网络并非生物神经元的精确复制品,人类大脑运作的许多未解之谜仍然存在。术语“深度神经网络”是一个误导性的营销术语,用于描述在输入层和输出层之间具有两个以上隐藏层的人工神经网络。对于一个缺乏幼儿通识的深度神经网络来说,并没有什么“深刻”的含义。⁴

所有传统的参数化 ML 系统都使用 MLE 统计方法,从简单的线性模型到复杂的深度学习神经网络。MLE 方法用于计算最优参数,以最佳拟合假定统计分布的数据。当模型只处理具有时间不变统计分布的大数据集的随机不确定性时,MLE 算法是有用的。

当统计分布被点估计总结时,尽管这是最优估计,但会丢失许多有价值的信息和不确定性评估。根据定义和设计,点估计不能捕捉模型参数的认知不确定性,因为它们不是概率分布。在金融和投资领域,这会带来严重后果,因为我们正在处理的是深陷于三种不确定性维度的复杂、动态社会系统:偶然性、认知性和本体论性。在第一章中,我们讨论了在金融和投资中使用点估计是危险和愚蠢的原因,因为我们持续处理错误的测量、不完整的信息和三维不确定性。换句话说,基于 MLE 的传统机器学习系统仅在不确定性三维空间的一个维度上运行,如图 2-7 所示。更令人担忧的是,许多这些机器学习系统通常是黑匣子,以高速自信地运行,但概率校准有缺陷。

此外,MLE 忽略了基于先验领域知识的基础率或先验概率,这可能导致基础率谬误,正如第四章所讨论的那样。当 MLE 应用于小数据集时,这一点尤为真实。我们实际上可以通过将 MLE 方法应用于一个估计公司实际是否能超过市场预期其收益估计的真实问题来看看为何如此。此示例受到参考文献中描述的硬币投掷示例的启发。⁵

用于收益预期的 MLE 模型

假设你已经换了工作,现在作为股票分析师在一家共同基金公司工作。去年,你的基金在高增长技术公司 ZYX 的首次公开募股(IPO)中分配了股权。尽管 ZYX 在其整个初创生涯中从未盈利过,但由于其侵略性营销活动得到大量风险投资的支持,其品牌已经成为家喻户晓的名字。显然,私募和公募股权投资者买入了其迷人的增长故事,由其富有魅力的首席执行官叙述。

在其 IPO 以来的最后三个季度中,ZYX 的负盈利甚至超过了市场对更大亏损的预期。在金融市场中,较差即好。ZYX 的股价持续不断地上涨,并且目前正在创下历史新高,让每个人受益。您的投资组合经理(PM)已要求您估计 ZYX 在即将到来的第四季度收益将超过市场预期的概率。根据您的概率估计,您的 PM 将在他们的收益公告前增加或减少基金对 ZYX 的权益投资。

在接受传统统计方法教育后,我们决定建立一个标准的 MLE 模型来计算所需的概率。收益公告事件只有两个我们感兴趣的结果:要么收益超过市场预期,要么低于市场预期。我们不关心收益仅达到市场预期的结果。像许多其他投资者一样,您的投资组合经理(PM)已经决定这样的结果相当于收益低于市场预期。众所周知,公司管理层在一年中与华尔街分析师打一场游戏,他们降低他们的盈利预期,以便在实际盈利公告时更容易超过这些预期。

让我们设计我们的季度收益最大似然估计(MLE)模型,并指定支撑它的假设:

  • 在单个事件或试验中,模型的输出变量 y 只能假定两种可能的结果之一,y = 1 或 y = 0。

  • 这两个结果是互斥的且完全穷尽的。

  • 将 y = 1 分配给 ZYX 超过市场对其季度收益的预期的结果。

  • 将 y = 0 分配给 ZYX 没有超过或仅达到市场对其季度收益的预期的结果。

我们现在必须为我们的似然函数选择一个最能模拟收益公告这一二元事件的统计分布。伯努利分布模拟了具有二元结果的单个事件或试验。参见 图6-2。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (43)

图 6-2. 伯努利变量⁶,其结果 x = 1 的发生概率为 p,结果 x = 0 的发生概率为 1-p

回想一下,在 第一章 中,我们使用二项分布来模拟美联储在几次会议或试验中利率上涨的总次数。当用于单次试验时,伯努利分布是二项分布的特例,因为它们在用于单次试验时具有相同的概率分布。

  • 假设变量 y 服从一个未知参数 p 的伯努利分布,这给了我们收益超预期的概率(y = 1)。

  • 由于两个概率必须加起来等于 1,这意味着未能超过收益预期(y = 0)的概率是其补集,即 1-p。

我们的目标是找到参数 p 的 MLE,即 ZYX 基于其短期设定市场预期并超过市场预期的季度收益的概率。

变量 y 的伯努利过程是独立同分布(i.i.d.)伯努利试验的离散时间序列,由 y[i]表示。

  • i.i.d.假设意味着每次收益公告都与之前的所有收益独立,并且都从具有常数参数 p 的相同伯努利分布中抽取。

  • 在其最后三个季度,ZYX 超过了收益预期,因此我们对参数 p 的训练数据是 D = (y[1] = 1, y[2] = 1, y[3] = 1)。

让我们称 p′为伯努利变量 y 参数 p 的 MLE。可以数学地证明,p′是时间序列数据 D 样本的期望值或算术平均值。它是最优参数,当插入伯努利似然函数中时,最适合时间序列数据 D。这意味着在数据集 D 上训练的 p′是:

  • p′(D) = (y[1]+y[2]+y[3]) / 3 = (1 + 1 + 1) / 3 = 3 / 3 = 1

  • 因此,ZYX 在其第四季度超过市场对其收益预期的概率是 P(y[4] = 1 | p′) = p′ = 1 或 100%。

由于 MLE 模型仅允许由数据随机抽样引起的随机不确定性,让我们计算 y 的方差。具有参数 p′的伯努利变量 y 的方差由以下给出:

  • 随机不确定性或方差(y | p′) = (p′) × (1 – p′) = 1 × (1 – 1) = 1 × 0 = 0.

  • 由于 p′是一个最优点估计,认知不确定性= 0。

  • 由于 p′被认为是一个“真实”的常数,而且假设伯努利分布是时间不变的,本体不确定性= 0。

因此,我们的 MLE 模型分配了一个 100%的概率,没有抽样误差,y[4] = 1。换句话说,我们的模型绝对确定 ZYX 将在即将到来的第四季度打破市场对其收益预期的期望。我们模型对 ZYX 收益超过市场预期的英雄式预测基于一家新兴的亏损技术公司仅有三个数据点。此外,我们当前的 MLE 模型将继续预测 ZYX 在其余生命周期内每个季度的收益超出预期。不仅仅是死亡和税收是确定的。我们需要将我们的 MLE 模型的预测添加到列表中。

任何具有常识的财务分析师都不会向其投资组合经理呈现这个 MLE 模型及其预测。然而,在金融和投资中拥有稀疏数据集是非常普遍的。例如,我们仅有两次全球大流行的财务数据。早期科技初创公司或战略/特别项目几乎没有相关数据可供作出具体决策。自大萧条于 1933 年结束以来,美国经济只经历了 13 次衰退。自 1942 年以来,标准普尔 500 指数仅有一次连续三年的负总回报(2000 年至 2003 年)。这些是一些明显的例子。金融和投资中稀疏数据集的列表确实很长。

显然,在金融和投资中常见的稀疏数据集上应用 MLE 模型是危险的。它们真的不了解它们的局限性,并毫不掩饰地显示他们的无知。基于 MLE 模型构建复杂的金融机器学习系统只会更早或更晚导致财务灾难。

关于收益预期的概率模型

现在让我们删除无用的 MLE 模型,并停下来思考这个问题。仅有三个数据点可供参考,对于任何对参数 p 的点估计都绝对不应该抱有确定性,即 ZYX 第四季度收益超过市场预期的概率。为什么?在过去一个季度可能发生了很多可能的问题,只有一些公司内部人员可能意识到。考虑到公司管理层和股东之间信息的持久不对称性,这种情况总是可能发生。这是我们对参数 p 的认识不确定性的一个主要来源。

最重要的是,眼前有太多因素——公司特定、政治、监管、法律、货币和经济——可能在 ZYX 公布其收益之前出现问题,并改变市场的预期。这些是我们本体不确定性的一些来源。当然,没有人知道未来会发生什么,但未来更有可能反映最近的过去。

因此,基于我们对我们生活的现实世界三个不确定性维度的理解以及我们目前掌握的信息,我们可以合理地打赌,ZYX 将超过市场对其第四季度收益的预期。然而,这并不是确定的。这意味着我们的模型参数 p 应能够取 0 到 1 之间的任何值,越接近 1 越有可能。换句话说,我们对 p 的估计最好用概率分布而不是任何特定点估计来表达。特别是在看到数据集 D 后,我们对 p 的估计最好表达为一个正偏态概率分布。

请注意,MLE 是最能复制观察数据的 p 值。但并没有普遍的自然法则表明 MLE 就是产生样本数据的 p 值的确证。参数 p 的其他值也很容易生成数据集 D。我们处理情感体的复杂社会系统,这些体系的行为往往是次优的。更重要的是,我们不受约束地选择一个 p 值。

让我们通过构建一个概率模型来更加精确地量化和可视化参数 p 的统计分布。回想一下,一个概率模型要求我们指定两个概率分布:

  • 第一个是先验概率分布 P(p),它概括了我们在观察任何数据之前对模型参数的知识或假设。假设您对 ZYX 公司没有任何先验知识或对参数 p 的任何概念。这使得一个均匀分布 U(0, 1),我们在蒙提霍尔问题中学到的,成为我们先验分布的一个良好选择。这个分布将所有介于 0 到 1 之间的 p 值赋予相等的概率。因此,P(p) ~U (0, 1),其中波浪号(~)是“统计分布为”的缩写。

  • 第二个是似然函数 P(D | p),它给出了观察我们样本数据 D 的可能性,假设参数 p 介于 0 到 1 之间的任何值。我们将继续使用伯努利概率分布及其相关过程作为我们概率模型中的似然函数。因此,我们概率模型的似然函数是 P(D | p) ~Bernoulli (p)。

我们的目标是估计我们的模型参数 p 在样本数据 D 和我们对 p 的先验知识或假设给定情况下的后验概率分布。这将为我们提供结果 y = 1 的概率分布,即盈利超预期的概率。我们将使用逆概率规则计算给定数据 D 的 p 的概率分布。我们的概率模型可以规定如下:

  • P( p | D) = P(D | p) ✕ P(p) / P(D) 其中

  • P(p) ~U (0, 1)

  • P(D | p) ~ Bernoulli (p)

  • D = (y[1] = 1, y[2] = 1, y[3] = 1)

这个后验分布足够简单,可以用基本的微积分解析求解。⁷ 然而,这涉及到对概率密度函数的积分,这对许多读者来说可能不容易理解。因此,我们将使用一种称为网格逼近的简单数值方法来计算后验分布。这种方法将把我们的积分微积分问题转化为描述性统计问题,这有助于我们建立对概率模型基本机制的直觉理解。

由于我们的先验分布是离散且均匀分布的,我们可以将 0 到 1 之间的区间分成 9 个等距点,相隔 0.1,如图 6-3 所示。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (44)

图 6-3。在 a 和 b 之间均匀分布的 n 个网格点,每个点的概率均为 1/n⁸

因此,我们的网格点是 {p[1] = 0.1, p[2] = 0.2, .., p[9] = 0.9}。由于 n 个网格点均匀分布,它们都具有相同的概率,即 P(p) = 1/n,其中 n 是网格点的数量。在我们的近似中,我们有 n = 9 个网格点。

  • 对于我们一维网格上的每个参数 p[1],...p[9],先验概率为 P(p) = 1/9 = 0.111。

对于每个参数 p[i],我们从九个网格点集合中抽样,以模拟一个具有 p[i] 值的收益事件,伯努利似然函数生成 y = 1 的概率为 pi,y = 0 的概率为 1-p[i]。ZYX 的收益事件最后三个季度的伯努利过程由我们的训练数据 D = (y[1] = 1, y[2] = 1, y[3] = 1) 给出。因此,伯努利过程的似然性为:

  • P(D | p[i]) = p[i] × p[i] × p[i] = p[i]³

对于每个参数 p[i],我们使用一个网格点 {p[1],...p[9]} 计算未归一化后验分布 P*(p | D),使用逆概率法则。为了计算归一化后验 P(p | D),我们首先将所有未归一化后验值相加,然后将每个未归一化后验值除以该总和,如下所示:

  • P * ( p i | D ) P ( D | p i ) P ( p i ) = p i 3 × 0 . 111

  • P(p[i] | D) = P ( p i | D ) / i P ( p i | D )

让我们使用 Python 代码开发解决方案的网格近似:

# Import the relevant Python librariesimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt# Create 9 grid points for the model parameter, from 0.1 to 0.9 spaced 0.1 apartp = np.arange(0.1, 1, 0.1)# Since all parameters are uniformly distributed and equally likely, the # probability for each parameter = 1/n = 1/9prior = 1/len(p)# Create a pandas DataFrame with the relevant columns to store # individual calculationsearnings_beat = pd.DataFrame(columns = ['parameter', 'prior', 'likelihood', 'posterior*', 'posterior'])# Store each parameter valueearnings_beat['parameter'] = p# Loop computes the unnormalized posterior probability distribution# for each value of the parameterfor i in range(0,len(p)): earnings_beat.iloc[i,1] = prior # Since our training data has three earnings beats in a row, # each having a probability of p earnings_beat.iloc[i,2] = p[i]**3 # Use the unnormalized inverse probability rule earnings_beat.iloc[i,3] = prior * (p[i]**3)# Normalize the probability distribution so that all values add up to 1earnings_beat['posterior'] = earnings_beat['posterior*'] /sum(earnings_beat['posterior*'])# Display the data frame to show each calculationearnings_beat

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (45)

# Plot the prior and posterior probability distribution for the model parameterplt.figure(figsize=(16,6)), plt.subplot(1,2,1), plt.ylim([0,0.5])plt.stem(earnings_beat['parameter'],earnings_beat['prior'], use_line_collection=True)plt.xlabel('Model parameter p'), plt.ylabel('Probability of parameter P(p)'), plt.title('Prior distribution of our model parameter')plt.subplot(1,2,2), plt.ylim([0,0.5])plt.stem(earnings_beat['parameter'],earnings_beat['posterior'], use_line_collection=True)plt.xlabel('Model parameter p'), plt.ylabel('Probability of parameter P(p)'), plt.title('Posterior distribution of our model parameter')plt.show()

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (46)

本图清楚地显示,我们的概率模型在训练模型之前和之后计算了模型参数 p 的概率分布。考虑到我们总是对任何事件都有不完整的信息,这是一个更加现实的解决方案。

我们的模型从先验知识和数据中学习了参数 p。这只是解决方案的一半。我们需要使用我们的模型来预测 ZYX 将超越市场对其第四季度盈利预期的概率。换句话说,我们需要开发我们模型的预测分布。让我们继续编写代码:

# Since P(yi=1|pi) = pi, we compute the probability weighted average of # observing y=1 using our prior probabilities as the weights# This probability weighted average gives us the prior predictive probability of # observing y=1 before observing any dataprior_predictive_1=sum(earnings_beat['parameter']*earnings_beat['prior'])# The prior predictive probability of observing outcome y=0 is the complement of# P(y=1) calculated aboveprior_predictive_0 = 1 - prior_predictive_1# Since we have picked a uniform distribution for our parameter, our model # predicts that both outcomes are equally likely prior to observing any dataprint(prior_predictive_0, prior_predictive_1) (0.5, 0.5)# Since P(yi=1|pi) = pi, we compute the probability weighted average of # observing y=1 but now we use the posterior probabilities as the weights# This probability weighted average gives us the posterior predictive # probability of observing y=1 after observing in-sample data D={y1=1, y2=1, y3=1}posterior_predictive_1 = sum(earnings_beat['parameter'] * earnings_beat['posterior'])# The posterior predictive probability of observing outcome y=0 is the # complement of P(y=1|D) calculated aboveposterior_predictive_0 = 1- posterior_predictive_1# After observing data D, our model predicts that observing y=1 is # about 3 times more likely than observing y=0round(posterior_predictive_0,2), round(posterior_predictive_1,2) (0.24, 0.76)# Plot the prior and posterior predictive probability distribution # for the event outcomesplt.figure(figsize=(16,6)), plt.subplot(1,2,1), plt.ylim([0,1])plt.stem([0,1],[prior_predictive_0, prior_predictive_1], use_line_collection=True)plt.xlabel('Binary outcome for variable y'), plt.ylabel('Probability P(y)'), plt.title('Prior predictive distribution of an earnings beat')plt.subplot(1,2,2), plt.ylim([0,1])plt.stem([0,1],[posterior_predictive_0, posterior_predictive_1], use_line_collection=True)plt.xlabel('Binary outcome for variable y'), plt.ylabel('Probability P(y)'), plt.title('Posterior predictive distribution of an earnings beat')plt.show()

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (47)

预期值或后验预测均值为 76%,接近理论值 75%。尽管如此,我们的概率模型并不百分之百确定 ZYX 在第四季度将超过市场预期,即使在过去三个季度它已成功这样做。我们的模型预测,超过市场预期的可能性是不超过市场预期的三倍。这是一个更为现实的概率分布,也是我们可以用来做投资决策的东西。

不幸的是,我们用来解决收益预期问题的数值网格逼近技术在模型具有多个参数时无法扩展。因此,我们剩下的最可扩展和最健壮的数值方法是用于估计概率推理问题近似解的随机抽样方法。

一般来说,有两种类型的随机抽样方法:独立抽样和依赖抽样。我们在第三章学到的标准蒙特卡洛模拟(MCS)方法是一种独立随机抽样方法。然而,当样本彼此依赖或相关时,随机抽样效果不佳。

此外,当独立抽样算法试图模拟具有多个参数或维度的目标概率分布时,效率低下。当模拟复杂的后验概率分布时,我们通常会遇到这两个问题。因此,我们需要能够处理相互依赖或相关样本的随机抽样算法。⁹ 马尔可夫链是生成依赖随机样本的流行方法。马尔可夫链的最重要特点是下一个生成的样本仅依赖于前一个样本,与其他所有因素无关。

马尔可夫链

马尔可夫链用于建模由一系列离散且相互依赖状态组成的随机过程,这些状态通过链式结构相互链接。它是一个顺序过程,在链中以离散时间概率转移从一个状态过渡到另一个状态。马尔可夫状态的最重要特点是它是无记忆的。对于任何状态,它的未来状态仅依赖于当前状态的转移概率,与所有过去状态和到达当前状态的路径无关。就像马尔可夫链编码了电影《功夫熊猫》中大师乌龟的禅宗名言:“昨日已成为历史,明日仍是个迷,今日则是馈赠,因此称为现在。”

同样重要的是,这种简化的无记忆特性使得马尔可夫链易于理解和实现。无论是算术还是几何的随机游走过程都是马尔可夫链的特定类型,并广泛用于模拟资产价格、回报率、利率和波动性。图6-4 中展示了一个马尔可夫链的图形表示,描绘了金融市场的三种基本离散状态及其假设的过渡概率。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (48)

图6-4. 描绘了金融市场三种基本状态及其假设过渡概率的马尔可夫链¹⁰

根据这个状态转移图,如果金融市场当前处于熊市状态,则有 80%的概率它将保持在熊市状态。然而,有 15%的概率市场将转移到牛市状态,而 5%的概率将转移到停滞市场状态。

假设市场随时间从熊市状态转移到停滞市场状态,然后再转移到牛市状态。一旦进入牛市状态,它将不会依赖或记忆停滞市场状态或熊市状态。关于其转移到未来状态的概率将仅依赖于其当前的牛市状态。因此,例如,无论它是从停滞市场状态还是熊市状态或两者的任何排列转移过来,有 90%的概率它将保持在牛市状态。换句话说,任何马尔可夫链的未来状态在给定当前状态时是条件独立于所有过去状态的。

尽管随机过程在马尔可夫链状态空间中进行随机游走,如果它可以在有限步数内从一个状态转移到任何其他状态,则该马尔可夫链被称为平稳遍历的。根据这个定义,在图6-3 中描绘的假想金融市场过程的马尔可夫链是平稳遍历的,因为市场将在足够的时间内最终达到马尔可夫链中的任何状态。这样一个假设的平稳遍历金融市场将意味着所有投资者的集成平均价格回报预期将等于集成中任何单个投资者采取的每条随机轨迹的价格回报,在足够长的时间段内。

然而,正如前面讨论过的,真实的金融市场既不是稳态的,也不是遍历性的。例如,作为投资者,在持续的熊市状态下可能会遭受重大损失,或者在泡沫化的牛市状态下进行愚蠢的投资,或者被迫清算投资以支付昂贵的离婚律师费用,在停滞的市场状态下永远无法再进入另一个市场状态。然后,你将被放逐到一个特殊的马尔可夫状态,称为吸收状态,从中无法逃脱。这种特殊状态吸收了鹰乐队歌曲《加州旅馆》中的歌词精髓:“你可以随时退房,但你永远不能离开。”我们将在第八章中讨论金融和投资中的遍历性问题。

Metropolis 抽样

Metropolis 算法生成一个马尔可夫链来模拟任何离散或连续的目标概率分布。Metropolis 算法基于三个关键元素迭代生成依赖随机样本:

提议概率分布

这是一个概率分布,通过提议马尔可夫链中的下一个状态,有效地探索目标概率分布。根据问题的不同,可以使用不同的提议分布。

提议接受率

这是提议移动的相对概率的度量。在概率推断问题中,接受率是目标分布的后验概率在马尔可夫链中提议状态和当前状态处评估的比率。回想一下上一章中,在两个不同点处取后验概率的比率消除了解析上难以处理的边际概率分布。

提议状态的决策规则

这些是确定是否接受或拒绝链中提议状态的概率决策规则。如果接受率大于或等于 1,则接受提议状态并使马尔可夫链移动到下一个状态。如果接受率小于 1,则算法生成介于 0 和 1 之间的随机数。如果随机数小于接受率,则接受提议状态。否则拒绝。

Metropolis 算法通过迭代构建其马尔可夫链,在接受所需数量的样本后停止。接受的样本然后用于模拟目标概率分布。

作为 MCMC 模拟的概念验证,我们将使用 Metropolis 算法模拟自由度为 6 的 Student's t 分布。这个分布在金融和投资领域广泛用于建模具有重尾分布的资产价格回报分布。Student's t 分布是一个概率分布家族,每个特定分布由其自由度参数控制。该值越低,分布尾部越厚。我们将在下一章中应用该分布并进一步讨论。

在以下 Python 代码中,我们使用均匀分布作为提议分布,并使用自由度为 6 的 Student's t 分布作为我们的目标分布进行模拟。它将马尔可夫链在 x = 0 处任意初始化,并运行 Metropolis 抽样算法 10000 次。结果样本存储在一个列表中,用于可视化马尔可夫链的样本路径。最后,代码绘制直方图显示样本收敛到实际目标分布:

#Import Python librariesimport numpy as npimport scipy.stats as statsimport matplotlib.pyplot as plt# Define the target distribution - Student's t-distribution # with 6 degrees of freedom.# Use location=0 and scale=1 parameters which are the default # values of the Student's t-distribution# x is any continuous variabledef target(x): return stats.t.pdf(x, df=6)# Define the proposal distribution (uniform distribution)def proposal(x): # Returns random sample between x-0.5 and x+0.5 of the current value return stats.uniform.rvs(loc=x-0.5, scale=1)# Set the initial state arbitrarily at 0 and set the number of # iterations to 10,000x0 = 0n_iter = 10000# Initialize the Markov chain and the samples listx = x0samples = [x]# Run the Metropolis algorithm to generate new samples and store them in # the 'samples' listfor i in range(n_iter): # Generate a proposed state from the proposal distribution x_proposed = proposal(x) # Calculate the acceptance ratio acceptance_ratio = target(x_proposed) / target(x) # Accept or reject the proposed state if acceptance_ratio >= 1: # Accept new sample x = x_proposed else: u = np.random.rand() # Reject new sample if u < acceptance_ratio: x = x_proposed # Add the current state to the list of samples samples.append(x)# Plot the sample path of the Markov chainplt.plot(samples)plt.xlabel('Sample Number')plt.ylabel('Sample Value')plt.title('Sample Path of the Markov Chain')plt.show()# Plot the histogram of the samples and compare it with the target distributionplt.hist(samples, bins=50, density=True, alpha=0.5, label='MCMC Samples')x_range = np.linspace(-5, 5, 1000)plt.plot(x_range, target(x_range), 'r-', label='Target Distribution')plt.xlabel('Sample Value')plt.ylabel('Probability Density')plt.title('MCMC Simulation of Students-T Distribution')plt.legend()plt.show()

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (49)金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (50)

1970 年,William Hastings 推广了 Metropolis 抽样算法,使得可以应用非对称提议分布和更灵活的接受标准。由此产生的 Metropolis-Hastings MCMC 算法可以渐近地模拟任何目标概率分布,即在足够的样本下,模拟将会收敛到目标概率分布。然而,对于高维复杂的目标分布,这种算法可能效率低下且成本高昂。

Metropolis-Hastings 算法依赖于马尔可夫链的任意初始值。在此期间收集的初始样本称为 burn-in 期间,通常会被丢弃。由于可能多次访问相同区域,状态空间的随机遍历可能会浪费时间。此外,算法可能会陷入多维空间的狭窄区域。

现代相关抽样算法已经发展出来,用以解决这种通用 MCMC 抽样算法的缺点。哈密尔顿蒙特卡罗(HMC)算法利用任意连续目标分布的几何结构在高维空间中高效移动。它是 PyMC 库中的默认 MCMC 抽样算法,我们使用它不需要任何专门的知识。在下一章中,我们将使用这些 MCMC 算法模拟模型参数的后验概率分布。

大多数传统 ML 系统基于的传统统计 MLE 模型在能力上存在局限性。 它们仅设计用于处理偶然不确定性,并且对其局限性毫不知情。 正如我们在本章中展示的那样,基于 MLE 的模型会自信地进行愚蠢的预测。 在我们这个三维不确定性世界中,这使得它们在金融和投资的复杂世界中具有危险性。 由于这些自信、简单和仓促的 ML 模型的预测性能差和灾难性的风险管理几乎是不可避免的。

在设计概率模型时,我们承认只有死亡是肯定的事情 — — 其他事情,包括税收,都有可能分布。 概率模型旨在管理由嘈杂的样本数据和不准确的模型参数生成的不确定性。 这些模型使我们能够从偶然不确定性的一维世界进入包含偶然和认识不确定性的二维世界。 这使得它们更适合金融和投资的世界。 然而,这是以更高的计算复杂性为代价的。

要将概率机器学习应用于复杂的金融和投资问题,我们必须使用相关随机抽样,因为其他数值方法无法工作或无法扩展。 MCMC 模拟方法具有变革性。 它们使用相关随机抽样算法来模拟难以直接抽样的复杂概率分布。 我们将在下一章中应用 MCMC 方法,使用流行的概率 ML Python 库。

本体论不确定性源自复杂的社会系统,有时可能会造成混乱。 除其他事项外,它还涉及从头重新思考和重新设计概率模型,并使其更适合新的市场环境。 这通常最好由具有常识、判断力和经验的人类来管理。 在 AI 的大胆新世界中,我们仍然非常重要,实际上,这是最困难的工作。

Dürr, Oliver, 和 Beate Sick. Probabilistic Deep Learning with Python, Keras, and TensorFlow Probability. Manning Publications,2020 年。

Guo, Chuan, Geoff Pleiss, Yu Sun, 和 Kilian Q. Weinberger. “On Calibration of Modern Neural Networks.” 最后修订于 2017 年 8 月 3 日。https://arxiv.org/abs/1706.04599.

Lambert, Ben. A Student’s Guide to Bayesian Statistics. 伦敦,英国:Sage Publications,2018 年。

Mitchell, Melanie. Artificial Intelligence: A Guide for Thinking Humans. 纽约:Farrar, Straus and Giroux,2020 年。

Vigen, Tyler. Spurious Correlations. 纽约:Hachette Books,2015 年。

¹ Oliver Dürr 和 Beate Sick,《贝叶斯统计学学生指南》(Manning Publications,2020 年),197–228 页。

² Tyler Vigen,《虚假相关性》(纽约:Hachette Books,2015 年)。

³ 改编自维基共享资源上的一幅图像。

⁴ 梅兰妮·米切尔,“人工智能中的知识、抽象和类比”,收录于《人工智能:智慧人类的指南》(纽约:法拉尔、斯特劳斯和吉鲁出版社,2019 年),247–65 页。

⁵ 杜尔和希克,“贝叶斯学习”。

⁶ 改编自维基共享资源上的一幅图像。

⁷ 杜尔和希克,“贝叶斯学习”。

⁸ 改编自维基共享资源上的一幅图像。

⁹ 本·兰伯特,“告别共轭:马尔可夫链蒙特卡洛”,收录于《贝叶斯统计学指南》(伦敦,英国:Sage 出版社,2018 年),263–90 页。

¹⁰ 改编自维基共享资源上的一幅图像。

不要在干草堆里找针。直接买下整个干草堆!

— 约翰·博格尔,指数基金发明者及先锋集团创始人

大多数人可能不知道,在高中时,我们学习到了最强大和最稳健的机器学习算法之一,即通过找到数据点的最佳拟合直线来进行普通最小二乘(OLS)算法的估计。这一算法是由阿德里安-玛丽·勒让德和卡尔·高斯在两百多年前开发的,用于估计线性回归模型的参数。这类模型拥有最悠久的历史,并被视为通用机器学习模型的基准。线性回归和分类模型被认为是最基础的人工神经网络模型。正因如此,线性模型被称为“所有参数模型的鼻祖”。

线性回归模型在现代金融实践、学术界和研究中发挥着至关重要的作用。金融理论的两个基础模型都是线性回归模型:资本资产定价模型(CAPM)是一个简单的线性回归模型;而套利定价理论模型(APT)是一个多重回归模型。投资经理广泛使用的因子模型只是带有公共和专有因子的多重回归模型。因子是金融特征,如通货膨胀率。线性模型也是许多高频交易者(HFT)的首选模型,后者是行业中最复杂的算法交易者之一。

线性回归模型之所以如此受欢迎有很多原因。这些模型有坚实的数学基础,并在过去两个多世纪中在各个领域广泛应用——从天文学到医学再到经济学。它们被视为基础模型和任何解决方案的第一近似。线性回归模型有一个封闭的解析解,大多数人在高中就学过。这些模型易于构建和解释。大多数电子表格软件包都已经内置了这种算法及相关的统计分析。线性回归模型可以快速训练,并能很好地处理嘈杂的金融数据。它们在大数据集上高度可伸缩,并在更高维度的空间中变得更加强大。

在本章中,我们探讨了概率线性回归模型与基于最大似然估计(MLE)参数的传统/频率线性回归模型在本质上的区别。概率模型比 MLE 模型更有用,因为它们在对金融现实建模时更少出错。通常情况下,概率模型通过包含关于模型参数的认知不确定性的附加维度,以及明确包含我们的先验知识或无知来展示其有用性。

在模型中加入认知不确定性将概率机器学习转变为集成机器学习的一种形式,因为每组可能的参数生成不同的回归模型。这还具有当集成需要在训练数据或测试数据之外进行外推时增加模型预测不确定性的理想效果。如 第六章 中所讨论的,我们希望我们的 ML 系统能够意识到它的无知。一个模型应该了解自己的局限性。

我们通过开发一个概率市场模型(MM)来展示这些方法论上的基本差异,该模型转变了我们在 第四章 中使用的基于 MLE 的市场模型。我们还使用可信区间而不是有缺陷的置信区间。此外,我们的概率模型可以在内部数据训练之前和之后无缝地模拟数据。

在将概率模型应用于现实世界问题时,概率模型的数值计算提出了重大挑战。我们在上一章中使用的网格逼近方法在参数数量增加时并不适用。在前一章中,我们介绍了马尔可夫链蒙特卡洛(MCMC)采样方法。在本章中,我们将使用 PyMC 库构建我们的 PML 模型,这是 Python 中最流行的开源概率机器学习库。PyMC 的语法接近实际开发中概率模型的方式。它具有几种高级的 MCMC 和其他概率算法,如汉密尔顿蒙特卡洛(HMC)和自动微分变分推断(ADVI),可以说是机器学习中一些最复杂的算法。这些高级 MCMC 采样算法可以应用于具有基本理解复杂数学支持的问题,如 第六章 中所讨论的。

确定性线性模型,如物理学和工程学中的模型,提供了令市场参与者们为其财务模型所梦寐以求的极其精确的估计和预测。另一方面,所有的非确定性或统计线性模型都包含一个随机成分,该成分捕捉了模型预测(Y)与观察值(Y')之间的差异。这种差异称为残差,并且在 图7-1 中通过从最佳拟合线到观测数据点的垂直线来表示。训练模型的目标是学习最优参数,以最小化残差的某种平均值。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (51)

图 7-1. 线性回归模型的最佳拟合线。残差是观测数据与拟合线之间的垂直线。¹

如图7-1 所示,简单线性回归模型的目标(Y)只有一个特征(X),表达为:

  • Y = a + b × X + e,其中 a 和 b 是通过最小化残差 e = Y − Y′ 从训练数据中学习的常数。

多元线性回归模型使用多个特征的线性组合来预测目标。线性回归的一般形式表达为:

  • Y = b[0] + b[1] × X[1] + b[2] × X[2] + …+ b[n] × X[n] + e,其中 b[0] − b[n] 是从训练数据中学习的常数,通过最小化残差 e = Y − Y′。

需要注意的是,在线性模型中,必须使得系数(b[0] – b[n])是线性的,而不是特征本身。回想一下第四章中提到的,一个依赖于现代投资组合理论和频率统计方法的金融分析师错误地假设,存在一个潜在的、时间不变的、随机过程来生成像股票这样的资产的价格数据。

市场模型

这个随机过程可以被建模为一个 MM,基本上是一个简单线性回归模型,股票的实现超额收益(目标)回归到整体市场的实现超额收益(特征),如下所示:

  • (R − F) = a + b (M − F) + e(方程 7.1)

  • Y = (R – F) 是目标,X = (M − F) 是特征。

  • R 是股票的实现收益。

  • F 是无风险资产的回报(如 10 年期美国国债)。

  • M 是市场投资组合(如标准普尔 500 指数)的实现收益。

  • a(alpha)是预期的特定股票收益。

  • b(贝塔)是对市场系统风险敞口的水平。

  • e(残差)是未预期的特定股票收益。

尽管这个潜在随机过程的 alpha 和 beta 参数可能是未知的或无法得知的,但分析师被误导认为这些参数是恒定的并且具有“真实”值。这个隐含的时间不变性随机过程的假设意味着,模型参数可以从涉及的各种证券的价格数据的任意随机样本中估计出来,这些数据跨越了相当长的时间。这个隐含假设被称为静态遍历条件。根据频率主义者的观点,样本到样本数据的随机性创造了真实固定参数估计的不确定性,这种参数的随机不确定性被残差 e = (Y – Y′) 所捕捉。

模型假设

许多分析师通常没有意识到,为了对模型参数做出合理的推断,他们必须基于高斯-马尔可夫定理对残差做进一步假设,即:

  • 残差是独立同分布的。

  • 残差的期望均值为零。

  • 残差的方差是恒定的且有限。

使用 MLE 学习参数

如果分析人员假设残差服从正态分布,那么可以用基本的微积分证明,最大似然估计(MLE)的α和β两个参数与我们在高中学到并在第四章应用 Statsmodels 库中使用的 OLS 算法得到的值相同。这是因为这两种算法都在最小化均方误差或残差平方的期望值 E[(Y − Y′)²)]。然而,MLE 算法优于 OLS 算法,因为它可以适用于许多不同类型的似然函数。²

众所周知,尽管财务数据丰富,但它们的信噪比非常低。金融机器学习中最大的风险之一是数据的方差或过拟合。当模型在数据上训练时,算法学习的是噪声而不是信号。这导致模型参数估计在样本之间变化非常大。因此,模型在样本外测试中表现不佳。

在多元线性回归中,数据的过拟合也会发生,因为模型可能具有高度相关的特征。这也称为多重共线性,在金融和商业世界中很常见,特别是在金融困境时期,大多数特征都相互关联。

传统统计学家开发了两种临时方法称为正则化,通过在优化算法中创建惩罚项来减少噪声数据的过拟合,减少任何一个参数的影响。别管这是让“只让数据自己说话”的频率学派法则的反义。

有两种惩罚模型复杂性的正则化方法:

Lasso 或 L1 正则化

惩罚参数的绝对值之和。在 Lasso 回归中,许多参数都会被收缩到零。Lasso 也用于消除相关特征并改善复杂模型的解释性。

岭回归或 L2 正则化

惩罚参数系数的平方和。在岭回归中,所有参数都会被收缩到接近零,这减少了任何一个特征对目标变量的影响。

换句话说,L2 正则化不仅“让数据自己说话”,而且让所有声音都变得沉默,而 L1 正则化则让许多声音静音。当然,模型被正则化是为了使其在金融和投资中有用,那里的数据极其嘈杂,而以下的 Fisher 法则导致回归模型惨败并且亏损。

用置信区间量化参数不确定性

从训练数据估计模型参数后,分析师计算 alpha 和 beta 的置信区间,以量化它们的随机不确定性。大多数分析师不了解使用置信区间的三种错误类型,并不理解它们的缺陷,正如在第四章中所讨论的那样。如果他们了解的话,他们在金融分析中除了在中心极限定理适用的特殊情况下,将不会使用置信区间。

预测和模拟模型输出

现在线性模型已经建立,可以在未见数据上进行测试,以评估其用于估计和预测的实用性。与评估模型在训练数据上表现的评分算法相同,也会用于测试数据,计算其实用性。然而,要模拟数据,分析师将不得不建立一个单独的蒙特卡罗模拟(MCS)模型,如在第三章中讨论的那样。这是因为 MLE 模型不是生成模型。它们不会学习数据的潜在统计结构,因此无法模拟数据。

在极大似然估计(MLE)建模中,财务分析师试图构建预计能够模拟“真实”模型的模型,这种模型被认为是最优的、优雅的和永恒的。在概率建模中,财务分析师摆脱了这种意识形态的负担。他们无需为其金融模型仅仅是近似、混乱和短暂而道歉,因为这些模型仅仅反映了数学和市场的现实。我们知道,所有模型都是错误的,无论它们是被视为预言还是可悲的。我们仅仅根据它们在实现我们的财务目标方面的有用性来评估它们。

使用概率框架的财务分析师不仅应用逆概率规则,还颠覆了 MLE 建模范式。他们摒弃了正统统计学的意识形态教条,转而采用常识和科学方法的原则,他们颠覆了数据和参数的传统处理方式:

  • 超额回报的训练数据,如 Y = (R − F)和 X = (M − F),被视为常数,因为它们的值已经实现和记录,永远不会改变。这就是常数意味着什么的典范。

  • 模型参数,如 alpha(α)、beta(β)和残差(e),被视为具有概率分布的变量,因为它们的值是未知和不确定的。金融模型参数存在随机性、认知性和本体性不确定性。它们的估计值会随着使用的样本、应用的假设和涉及的时间段而变化。这就是变量意味着什么的本质。

分析师明白,寻找金融模型的任何“真实”恒定参数值是一件愚蠢的事情。这是因为市场的动态随机性及其参与者确保概率分布从不是静态遍历的。这些分析师痛苦地意识到,有创造力、自由意志、情感丰富的人类几乎每天都在嘲笑理论上基于 MLE 的“绝对主义”金融模型。频率主义者声称金融模型参数具有“真实”值简直是不科学、意识形态的废话。

我们将使用概率框架明确陈述我们的假设,并为到目前为止讨论过的概率框架中的所有术语分配具体的概率分布。每个概率分布都有额外的参数,分析师将必须估计这些参数。分析师必须指明他们选择的理由。如果在测试阶段模型失败,分析师将改变所有概率分布,包括它们的参数。所有的金融模型都是基于最基本的试错技术开发的。

在概率框架中,我们应用逆概率规则来估计我们的模型参数,如在 第五章 中发展的那样。设计完模型后,我们将使用 Python 和 PyMC 库开发它。基于 MM 定义的术语,概率线性集成(PLE)被表述为:

  • P(a, b, e| X, Y) = P(Y| a, b, e, X) P(a, b, e) / P(Y|X),其中

  • Y = a + b × X + e,如 MLE 线性模型中所述,但不包括其明示或暗示的假设。这些将在 PLE 中明确指定。

  • P(a, b, e) 是在观察训练数据 (X, Y) 之前所有模型参数的先验概率。

  • P(Y| a, b, e, X) 是在给定参数 a, b, e 和特征训练数据 X 的情况下观察目标训练数据 Y 的似然性。

  • P(Y|X) 是观察到特征 X 的训练值的目标 Y 的边际似然性,平均值为所有可能先验参数 (a, b, e)。

  • P(a, b, e| X, Y) 是在观察训练数据 (X,Y) 后参数 a, b, e 的后验概率。

我们现在详细讨论 PLE 模型的每个组成部分。

先验概率分布 P(a, b, e)

在分析员看到任何训练数据(X, Y)之前,他们可以指定 PLE 参数(a, b, e)的先验概率分布,并量化其认识上的不确定性。所有先验分布假定彼此独立。这些先验分布可以基于个人、机构、经验或常识。如果分析员对参数没有任何先验知识,他们可以用均匀分布表达他们的无知,认为每个值在上限和下限之间是等可能的。请记住,除非您绝对确定参数可以取这些值,否则应避免设置上限和下限为 0 和 1。主要目标是明确和定量化最重要的模型假设之一。

鉴于模型易于过度拟合嘈杂的金融数据,这些数据没有任何持久的结构统一性,分析员意识到盲目遵循“只让数据说话”的正统格言是愚蠢的。在 MLE 模型中的正则化方法的特设使用仅仅是伪装的先验概率分布。可以数学上证明,L1 正则化等同于使用拉普拉斯先验,而 L2 正则化等同于使用高斯先验。³

分析员系统地遵循概率框架,并明确量化他们关于模型参数的知识或无知,使用先验概率分布。这使得模型透明,可以被任何人,尤其是投资组合经理,改变和批评。例如,分析员可以假设:

  • alpha 服从正态分布:a ~Normal()

  • beta 服从正态分布:b ~Normal()

  • 残差是半学生 t 分布的:e ~HalfStudentT()

似然函数 P(Y| a, b, e, X)

分析员观察训练数据(X, Y)后,需要制定一个最适合该数据的似然函数,并量化模型参数(a, b, e)的随机不确定性。这与 MLE 线性模型中使用的似然函数相同。在标准线性回归中,假定残差(e)的似然函数是高斯或正态分布。然而,分析员使用学生 t 分布来模拟尾部肥厚的资产价格回报的金融实际情况。此外,如果似然函数能够像学生 t 分布一样容纳离群值,线性回归被称为健壮线性回归。

学生 t 分布是一类分布,可以根据其自由度参数 v 来逼近一系列其他概率分布,该参数是一个实数,可以从 0 到无穷大。对于较小的 v 值,学生 t 分布尾部肥厚,随着 v 的增大,趋于正态分布。重要的是要注意:

  • 当 v ≤ 1 时,t-分布没有定义的均值和方差。

  • 当 1 < v ≤ 2 时,t-分布具有定义的均值但没有定义的方差。

  • 当 v > 30 时,t-分布近似正态分布。

假设分析员将 v = 6 分配给似然函数的学生 t-分布。为什么是 v = 6?金融研究和实践表明,这种 t-分布很好地描述了尾部股票价格回报。因此,我们将先前的共同知识应用于似然函数的选择。具体的似然函数可以数学表达为:

  • Y ~StudentT(u, e, v = 6),其中 u = a + b × X,而 (a, b, e) 则由它们的先验概率分布定义。

边缘似然函数 P(Y|X)

这是最难计算的函数,因为它是在所有模型参数的似然函数上取平均。随着概率分布类型和参数数量的增加,复杂性也会增加。正如前面提到的,我们需要开创性的算法来数值近似这个函数。

后验概率分布 P(a, b, e| X, Y)

现在我们已经确定了我们的模型,我们可以计算所有模型参数 (a, b, e) 在给定训练数据 (X,Y) 的后验概率。总结一下,我们的模型规定如下:

  • Y ~StudentT(u, e, v = 6)

  • u = a + b × X

  • a ~Normal(),b ~Normal(),e ~HalfStudentT()

  • X,Y 是一个样本时间段内反映当前市场情况的训练数据对。

模型参数及其概率分布以及它们之间的关系显示在 图 7-2 中。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (52)

图 7-2. 概率市场模型显示用于参数的先验分布及用于拟合训练数据的似然函数。

由于任何现实模型的复杂性,尤其是边缘似然函数,我们只能近似计算其每个参数的后验分布。PyMC 使用先进的 MCMC 算法来模拟后验分布,通过从中抽样,正如第六章所讨论的那样。然后我们使用 ArviZ 库来探索这些样本,从而能够从中得出推断和预测。

现在让我们通过利用其强大的库生态系统在 Python 中构建我们的 PLE。除了 NumPy、pandas 和 Matplotlib 的标准 Python 栈之外,我们还将使用 PyMC、ArviZ 和 Xarray 库。正如之前提到的,PyMC 是 Python 中最流行的概率机器学习库。ArviZ 是一种概率语言无关的用于分析和可视化概率集合的工具。它将概率集合的推断数据转换为 Xarray 对象,这些对象是标记的、多维的数组。您可以搜索网络以获取先前提到的库的相关文档链接。

构建任何类型的集成都需要一个系统化的过程,我们的 PLE 也不例外。我们将按照 图7-3 中概述的高层次集成构建过程。每个阶段及其组成部分将与相关代码一起解释。需要注意的是,即使我们将按顺序进行集成构建过程,但在实践中这是一个迭代的、非线性的过程。例如,您可以轻松地在训练阶段和分析特征和目标数据阶段之间来回切换。有了这种非线性性质,让我们开始第一个阶段。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (53)

图 7-3. 用于组装概率学习集合的高级过程

定义集成性能指标

我们的金融目标和活动应该推动我们构建 PLE 的努力。因此,这影响了我们用来评估其性能的度量标准。我们的金融任务通常是估计金融模型的参数或预测其输出或两者兼而有之。正如您现在所知,概率机器学习系统非常适合这两项任务,因为它们无缝地进行逆传播和正向传播。更重要的是,这些生成集合引导我们考虑我们正在解决的问题及其可能解决方案的不确定性。

金融活动

方程式 7.1 中回归参数 alpha 和 beta 的合理估计是行业中几种金融活动所必需的:

詹森的 alpha

通过将基金的回报与其基准投资组合的回报进行回归,投资者通过估计回归的 alpha 参数来评估基金经理的技能。这个度量标准在行业中被称为詹森的 alpha。

市场中性策略

Alpha 也可以被视为与市场动态无关的特定资产预期收益率。如果基金经理发现这种回报率非常吸引人,他们可以尝试通过对冲资产市场波动的暴露来孤立并捕捉它。这还涉及估计资产的贝塔(beta),或对市场敏感性的评估。包含该资产和对冲的投资组合变得对市场的变化不敏感或中性。

交叉对冲

假设方程式 7.1 中残差的方差恒定不变,可以数学上显示贝塔参数与一个资产(Y)的波动性和另一个相关资产(X)的波动性相关。企业财务部门的交叉对冲计划利用这种与贝塔相关的相关性,通过另一个相关商品(例如石油)对公司所需的商品(例如喷气燃料)进行对冲。财务部门在开放市场购买或出售期货等金融工具,以对冲其输入成本。

股本成本

公司财务分析师通过估计回归方程式 7.1 中的实现回报率 R 来估算其公司股本的成本。这被认为是公众股东要求的其股票的预期收益率。许多分析师仍然使用其股票的 CAPM 模型,并通过在方程式 7.1 中使 alpha = 0 来估计 R。

在本章中,我们将通过使用其 MM 而不是 CAPM 来估计苹果公司的股本回报率,原因详见第四章。我们将估计给定当前市场制度的苹果公司超额回报(R - F)的后验概率分布。这种生成线性合奏可以应用于前述的所有财务活动中。

目标函数

一个旨在衡量模型或合奏性能的规则被称为目标函数。这个函数通常衡量合奏的估计或预测与相应实现或观察值之间的差异。在机器学习回归模型中,用于衡量预测值与观察值之间差异的常见目标函数包括均方误差(MSE)和中位绝对误差(MAE)。选择目标函数取决于我们试图解决的业务问题。减少损失/成本的目标函数称为损失/成本函数。

另一个回归目标函数是 R 平方。在频率统计学中,它被定义为预测值的方差除以数据的总方差。请注意,R 平方可以数学上解释为需要最大化的标准化 MSE 目标函数:

  • R 平方(Y) = 1 - MSE(Y) / Var(Y)

由于我们在概率模型中处理的是偶然性和认知不确定性,因此必须修改此 R 平方公式,以便其值不超过 1。概率版本的 R 平方被修改为等于预测值的方差除以预测值的方差加上误差的预期方差。 它可以解释为方差分解。 我们将称这个版本的 R 平方目标函数为概率 R 平方

性能指标

正如前面提到的,金融数据非常嘈杂,这意味着我们需要对每个开发阶段建立的性能指标保持现实。 至少,我们希望我们的模型比随机猜测做得更好,即,我们希望性能得分大于 50%。 我们希望我们的 PLE 达到或超过以下性能指标:

  • 概率 R 平方先验分数 > 55%

  • 概率 R 平方训练得分 > 60%

  • 概率 R 平方测试得分 > 65%

  • 最高密度区间(HDIs):90% HDI 包含几乎所有训练和测试数据(HDI 将很快解释)

请记住,所有这些度量标准将基于个人和组织的偏好,并且是不完美的,就像用于生成它们的模型一样。 这需要判断力和领域专业知识。 尽管如此,我们将使用这些指标作为另一个输入来帮助我们评估我们的 PLE,批评它,并修订它。 在实践中,我们修改我们的 PLE,直到我们确信它将为我们想要应用它的金融活动提供足够高的预期正值。 只有在那之后我们才会将我们的 PLE 部署到实验室之外。

分析数据和工程特征

我们已经对目标和特征进行了数据分析,在第四章和重新编写方程 7.1 中进行了分析。

数据探索

一般来说,在这个阶段,您将定义您感兴趣的目标,例如预测资产价格回报或估计波动性。 这些目标变量是实值数字,被称为回归目标。 或者,感兴趣的目标也可以是基于预测公司是否会违约的预测的分类。 这些是取值为离散数字(如 0 或 1)的分类目标。

接下来,您将确定各种数据源,这些数据源将使您能够对您的目标和特征进行足够详细的分析。 数据源可能很昂贵,您将不得不想出如何以成本有效的方式获得它们。 清理和处理来自各种来源的数据通常非常耗时。

特征工程

记住,特征是作为独立变量的数据表示,使模型的目标变量推断或预测成为可能。特征工程是选择、设计和开发一组有用的特征的实践,这些特征共同作用,使得在样本外数据上能够可靠地推断或预测目标变量。

要预测目标变量(例如价格回报),模型可以拥有许多不同类型的特征。以下是各种类型特征的例子:

基本面

公司销售,利率,汇率,GDP 增长率

技术

动量指标,资金流动,流动性

情绪

消费者情绪,投资者情绪

其他

专有的数学或统计指标

在选择和开发了一组可能的特征之后,通常建议使用特征级别的相对变化,而不是绝对水平,作为输入到您的特征数据框架中。这减少了金融时间序列中普遍存在的串行自相关。串行相关发生在一个变量在时间上与其自身的过去值相关联的时候。交易员和投资者通常有兴趣了解一个好的或坏的条件是变好还是变差。因此,市场参与者通常在百分比或差异的相对变化上持续反应水平。

如果我们有多个特征,我们需要检查它们是否彼此高度相关。回顾一下,这个问题被称为多重共线性。高度相关的特征可以在数据中过度放大相同的信号,导致无效的推断和预测。理想情况下,特征之间应该没有相关性或者没有多重共线性。不幸的是,这在实践中几乎从不发生。确定一个阈值方差,高于这个阈值的特征应该被移除,这是基于业务背景的判断调用。

特征工程对所有机器学习系统的性能至关重要。它需要领域专业知识、判断力、经验、常识以及大量的试错。这些是使人类智慧能够区分相关性和因果关系的特质,而目前 AI 能力仍无法做到。

在本篇介绍中,我们将保持特征工程的简单性,并利用市场模型上的广泛金融知识和经验。我们的 PLE(预测建模环境)只有一个特征:由标准普尔 500 指数代表的市场。

数据分析

PLEs 在我们拥有小数据集时展现出其优势,这样弱或平坦的先验就不会被似然函数所压倒。在过去的去年的最后两个月,即从 11/15/2022 到 12/31/22,我们将观察 31 天的数据。这个时期涵盖了两次联邦储备委员会会议,并且异常波动。我们将在前 21 天的数据上训练我们的 PLE,并在最后 10 天的数据上进行测试。这被称为时间序列拆分的交叉验证方法。由于金融时间序列具有较强的串行相关性,我们不能使用标准的交叉验证方法,因为它假设每个数据样本都是独立且同分布的。

让我们实际下载苹果公司、标准普尔 500 指数和 10 年期国库券的价格数据,并像我们对线性 MM 所做的那样计算每日价格回报率:第四章。

# Import standard Python libraries.import numpy as npimport pandas as pdfrom datetime import datetimeimport xarray as xrimport matplotlib.pyplot as plt# Install and import PyMC and Arviz libraries.!pip install pymc -qimport pymc as pmimport arviz as azaz.style.use('arviz-darkgrid')# Install and import Yahoo Finance web scraper.!pip install yfinance -qimport yfinance as yf# Fix random seed so that numerical results can be reproduced.np.random.seed(101)# Import financial data.start = datetime(2022, 11, 15)end = datetime(2022, 12, 31)# S&P 500 index is a proxy for the market factor.market = yf.Ticker('SPY').history(start=start, end=end)# Ticker symbol for Apple, the largest company in the world # by market capitalization.stock = yf.Ticker('AAPL').history(start=start, end=end)# 10 year US treasury note is the proxy for risk free rate.riskfree_rate = yf.Ticker('^TNX').history(start=start, end=end)# Create a dataframe to hold the daily returns of securities.daily_returns = pd.DataFrame()# Compute daily percentage returns based on closing prices for Apple and # S&P 500 index.daily_returns['market'] = market['Close'].pct_change(1)*100daily_returns['stock'] = stock['Close'].pct_change(1)*100# Compounded daily risk free rate based on 360 days for the calendar year # used in the bond market.daily_returns['riskfree'] = (1 + riskfree_rate['Close']) ** (1/360) - 1# Check for missing data in the dataframe.market.index.difference(riskfree_rate.index)# Fill rows with previous day's risk-free rate since # daily rates are generally stable.daily_returns = daily_returns.ffill()# Drop NaNs in first row because of percentage calculations # are based on previous day's closing price.daily_returns = daily_returns.dropna()# Check dataframe for null values.daily_returns.isnull().sum()# Check first five rows of dataframe.daily_returns.head()# Daily excess returns of AAPL are returns in excess of # the daily risk free rate.y = daily_returns['stock'] - daily_returns['riskfree']# Daily excess returns of the market are returns in excess of # the daily risk free rate.x = daily_returns['market'] - daily_returns['riskfree']# Plot the excess returns of Apple and S&P 500.plt.scatter(x,y)plt.ylabel('Excess returns of Apple'), plt.xlabel('Excess returns of S&P 500');# Plot histogram of Apple's excess returns during the period.plt.hist(y, density=True, color='blue')plt.ylabel('Probability density'), plt.xlabel('Excess returns of Apple');# Analyze daily returns of all securities.daily_returns.describe()# Split time series sequentially because of serial correlation # in financial data.test_size = 10x_train = x[:-test_size]y_train = y[:-test_size]x_test = x[-test_size:]y_test = y[-test_size:]

开发和反推先验集合

让我们开始使用 PyMC 库开发我们的 PLE。在这一点上,我们明确陈述了我们集合的假设,即参数的先验概率分布和似然函数。这还包括我们关于底层数据生成过程的功能形式的假设,即线性加上一些噪声。

之后,我们检查集合的先验预测分布是否生成了可能发生在过去的、现在在我们的训练数据样本中的数据。对过去事件的预测称为反推,并用作模型检查,在训练之前和之后。如果由先验集合生成的数据不合理,因为它们不在我们的最高密度区间内,我们会修正我们所有的模型假设。

指定分布及其参数

我们通过指定其参数的先验概率分布 P(a)、P(b) 和 P(e) 将我们的先验知识纳入集合中。之后,我们指定了在给定参数时观察数据的似然性,即 P(D | a, b, e)。

在下面的 Python 代码块中,我们选择了学生 t 分布,其自由度为 6,作为我们集合的似然函数。当然,我们也可以将 nu 添加为另一个需要推断的未知参数。然而,这只会增加复杂性,而不会增加对开发过程的理解。

# Create a probabilistic model by instantiating the PyMC model class.model = pm.Model()# The with statement creates a context manager for the model object.# All variables and constants inside the with-block are part of the model.with model: # Define the prior probability distributions of the model's parameters. # Use prior domain knowledge. # Alpha quantifies the idiosyncratic, daily excess return of Apple # ​unaffected by market movements. # Assume that alpha is normally distributed. The values of mu and # sigma are based on previous data analysis and trial and error. alpha = pm.Normal('alpha', mu=0.02, sigma=0.10) # Beta quantifies the sensitivity of Apple to the movements # of the market/S&P 500. # Assume that beta is normally distributed. The values of mu and # sigma are based on previous data analysis and trial and error. beta = pm.Normal('beta', mu=1.2, sigma=0.15) # Residual quantifies the unexpected returns of Apple # i.e returns not predicted by the linear model. # Assume residuals are Half Student's t-distribution with nu=6\. # Value of nu=6 is based on research studies and trial and error. residual = pm.HalfStudentT('residual', sigma=0.20, nu=6) # Mutatable data containers are used so that we can swap out # training data for test data later. feature = pm.MutableData('feature', x_train, dims='feature_data') target = pm.MutableData('target', y_train, dims='target_data') # Expected daily excess returns of Apple are approximately # linearly related to daily excess returns of S&P 500. # The function specifies the linear model and the expected return. # It creates a deterministic variable in the trace object. target_expected = pm.Deterministic('target_expected', alpha + beta * feature, dims='feature_data') # Assign the training data sample to the likelihood function. # Daily excess stock price returns are assumed to be T-distributed, nu=6. target_likelihood = pm.StudentT('target_likelihood', mu=target_expected, sigma=residual, nu=6, observed=target, dims='target_data')

图7-2 是通过以下代码中所示的 graphviz 方法生成的:

# Use the graphviz method to visualize the probabilistic model's data, # parameters, distributions and dependenciespm.model_to_graphviz(model)

采样分布并模拟数据

在我们训练模型之前,我们应该检查先验集合假设的有效性。目标是确保集合对训练阶段足够好。通过进行所谓的先验预测检查来完成这一点。我们使用集合的先验预测分布来模拟可能在过去实现的数据分布。回顾这被称为回测,与预测相对应,后者模拟未来最可能发生的数据分布。

在以下代码块中,我们从先验预测分布中模拟了 21,000 个数据样本。我们让 ArviZ 返回InferenceData对象,以便我们可以可视化和分析生成的数据样本。在推断对象返回后展开显示以检查各组的结构。我们将需要它们进行分析和推断:

# Sample from the prior distributions and the likelihood function # to generate prior predictive distribution of the model.# Take 1000 draws from the prior predictive distribution # to simulate (1000*21) target values based on our prior assumptions.idata = pm.sample_prior_predictive(samples=1000, model=model, return_inferencedata=True, random_seed=101)# PyMC/Arviz returns an xarray - a labeled, multidimensional array # containing inference data samples structured into groups. Note the # dimensions of the prior predictive group to see how we got (1*1000*21) # simulated target data of the prior predictive distribution.idata

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (54)

让我们在进行先验预测检查之前,绘制每个参数的边际先验分布。请注意,核密度估计是连续变量的平滑直方图:

# Subplots on the left show the kernel density estimates (KDE) of # the marginal prior probability distributions of model parameters # from the 1000 samples drawn. Subplots on the right show the parameter # values from a single Markov chain that were sampled sequentially # by the NUTS sampler, the default regression sampler.az.plot_trace(idata.prior, kind='trace', var_names = ['alpha', 'beta', 'residual'], legend=True);

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (55)

# Plot the marginal prior distributions of each parameter with 94% # highest density intervals (HDI).# Note the residual subplot shows the majority of probability density function# within 3 percentage points and the rest extending out into a long tail.# In Arviz, there is no method to plot the prior marginal distributions but we # can hack the plot posterior method and use the prior group instead.az.plot_posterior(idata.prior, var_names = ['alpha', 'beta', 'residual'], round_to=2);

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (56)

# Plot the joint prior probability distribution of alpha and beta with their # respective means and marginal distributions on the side.# Hexabin plot below shows little or no linear correlation with the high # concentration areas in the heat map forming a cloud.az.plot_pair(idata.prior, var_names=['alpha', 'beta'], kind='hexbin', marginals=True, point_estimate='mean', colorbar=True);

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (57)

让我们创建一个包含 1000 条回归线的先验集合,每条线对应集合参数(a, b)的一个取样自其先验分布的值,并绘制未经训练的线性集合的先验均值周围的认知不确定性。我们还使用集合的先验预测分布来模拟数据。这显示了数据分布的认知和偶然不确定性。请注意,训练数据被绘制以便为我们提供一些背景和集合回测的基准:

# Plot the retrodictions of prior predictive ensemble.# Retrieve feature and target training data from the constant_data group.# Feature is now an Xarray instead of a panda's series, # a requirement for ArviZ data analysis.feature_train = idata.constant_data['feature']target_train = idata.constant_data['target']# Generate 1000 linear regression lines based on 1000 draws from one # Markov chain of the prior distributions of alpha and beta.# Prior target values are in 1000 arrays with each array having 21 samples,# the same number of samples as our training data set.prior_target = idata.prior["alpha"] + idata.prior["beta"] * feature_train# Prior_predictive is the data generating distribution of the untrained ensemble.prior_predictive = idata.prior_predictive['target_likelihood']# Create figure of subplotsfig, ax = plt.subplots()# Plot epistemic and aleatory uncertainties of untrained # ensemble's retrodictions.az.plot_lm(idata=idata, x=feature_train, y=target_train, num_samples=1000, y_model = prior_target, y_hat = prior_predictive, axes=ax)#Label the figure.ax.set_xlabel("Excess returns of S&P 500")ax.set_ylabel("Excess returns of Apple")ax.set_title("Retrodictions of untrained linear ensemble")ax.legend(loc='upper left');

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (58)

非常重要的是观察到,随着我们远离图的中心,线性集合的认知不确定性增加。承认对任何模型的无知是我们所追求的:随着其移动到没有数据且必须外推的区域,预期值的不确定性应该增加。我们的集合知道它的局限性。

这在下一个图中更清楚地显示出来,我们将先验预测数据样本生成并分布到 90%高密度区间(HDI),然后进行先验预测检查:

# Plot 90% HDI of untrained ensemble.# This will show the aleatory (data related) and epistemic # (parameter related) uncertainty of model output before it is trained.# Create figure of subplots.fig, ax = plt.subplots()# Plot the ensemble of 1000 regression lines to show the # epistemic uncertainty around the mean regression line.az.plot_lm(idata=idata, x=feature_train, y=target_train, num_samples=1000, y_model = prior_target, axes=ax)# Plot the prior predictive data within the 90% HDI band to # show both epistemic and aleatory uncertainties.az.plot_hdi(feature_train, prior_predictive, hdi_prob=0.90, smooth=False)# Label figure.ax.set_xlabel("Excess returns of S&P 500")ax.set_ylabel("Excess returns of Apple")ax.set_title("90% HDI for simulated samples of untrained linear ensemble")ax.legend();

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (59)

# Conduct a prior predictive check of the untrained linear ensemble.# Create figure of subplots.fig, ax = plt.subplots()# Plot the prior predictive checkaz.plot_ppc(idata, group='prior', kind='cumulative', num_pp_samples=1000, alpha=0.1, ax=ax)# Label the figure.ax.set_xlabel("Simulated Apple excess returns")ax.set_ylabel("Cumulative Probability")ax.set_title("Prior predictive check of untrained linear ensemble");

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (60)

评估和修订未训练的模型

指定概率模型从未容易,需要多次修订。让我们使用定性和定量的先验预测检查来看看我们的先验模型是否合理并准备好进行训练。从最近的图表可以看出,我们的集合在 90% HDI 带内模拟了所有训练数据。然而,先验预测检查显示了一些低概率的极端回报,在最近的过去并未发生。现在让我们计算概率 R 平方度量来评估集合在训练之前的回测:

# Evaluate untrained ensemble's retrodictions by comparing simulated # data with training data.# Extract target values of our training data.target_actual = target_train.values# Sample the prior predictive distribution to simulate # expected target training values.target_predicted = idata.prior_predictive.stack(sample=("chain", "draw"))['target_likelihood'].values.T# Use the probabilistic R-squared metric.prior_score = az.r2_score(target_actual, target_predicted)prior_score.round(2)

先验整体的概率 R 平方指标为 61%,标准偏差为 10%。这超过了我们对先验模型的 55%的性能基准。

请注意,这种表现是通过对先验模型的多次修订而实现的,我改变了先验分布的各种参数值。我还尝试了不同的分布,包括 alpha 参数的均匀先验。所有先验分数均大于 55%,而您在此处看到的接近中位数分数。请随意对先验模型进行修改,直到您满意为止,确保您的整体模型是合理的并且可以通过内样本数据进行训练。

训练和回溯后验模型

现在我们有一个准备好进行训练的整体模型,我们对其反映了先验知识的信心,包括其参数的认知不确定性和可能生成的数据的不确定性。让我们使用实际的内样本数据对其进行训练,计算后验分布。

训练和采样后验

我们执行 PyMC 的默认采样器,即 Hamiltonian Monte Carlo (HMC)算法,这是第二代 MCMC 算法。PyMC 指示 HMC 从所有参数的联合后验分布中生成依赖性随机样本:

# Draw 1000 samples from two Markov chains resulting in 2000 values of each# parameter to analyze the joint posterior distribution.# Check for any divergences in the progress bar. We want 0 divergences for a # reliable sampling of the posterior distribution.idata.extend(pm.sample(draws=1000, chains=2, model=model, random_seed=101))

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (61)

评估 MCMC 采样质量是一个高级主题,不在本入门指南的讨论范围内。由于马尔可夫链中没有发散,让我们分析每个参数的边际分布并对其进行推断:

# Subplots on the left show the kernel density estimates (KDE)# of the marginal posterior probability distributions of each parameter.# Subplots on the right show the parameter values # that were sampled sequentially in two chains by the NUTS samplerwith model: az.plot_trace(idata.posterior, kind='trace', var_names = ['alpha', 'beta', 'residual'], legend=True)

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (62)

# Plot the joint posterior probability distribution of alpha and beta # with their respective means and marginal distributions on the side.# Hexabin plot below shows little or no linear correlation with the # high concentration areas in the heat map forming a cloud.az.plot_pair(idata.posterior, var_names=['alpha', 'beta'], kind='hexbin',marginals=True, point_estimate='mean', colorbar=True);

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (63)

我们可以将后验分布总结为一个 pandas DataFrame 如下:

# Examine sample statistics of each parameter's posterior marginal distribution, # including it's 94% highest density interval (HDI).display(az.summary(idata, kind='stats', var_names = ['alpha', 'beta', 'residual'], round_to=2, hdi_prob=0.94))

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (64)

这个统计摘要为所有参数提供了平均值、标准差和 94%可信区间。请注意,94%可信区间是通过最高密度区间(HDI)计算得出的:hdi_97% – hdi_3% = hdi_94%。

与讨论第四章中频繁主义置信区间的把戏不同,可信区间正是置信区间所假装的但实际上并非如此。可信区间是一种后数据方法,用于从单个实验中进行有效的统计推断。这正是我们作为研究人员、科学家和从业者所需要的。例如,总结表中 beta 的 94%可信区间意味着以下内容:

  • beta 在特定区间[1.12 和 1.55]内的概率为 94%。就是这么简单。与置信区间不同,我们不必处理一些扭曲的定义,这些定义无法解释任何常识的影响。

  • 没有任何分布的渐近正态性假设。

  • 没有不诚实地引用中心极限定理。

  • Beta 不是仅具有偶然不确定性的点估计。

  • 我们对 beta 的确切值一无所知。在社会和经济科学的实际场景中,我们几乎不可能知道任何模型参数的确切值。

  • 像 beta 这样的参数最好解释为具有偶然和认识不确定性的概率分布。

  • 将像 beta 这样的参数建模和解释为不可知变量,而不是不可知常数,更符合实际。

需要注意的是,在后验分布中,可信区间并不唯一。我们的首选方法是在后验分布中选择概率密度最高的最窄区间。这样的区间也被称为最高密度区间(HDI),这是本章节中我们一直在遵循的方法。

PyMC/ArviZ 开发者为何选择默认的可信区间为 94% 或许让你感到疑惑。这是一个提醒,没有物理或社会经济法律规定我们必须选择 95% 或其他特定百分比。我认为这是对传统统计界的微妙讽刺,因为社会和经济科学中神化了 95% 显著水平。无论如何,ArviZ 提供了更改默认区间的方法,如下面的代码块所示:

# Change the default highest density interval to 90%az.rcParams['stats.hdi_prob'] = 0.90

有助于可视化我们模型参数的后验分布,以评估不同概率下的可信区间。以下图表展示了三个参数的 70% 可信区间:

# Plot the marginal posterior distribution of each parameter displaying # the above statistics but now within a 70% HDIaz.plot_posterior(idata, var_names = ['alpha', 'beta', 'residual'], hdi_prob=0.70, round_to=3);

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (65)

大多数情况下,我们必须评估点估计以做出我们的金融和投资决策。我们可以根据参数后验概率分布的位置来评估任何参数的点估计 = 1.15 的可信度。例如,如果我们想评估 beta 的点估计 = 1.15,我们可以将其作为参考值与 HDI 进行比较,如下所示的代码:

# Evaluate a point estimate for a single parameter using its # posterior distribution.az.plot_posterior(idata, 'beta', ref_val=1.15, hdi_prob=0.80, point_estimate='mode', round_to=3);

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (66)

这个图表表明,分布的 94.5% 在 beta = 1.15 以上。由于只有 5.5% 的分布在其下方,所以 beta = 1.15 位于分布的左尾部。请注意,这两个百分比可能因为四舍五入误差而不加总为 100%。因此,合理推断 beta = 1.15 不是最佳估计。

逆推和模拟训练数据

现在我们使用后验预测分布(PPD)来模拟训练集中的数据,并遵循我们在先验预测分布中所做的相同步骤。这将帮助我们评估集合训练的效果:

# Draw 1000 samples each from two Markov chains of the # posterior predictive distribution.with model: pm.sample_posterior_predictive(idata, extend_inferencedata=True, random_seed=101)
# Generate 2000 linear regression lines based on 1000 draws each from # two chains of the posterior distributions of alpha and beta.# Posterior target values are in 2000 arrays, each with 21 samples, # the same number of samples as our training data set.posterior = idata.posteriorposterior_target = posterior["alpha"] + posterior["beta"] * feature_train# Posterior_predictive is the data generating distribution of the # trained ensemble.posterior_predictive = idata.posterior_predictive['target_likelihood']# Create figure of subplots.fig, ax = plt.subplots()# Plot epistemic and aleatory uncertainties of trained # ensemble's retrodictions.az.plot_lm(idata=idata, x=feature_train, y=target_train, num_samples=2000,y_model = posterior_target, y_hat=posterior_predictive, axes=ax)# Label the figure.ax.set_xlabel("Excess returns of S&P 500")ax.set_ylabel("Excess returns of Apple")ax.set_title("Retrodictions of the trained linear ensemble")ax.legend(loc='upper left');

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (67)

# Plot 90% HDI of trained ensemble.# This will show the aleatory (data related) and epistemic # (parameter related) uncertainty of model output after it is trained.# Create figure of subplots.fig, ax = plt.subplots()# Plot the ensemble of 2000 regression lines to show the epistemic # uncertainty around the mean regression line.az.plot_lm(idata=idata, x=feature_train, y=target_train, num_samples=1000,y_model = posterior_target, axes=ax)# Plot the posterior predictive data within the 90% HDI band to show both # epistemic and aleatory uncertainties.az.plot_hdi(feature_train, posterior_predictive, hdi_prob=0.90, smooth=False)# Label the figureax.set_xlabel("Excess returns of S&P 500")ax.set_ylabel("Excess returns of Apple")ax.set_title("90% HDI for simulated samples of trained linear ensemble");

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (68)

# Conduct a posterior predictive check of the trained linear ensemble.# Create a figure of subplots.fig, ax = plt.subplots()# Plot the posterior predictive check.az.plot_ppc(idata, group='posterior', kind='cumulative', num_pp_samples=2000, alpha=0.1, ax=ax)# Label the figure.ax.set_xlabel("Simulated Apple excess returns given training data")ax.set_ylabel("Cumulative Probability")ax.set_title("Posterior predictive check of trained ensemble");

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (69)

评估和修订训练模型

正如我们之前所做的,让我们使用定性和定量检查来查看我们的后验模型是否合理,并准备好进行测试。后验预测检查向我们展示了一系列与苹果最近的历史回报更一致的回报范围。从其追溯预测中,我们可以看到我们的集成已在 90% HDI 带内模拟了大部分它所训练的训练数据。现在让我们计算概率 R 平方指标来评估训练集成的性能:

# Evaluate trained ensemble's retrodictions by comparing# simulated data with training data.# Get target values of our training datatarget_actual = target_train.values# Sample the posterior predictive distribution # conditioned on training data.target_predicted = idata.posterior_predictive.stack(sample=("chain", "draw"))['target_likelihood'].values.T# Compute probabilistic R-squared performance metric.training_score = az.r2_score(target_actual, target_predicted)training_score.round(2)

后验集成的概率 R 平方指标为 65%,标准差为 8%。与未训练的集成相比,这是一个性能改进。我们可以进行这种比较,因为我们使用相同的数据集进行性能比较。它还超过了 60%的训练分数基准。我们的集成已准备好进行其主要测试:基于样本外或未见过的测试数据的预测。

测试和评估集成预测

我们现在确信,我们训练的集成反映了我们的先验知识和从样本内数据中获得的新学习。此外,集成已经根据训练数据更新了其参数概率分布,包括它们的认识不确定性。因此,集成生成的数据分布也已更新,包括它们的偶然不确定性。

带我们到这里的各种步骤都是必要的,但不足以决定我们是否要将我们的集成预测的硬赚资本承诺下去。对于任何 ML 系统来说,最重要的测试之一是它在先前未见的样本外测试数据上的表现。

交换数据并重新采样后验预测分布

PyMC 提供了可变数据容器,使得在不对集成做任何其他更改的情况下可以交换训练数据和测试数据。现在,我们必须使用新的测试数据重新对后验预测分布进行重采样,以用于我们的目标和特征。

# Now we use our trained model to make predictions based on test data. # This is the reason we created mutable data containers earlier.with model: #Swap feature and target training data for their respective test data. pm.set_data({'feature': x_test, 'target': y_test}) #Create two new inference groups, predictions and predictions_constant_data #for making predictions based on features in the test data. pm.sample_posterior_predictive(idata, return_inferencedata=True, predictions=True, extend_inferencedata=True, random_seed=101)

预测和模拟测试数据

这创建了一个名为预测的新推断组。我们重复了在训练阶段所做的相同步骤,但使用测试数据:

# Get feature and target test data.feature_test = idata.predictions_constant_data['feature']target_test = idata.predictions_constant_data['target']# Prediction target values are in 2000 arrays, each with 10 samples,# the same number of samples as our test data set. Predict target values # based on posterior values of regression parameters and feature test data.prediction_target = posterior["alpha"] + posterior["beta"] * feature_test# Predictions is the data generating posterior predictive distribution # of the trained ensemble based on test data.simulate_predictions = idata.predictions['target_likelihood']# Create figure of subplots.fig, ax = plt.subplots()# Plot the 2000 regression lines showing the epistemic and # aleatory uncertainties of out-of-sample predictions.az.plot_lm(idata=idata, x=feature_test, y=target_test, num_samples=2000, y_model = prediction_target, y_hat=simulate_predictions, axes=ax)# Label figureax.set_xlabel("Excess returns of S&P 500")ax.set_ylabel("Excess returns of Apple")ax.set_title("Predictions of trained linear ensemble")ax.legend(loc='upper left');

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (70)

# Plot 90% HDI of trained ensemble. This will show the aleatory # (data related) and epistemic (parameter related) uncertainty # of trained model's predictions based on test data.# Create figure of subplots.fig, ax = plt.subplots()# Plot the ensemble of 2000 regression lines to show the epistemic uncertainty # around the mean regression line.az.plot_lm(idata=idata, x=feature_test, y=target_test, num_samples=2000, y_model = prediction_target, axes=ax)# Plot the posterior predictive data within the 90% HDI band # to show both epistemic and aleatory uncertainties.az.plot_hdi(feature_test, simulate_predictions, hdi_prob=0.90, smooth=False)# Label the figure.ax.set_xlabel("Excess returns of S&P 500")ax.set_ylabel("Excess returns of Apple")ax.set_title("90% HDI for predictions of trained linear ensemble")ax.legend();

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (71)

评估、修订或部署集成

从最近的图中,我们可以看到我们的集成在 90% HDI 带内模拟了所有的测试数据。让我们计算概率 R 平方指标来评估集成的预测性能:

# Evaluate out-of-sample predictions of trained # ensemble by comparing simulated data with test data.# Get target values of the test data.target_actual = target_test.values# Sample ensemble's predictions based on test data.target_predicted = idata.predictions.stack(sample=("chain", "draw"))['target_likelihood'].values.T# Compute the probabilistic R-squared performance metric.test_score = az.r2_score(target_actual, target_predicted)test_score.round(2)

经过测试的集成的概率 R 平方指标为 69%,标准差为 13%。它优于我们的训练分数,并超过了 65%的测试分数基准。我们已准备将经过测试的集成部署到我们的模拟交易系统或其他使用实时数据源和虚拟资本的模拟金融系统中。这使我们能够在准备将其投入生产并将真正的资本投入到我们的系统之前,在实时环境中评估我们的集成表现。

在本章中,我们看到概率线性回归(PLE)建模与传统的最大似然估计(MLE)建模有根本的区别。概率框架为一般情况下的物理现象建模和特定的金融现实提供了系统化方法。

传统的金融模型使用 MLE 方法计算适合数据的参数的最优值。如果我们处理的是时间不变的统计分布,那将是合适的。但在金融领域,这是不适当的,因为我们没有这样的时间不变分布。从嘈杂的金融数据中学习最优参数值是次优的和风险的。在这种情况下,我们不应该依赖一个专家,而是依赖于一群专家,他们可以为多种可能的情景提供合理的综合意见。这正是概率集合为我们所做的。它为我们提供了模型参数所有估计的加权平均值。

在概率回归建模中,与传统的线性建模相反,数据被视为固定的,而参数被视为变量,因为常识和事实支持这种方法。不需要像 L1 和 L2 正则化那样的常规使用临时方法,这些方法仅仅是伪装成先验概率分布。最重要的是,在概率范式中,我们摆脱了“让数据自己说话”的意识形态口号以及存在“真实模型”或“真实参数”的非科学主张。

概率集合并不对分析优雅性做任何假设。它们不会用点估计和仅适用于玩具问题的伪分析解决方案让我们对我们的金融活动产生虚假的安全感。概率集合是量化无规和认知不确定性的数值模型。这些模型适用于金融和投资的固有不确定性。最重要的是,它提醒我们关于我们知识、推论和预测的不确定性。

在接下来的章节中,我们将探讨如何在面对三维不确定性和不完整信息的情况下,应用我们的概率估计和预测进行决策。

Dürr, Oliver, and Beate Sick. Probabilistic Deep Learning with Python, Keras, and TensorFlow Probability. Manning Publications, 2020.

Gelman Andrew, Ben Goodrich, Jonah Gabry, and Aki Vehtari. “R-Squared for Bayesian Regression Models.” The American Statistician 73, no. 3 (2019): 307–309. https://doi.org/10.1080/00031305.2018.1549100.

Murphy, Kevin P. Machine Learning: A Probabilistic Perspective. Cambridge, MA: The MIT Press, 2012.

Martin, Osvaldo A., Ravin Kumar, and Junpeng Lao. Bayesian Modeling and Computation in Python. 1st ed. Boca Raton, FL: CRC Press, 2021.

¹ 改编自维基共享资源上的一幅图像。

² Oliver Dürr 和 Beate Sick,《使用似然方法构建损失函数》,收录于《Python、Keras 和 TensorFlow Probability 的概率深度学习》(Manning Publications, 2020),第 93–127 页。

³ Kevin P. Murphy,《稀疏线性模型》,收录于《机器学习:概率视角》(The MIT Press, 2012),第 421–78 页。

⁴ Andrew Gelman 等,《贝叶斯回归模型的 R 平方》,《The American Statistician》73 卷 3 期(2019 年):第 307–309 页,https://doi.org/10.1080/00031305.2018.1549100

但我意识到,随着游戏的进行,胜率实际上取决于剩余牌堆中还有哪些牌,并且随着游戏的进行,这一优势会发生变化,有时候更有利于赌场,有时候则更有利于玩家。

——Edward O. Thorp 博士,有史以来最伟大的量化赌徒和交易员

在前一章中,我们设计、开发、训练和测试了一个生成式线性回归线集合。概率线性回归与频率主义或传统线性回归有根本区别,如第四章所介绍的。首先,频率主义线性回归生成单一回归线,其参数经过优化以适应由既非平稳又非遍历的随机过程生成的嘈杂金融数据集。而概率线性回归生成多条回归线,每条对应不同的参数组合,能够以不同的可能性拟合观察到的数据分布,同时与先验知识和模型假设保持一致。

生成式集成具有不断学习和修订模型参数的良好特性,同时明确陈述从数据和显式陈述的过去知识中得出的模型参数。真正区分生成式集成与传统对手的是,它们能够无缝地模拟新数据和以观察数据和模型假设为条件的反事实知识,而不管数据集的大小或数据的顺序如何。

生成式集成在透明的模型假设和概率计算的严谨性下进行所有这些活动,同时适当地缩放此类预测和反事实知识中固有的偶然性和认知不确定性。概率模型了解其局限性,并通过在其外推中扩展其最高密度区间来诚实地表达其无知。

在前三章中,我们主要专注于推断我们集成参数的分布。在本章中,我们将注意力集中在使用我们训练和测试的生成式集成的模拟输出来在面对三维不确定性和不完整信息时做出财务和投资决策上。换句话说,我们的重点将放在我们模型的数据生成后验预测分布上,而不是其参数的后验分布。总体而言,集成的输出对于决策者来说更为重要和必需,例如,股价回报的分布对高级管理人员和客户比使用模型生成它们的α和β参数的分布更有意义。

在回顾本书中使用的概率推断和预测框架后,我们通过使用客观函数系统化我们的决策方法。在概率决策制定的第一个示例中,我们探讨了如何使用框架将主观人类行为与数据客观性和概率计算的严谨性结合起来。金融与投资涉及人而不是粒子或摆锤,一个不能整合人类内在主观性的决策框架是毫无用处的。这也强调了决策制定既是一门艺术又是一门科学,其中人类的常识和判断至关重要。

风险管理和企业财务主管常用的两个损失函数是风险价值(VaR)和预期缺口(ES)。我介绍了计算这些风险度量的新方法,作为生成集成的一个组成部分。为了正确使用集成平均数及其模拟数据,我们探讨了遍历性的统计概念,以理解为什么预期值或集成平均数存在严重局限,不像传统经济理论所说的那样有效。

最后,我们探讨了如何在不会有任何财务破产风险的情况下,将我们辛苦赚来的资本分配到有利的投资机会上的复杂问题。我们研究了赌博和投资之间的区别,做出关于一次性投资和一系列投资的决策。我们应用了马尔科维茨的均值方差和凯利的资本增长投资标准这两个最重要的资本分配算法,并分析了它们的优势和劣势。

让我们回顾并总结本书下半部分使用的框架,以推断模型参数、逆推样本训练数据分布以及预测样本外测试数据分布。我们将通过使用来自第五章的债务违约示例来说明这一框架——在您作为投资高收益债务或“垃圾”债券的对冲基金分析师时:

  1. 指定在样本空间中可能发生的所有场景或事件结果。场景 S[1] 和 S[2] 是我们想要估计的模型参数:

    • S[1] 是 XYZ 投资组合公司违约其债务义务的场景。S[2] 是它不违约的场景。

    • 场景 S[1] 和 S[2] 是互斥且完全穷尽的,这意味着 P(违约) + P(不违约) = 1。

  2. 研究并利用与问题领域相关的任何个人、机构、科学和常识,这些可能有助于您设计模型并在观察任何新数据之前为样本空间中的各种参数分配先验概率。这是模型的先验概率分布。

    • 您的对冲基金管理团队利用其经验、专业知识和机构知识来估计参数 S[1] 和 S[2] 的以下先验概率:

      • P(default) = 0.10 和 P(No default) = 0.90
  3. 应用类似的先验知识和领域专业知识来为每个模型参数指定似然函数。了解从您的参数模型可能生成哪些数据。

    • 您使用了基金专有的 ML 分类系统,利用了有关债务违约者和非违约者的宝贵数据库的特征。特别是,您基金的分析师发现最终违约的公司会积累 70% 的负面评价。然而,最终未违约的公司只会积累 40% 的负面评价。

    • 模型的似然函数为:P(negative | default) = 0.70 和 P(negative | no default) = 0.40

  4. 使用模型的先验预测分布生成数据 D′。该模型通过在其参数的先验概率分布上平均似然函数来生成尚未见过的数据。先验预测分布作为一个初始模型检查,通过模拟我们可能过去观察到的数据来进行。先验预测分布是对过去数据的逆向预测。通常,我们可以将数据分布与我们的先验知识进行比较。特别是,我们可以将其模拟数据与训练数据进行比较。

    • 基于您模型的所有假设编码在您的先验概率分布和似然函数中,您可以期望 XYZ 投资组合公司以以下概率生成负面和正面评级:

    • P(negative) = P(negative | default) P(default) + P(negative | no default) P( no default) = (0.70 × 0.10) + (0.40 × 0.90) = 0.43

    • P(positive) = P(positive | default) P(default) + P(positive | no default) P( no default) = (0.30 × 0.10) + (0.60 × 0.90) = 0.57

  5. 通过观察样本内数据 D 进行先验预测检查,并将其与上一步生成的模拟数据进行比较。

    • 如果数据的逆向预测符合您的要求,则模型已准备好进行训练,您应该进入下一步。

    • 否则,请审查参数以及先验概率分布和似然函数的函数形式。

    • 重复步骤 2–4,直到模型通过您的先验预测检查并准备好进行训练。

  6. 将逆概率规则应用于更新模型参数的分布。我们模型的后验概率分布根据实际训练数据更新我们的先验参数估计。

    • 您观察到一个负面评级,并将 XYZ 公司的违约后验概率更新如下:

    • P(default | negative) = P(negative | default) P(default) / P(negative) = (0.70 × 0.10)/0.43 = 0.16

  7. 使用模型的后验预测分布生成数据 D″。训练模型通过在更新参数的后验概率分布上对似然函数进行平均,模拟尚未见到的数据。后验预测分布充当第二个模型检查,通过回推训练过的样本数据并预测我们可能在后续测试中观察到的样本外或测试数据分布。

    • 基于模型先验概率分布中编码的所有模型假设、似然函数和新观察到的负面评级,您可以预期 XYZ 投资组合公司将以以下更新的概率生成新的正面评级“positive″和负面评级“negative″:

    • P(negative″ | negative) = P(negative″ | default) P(default | negative) + P(negative″ | no default) P( no default | negative) = (0.70 × 0.16) + (0.40 × 0.84) = 0.35

    • P(positive″) = 1 − P(negative″) = 0.65

现在我们面临着关于我们推断结果的输出中最重要的决策之一:我们将如何应用其结果来做出决策,以便在不完全信息和三维不确定性面前增加实现我们目标的几率?

为了在面对不完全信息和不确定性时做出系统化决策,我们需要指定一个客观函数。损失函数是一种特定类型的客观函数,其目标是最小化我们根据推理和预测所做每个决策的预期值或加权平均损失¹。简单来说,损失函数量化我们基于我们所做推断和预测的每个决策的损失。

让我们继续通过我们的债务违约示例来理解损失函数的作用以及如何将其应用于由我们的生成集成模拟的结果。然后我们将其推广,以便我们可以应用于任何使用任何类型的客观函数进行的决策活动。

集成主观性

最困难的决策是涉及情况的客观逻辑和涉及的各种人的同样理性的主观自我利益之间复杂相互作用的决策。当然,我们为不同决策分配的损失数值可以是主观的。在这种情况下,损失的绝对数值并不重要。重要的是我们一致地校准损失,以反映从我们所做各种决策中逻辑上产生的后果的重要性。

假设您正在上述对冲基金中担任分析师。基本上,您的工作是在数据分析方面表现出色,并遵循您的投资组合经理的指示,特别是关于任何投资组合公司债券的风险限制。在您的工作中面临的最大风险是被解雇并失去主要收入来源。以下是您在投资管理初期职业生涯中可能面临的情景:

  • 由于连续两次负面评级,XYZ 公司债券的违约概率现在为 25%。

  • 你的投资组合经理已指示你在 XYZ 投资组合公司的违约概率超过 30% 时召开风险管理会议,这是她根据自己的经验和专业知识立下的风险限制。

  • 你渴望在不久的将来成为一名投资组合经理,并向你的经理和同事展示判断力和承担风险的能力。

你的机器学习系统为 XYZ 债券分配的下一个评级几乎肯定不会决定 XYZ 债券违约的命运。但在你看来,下一个评级将对你的生活产生巨大影响,可能媲美任何一部莎士比亚悲剧。结果可能会从你被解雇到你被提升为投资组合经理。在下一个评级之前是否与你的投资组合经理开会,这是一个问题。为了帮助你解决困境,我们需要指定下一个评级的概率分布、XYZ 的违约概率突破风险限制以及你在观察评级前召开或不召开与投资组合经理的会议可能遭受的损失。

让我们计算一下,如果你观察到的下一个评级是负面的(这将使连续三次负面评级),XYZ 公司债券的违约概率是多少:

  • P(3 negatives | 默认) = 0.70 × 0.70 × 0.70 = 0.343

  • P(3 negatives | 无默认) = 0.40 × 0.40 × 0.40 = 0.064

  • P(3 negatives) = P(3 negatives | 默认) P(默认) + P(3 negatives | 无默认) P(无默认) = 0.343 × 0.10 + 0.064 × 0.90 = 0.0343 + 0.0576 = 0.0919

  • P(默认 | 3 negatives) = P(3 negatives | 默认) P(默认) / P(3 negatives) = 0.0343/0.0919 = 0.37

因此,如果下一个评级是负面的,你对 XYZ 公司违约概率的估计将约为 37%,并且将超过你的投资组合经理设定的 30% 的风险限制。但是,如果我们已经观察到了 2 个负面评级,那么 XYZ 公司下一个评级是负面评级的概率是多少?我们已经计算了给定 XYZ 公司连续两次负面评级的后验预测分布:

  • P(negative′ | 2 negatives) = P(negative′ | 默认) P(默认 | 2 negatives) + P(negative′ | 无默认) P(无默认 | 2 negatives) = (0.7 × 0.25) + (0.4 × 0.75) = 0.475

  • P(positive′ | 2 negatives) = 1 – P(negative′ | 2 negatives) = 0.525

看来情况不利于与你的投资组合经理开会,因为 XYZ 公司的下一个评级只有 47.5% 的可能性是负面的。然而,这些可能性并未考虑到你的决定对你的职业生涯和同事的影响。更具体地说,我们需要弄清楚你和你的投资组合经理根据你召开或不召开与她预先的风险管理会议可能面临的损失。

估算损失

让我们定义一个损失函数,L(R, D″),来量化你可能因为基于样本外数据预测 D″而做出的决策 R 而经历的损失。

现在我们列举我们的结果数据和决策空间。

  • XYZ 债券的可能评级为 D[1]″ = 负″和 D[2]″ = 正″。请注意,这些数据预测是相互排斥且互相穷尽的。

基于这个未来的预测,即样本外数据,给定观察到的数据 D,你可能的决策(R,D″),在此列举如下:

(R[1],D[1]″)

根据你对 XYZ 债券下一次评级将为负且公司违约概率将突破她的风险限制 30%的预测与你的投资组合经理开会。

(R[2],D[2]″)

不要根据你对 XYZ 债券下一次评级将为正且公司的违约概率将远低于她的风险限制的预测与你的投资组合经理开会。

(R[3],D[2]″)

根据你对 XYZ 公司下一次评级将为正的预测,与你的投资组合经理开会。说服你的经理利用当前折价的市场价格购买 XYZ 债券,以增加她的头寸规模。

(R[4],D[1]″)

不要根据你对 XYZ 债券下一次评级将为负的预测与你的投资组合经理开会。显然,这将是愚蠢的,也不是你曾经考虑过的选项。我们仅仅是为了完整性而列出它。

决策(R[1],D[1]″)、(R[2],D[2]″)和(R[3],D[2]″)是你唯一能做出的可行决策,它们是相互排斥且互相穷尽的。我们需要给这些决策分配损失,以反映它们对你生活的影响。

决策(R[1], D[1]″)的可能损失——你与你的投资组合经理开会告知她基于你的预测下一次评级将为负的 XYZ 债券即将违约她的风险限制——如下:

  • 一个可能的结果是 XYZ 公司的下一次评级为负。这对你和你的投资组合经理来说是一个很好的结果。你将展现出明智的判断、预见力和风险管理——这是投资经理最重要的品质之一。你的投资组合经理将会由于你的出色表现而积极地管理她的头寸风险。因此,你将朝着成为投资组合经理的职业目标取得重大进展。

    • 你的损失函数通过给你奖励或负损失来反映这个有利的结果。让我们将其赋予一个值+100 点:L(R[1],D[1]″ | 负″) = +100
  • 另一种可能的结果是,XYZ 公司的下一个评级结果为正面。这对你来说不是一个好结果。你的投资组合经理将对她为保护她的 XYZ 债券而进行的对冲产生一些损失,这些对冲是基于你之前的预测。她可能会怀疑你惊慌失措,因为负面评级的概率为 47.5%,低于抛硬币的概率。她可能会得出结论,你可能没有成为投资组合经理所需的魄力和果断。你近期成为投资组合经理的梦想将逐渐消失。但让我们看看这种可能情景的好的一面:你仍然有工作,这可能会成为你的一个很好的学习经验。

    • 你的损失函数将通过给你一个小的损失,比如-100 点,来反映这一点:L(R[1],D[1]″ | positive″) = −100

对于决策(R[2], D[2]″),你不会根据对 XYZ 债券的评级为正的预测而召开会议,你可能会有以下损失:

  • 一个可能的结果是,XYZ 公司的下一个评级结果为负。这是你的噩梦情景。现在,XYZ 公司违约的概率将超过你的投资组合经理的风险限制。XYZ 公司债券的市场价格将受到打击。你的经理的投资组合将开始表现不佳,她的年终奖金将受到威胁。很可能,她会和你召开一次会议。你将被祝愿未来一切顺利,并受到安保人员的礼貌护送离开。

    • 这种糟糕的结果通过在损失函数中分配一个大的损失来进行编码,比如给它分配-1000 points的损失:L(R[2], D[2]″ |negative″) = −1000
  • 另一种可能的结果是 XYZ 公司的下一个评级可能是正面的。这对你来说是一个好结果。然而,对于你的经理来说,不清楚是好判断还是运气在你的决策和预测中发挥了作用。毕竟,下一个评级为正面的概率只有 52.5%,略高于抛硬币。她可能会得出结论,你做得太危险了。与她对(R[1], D[1]″|positive″)的反应形成鲜明对比。两者都是不一致但基于随时会因任何原因而改变的主观风险态度的理性观点。但这正是人们和市场可以并且确实会表现出的方式。我们只能尽力应对。

    • 你的损失函数将反映这种中性结果,没有损失或 0 分:L(R[2], D[2]″ | positive″) = 0

最后,决策(R[1], D[2]″)的可能损失情况是:你根据对 XYZ 债券评级为正的预测召开会议,并说服你的投资组合经理增加她的头寸:

  • 与您的投资组合经理会议后的一个可能结果是 XYZ 债券的下一个评级正如预期的那样为 positive″。这对您来说是最好的结果。基于您的建议,您的投资组合经理可能已经以折价的市场价格购买了更多 XYZ 债券。她很可能已经抓住机会利用 XYZ 债券价格在新的积极信息上涨时获得快速利润。您已经展示了预测能力和赚钱的智慧。这将令基金的所有人印象深刻,尤其是您的基金经理,她的奖金支票肯定会增加。现在似乎只是时间问题,您将管理一个数百万美元的投资组合。

    • 损失函数将通过给予您更大的奖励或负损失来校准这个积极的奖励。让我们将其赋予 +500 分的值:L(R[1],D[2]″ | positive″) = +500
  • 与您的投资组合经理会议后的另一种结果是 XYZ 公司的下一个评级结果为负面。这对您来说将是最糟糕的结果。现在 XYZ 公司违约的概率已经超过了您的投资组合经理的风险限制。XYZ 公司债券的市场价格将大幅下跌,而她的头寸规模却增大了。您经理的投资组合表现将在基金中排名垫底,她的工作将受到威胁。将没有什么可以讨论的,您将被保安人员护送出门。

    • 损失函数通过指定一个巨大的损失值 –2000 分来校准这种灾难性的结果:L(R[2], D[2]″ |negative″) = −2000

最小化损失

现在我们可以计算每个决策(R[1], D[1]″)、(R[2], D[2]″)、(R[3], D[2]″)的预期损失,通过对后验预测概率分布 P(D″ | D) 进行平均,对于 XYZ 债券的下一个评级,假设我们已经观察到了 2 个负面评级:

  • E[L(R[1], D[1]″)] = P(negative″ | 2 negatives) L(R[1], D[1]″ | negative″) + P(positive″ | 2 negatives) L( R[1],D[1]″ | negative″) = 0.475 × +100 + 0.525 × –100 = –5 分

  • E[L(R[2], D[2]″)] = P(negative″ | 2 negatives) L(R[2], D[2]″ | negative″) + P(positive″ | 2 negatives) L( R[2], D[2]″ | positive″) = 0.475 × –1000 + 0.525 × 0 = –475 分

  • E[L(R[3], D[2]″)] = P(negative″ | 2 negatives) L(R[3], D[2]″ | negative″) + P(positive″ | 2 negatives) L( R[3], D[2]″ | positive″) = 0.475 × –2000 + 0.525 × +500 = –687.5 分

在概率决策中,你能做出的最佳决策是使得你特定决策后的预期损失的平均值最小化。在最小化损失的公式中,我们对模拟数据的后验预测分布进行了损失函数的平均。由于 E[L(R[1], D[1]″)] > E[L(R[2], D[2]″)] > E[L(R[3], D[2]″)],因此你应该决定选择 (R[1], D[1]″)。你最好的选择是尽快与我们的投资组合经理会面,并告知她 XYZ 债券可能会超出她的风险限制,她需要适当管理她的头寸。这个选择最小化了你的职业风险。

众所周知,现实生活中的决策是一门艺术和一门科学。职业风险、高管自我、自相矛盾的利益、贪婪和对人们的恐惧是全世界金融交易最强大的驱动因素之一——从平凡的日常交易到最大公司的兼并重组,再到美联储加息。你若忽视这些主观决策驱动因素,可能会面临风险,并错失盈利,甚至是改变生活的机会。

无论如何,基于我们最小化职业风险的实践,我们可以假设,对于离散分布,通过后验预测分布 P(D″|D) 和损失函数 L(R, D″),最佳决策是通过最小化所有可能行动 R 的预期损失 E[L(R)],如下所示:

  • E [ L ( R ) ] = arg min R i L ( R , D i '' ) × P ( D i '' | D )

对于连续函数,可以通过将求和替换为积分来扩展这个离散函数的预期损失公式。我们现在可以将损失函数应用于我们在回归集成中遇到的连续分布。与之前一样,我们通过最小化所有可能行动 R 的预期损失来达到目的,如下所示:

  • E [ L ( R ) ] = arg min R L ( R , D '' ) × P ( D '' | D ) d D ''

这些公式使得我们的决策框架在应用时看起来比实际上更困难。真正困难的是理解和应用我们集成的预期值,正如我们将在下一节讨论的那样。

投资者、交易员和企业高管的目标是从高风险的事业中获利,这些投资不仅预期会出现财务损失,而且在投资持有期内是不可避免的。在这些概率性事业中取得成功的关键是积极和系统地管理损失,以防它们在任何有限的时间段内超过利润或损害资本基础。在第三章中,我们探讨了用于风险管理的波动率的不足之处。价值-at-risk(VaR)和预期缺失(ES)是两种风险测量方法,几乎所有金融机构、政府监管机构和非金融机构的公司财务主管广泛使用。² 实践者对计算这些测量方法使用的方法有深入的理解非常重要,因为它们也存在严重的缺陷,可能导致对金融风险的灾难性错误定价。在本节中,我们总结了风险管理的一般原则以及如何特别应用上述风险测量方法于生成性集合。

资本保值

沃伦·巴菲特,有史以来最伟大的自由股票投资者,对投资股票等高风险资产有两条着名的规则:

  • 规则一:不要亏钱。

  • 规则二:不要忘记规则一。

巴菲特的智慧建议是,在进行高风险投资时,我们必须更加关注影响投资的常见风险的管理,而不是它未来潜在的回报。最重要的是,我们不能忘记,投资的主要目标是保证资本的回报;资本的回报只是次要目标。在投资的未来回报可能是有利可图的情况下,我们不应在投资机会变得有利之前就破产。此外,即使当前的投资不如预期那样成功,只要我们保持资本基础,总会有未来的其他投资机会。巴菲特所强调的主要原则背后—凭借几十年的卓越投资经验获得—是重要的统计学概念递进性,接下来我们将探讨这个概念。

递进性

让我们回到上一章中的线性集合,并分析我们的模型假设和观察数据所生成的 20,000 个后验预测样本。重要的是要注意,后验预测分布生成了一系列可能的未来结果,每个结果都可能由我们的集合中任何与其模型假设和用于训练和测试的数据一致的参数值组合生成。

尽管我们可以像后来那样轻松计算后验预测样本的描述性统计,但我们不能直接将任何样本结果与模型参数的具体值关联起来。当然,我们始终可以推断每个参数的可信区间,这些参数可能是从其边际后验分布生成样本,就像我们在前一章中所做的那样。让我们使用以下 Python 代码总结苹果股票假设头寸的预测超额回报:

# Flatten posterior predictive xdarray into one numpy array of # 20,000 simulated samples.simulated_data = target_predicted.flatten()# Create a pandas dataframe to analyze the simulated data.generated_data = pd.DataFrame(simulated_data, columns=["Values"])# Print the summary statistics.print(generated_data.describe().round(2))# Plot the predicted samples of Apple's excess returns generated by # tested linear ensemble.plt.hist(simulated_data, bins='auto', density=True)plt.title("Apple's excess returns predicted by linear ensemble")plt.ylabel('Probability density'), plt.xlabel('Simulated excess returns of Apple');

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (72)

更重要的是,这些后验预测分布中的每日超额回报并不预测这些回报的具体时间或持续时间,只是基于我们集成模型假设和训练及测试期间观察到的数据,预测未来可能回报的分布。我们的集成平均值是我们假设投资于苹果股票的预期价值。让我们看看它是否能帮助我们决定是否持有、增加或减少我们的头寸规模。

简单的损失函数,L(R, D″),即我们头寸规模的市场价值乘以后验预测分布中每个模拟数据点的苹果公司的每日超额回报:

  • L(R, D″) = R × D″

    • R 是我们投资于苹果股票的市场价值。

    • D″ 是我们线性集成生成的模拟每日超额回报。

在下面的 Python 代码中,我们假设我们对苹果股票的假设投资价值为$100,000,并计算所有模拟超额回报的集成平均值:

#Market value of position size in the portfolioposition_size = 100000#The loss function is position size * excess returns of Apple #for each prediction. losses = simulated_data/100*position_size#Expected loss is probability weighted arithmetic mean of all the losses #and profitsexpected_loss = np.mean(losses)#Range of losses predicted by tested linear ensemble.print("Expected loss on investment of $100,000 is ${:.0f}, with max possible loss of ${:.0f} and max possible profit of ${:.0f}".format(expected_loss, np.min(losses), np.max(losses)))Expected loss on investment of $100,000 is $-237, with max possible loss of $-10253 and max possible profit of $8286

–$237 的预期值几乎是基于$100,000 投资的四舍五入误差。这表明,如果我们保持我们的头寸,假设市场条件保持与我们模型编码和观察到的数据大致相同,我们可以预期几乎没有损失或损失很小。考虑到我们的头寸可能随时间发生的广泛损失和利润的大范围,从–10.25% 到+8.29%,–0.24% 的预期值是否具有误导性和风险性?看起来,集成平均值或预期值对风险管理决策是一个无用且危险的统计量。让我们深入了解预期值的统计概念,以理解为什么以及如何适当地应用它。³

回想一下,当我们估计任何变量(如投资)的期望值时,我们计算所有可能结果及其相应回报的概率加权平均值。我们还假设这些结果彼此独立且同分布,即它们是从同一随机过程中抽取的。换句话说,投资的期望值是概率加权的算术平均值。值得注意的是,期望值不依赖于时间,并且也被称为随机过程或系统的集合平均值。如果您有一组独立同分布的投资或交易同时进行,期望值是决策的有用工具。或者,如果您经营赌场业务,您可以计算在任何给定时间所有赌徒的预期收益。

然而,作为投资者和交易者,我们只观察到我们的投资随时间变化的特定路径或轨迹。我们按时间顺序测量我们投资的结果和回报,作为有限时间内的时间平均值。特别地,随着时间的推移,我们可能只观察到所有可能结果及其相应回报的子集。在我们的投资轨迹在时间上实现每一个可能的预测结果和回报的不太可能的情况下,轨迹的时间平均值几乎肯定会收敛到集合平均值。这样的随机过程被称为遍历的。我们在第六章中简要讨论了这一点,在马尔可夫链部分。

一个遍历投资过程的特殊之处在于,投资的期望值总结了任何投资者在足够长的时间内持有该投资所观察到的回报。当然,正如在第六章中提到的,这假设在马尔可夫链中没有截断投资者财富轨迹的吸收状态。正如我们将在本节和下一节看到的,投资过程是非遍历的,依赖期望值来管理风险或回报可能导致巨大损失,甚至是财务破产。

即使假设一个过程是遍历的,我们的投资的时间平均值也不考虑结果和回报序列的实际顺序。为什么要考虑呢?毕竟,这只是另一个算术平均值。值得注意的是,这也假设投资者是被动的、买入并持有的投资者。投资在市场上遵循的回报具体顺序是至关重要的,因为这会导致不同类型投资者的不同后果和决策。一个例子将有助于阐明这一点。

一个股票轨迹,先是亏损了–10.25%,然后是获利+8.29%,对于投资者来说与另一个轨迹(先是获利+8.29%,然后是亏损–10.25%)带来了不同的决策和后果。尽管在这两个两步序列中股票最终都以–2.81%的买入和持有投资者的方式结束。这种上涨和下跌的回报序列被称为波动性拖累,因为它将预期回报(算术平均值)拖至几何平均值或复合回报。如果波动性拖累是恒定的,复合回报 = 平均回报 - 回报方差的 1/2。但是对于投资者来说,波动性拖累的风险可能因其投资策略而大不相同。让我们看看为什么。

假设对于投资组合中的任何股票头寸,投资者有每日亏损限制–10%和每日盈利限制+5%。前一股票序列(–10.25%,+8.29%)将会触及投资者的止损限价单,使其退出持仓。更加令人不快的是,第二天股票强劲反弹+8.29%,而投资者已经在他们的投资中遭受了–10%的实现损失。现在,与持有其头寸的同行或具有–10.26%或更低风险限制的其他投资者相比,投资者将下跌–7.19%。谈论在我们投资者的伤口上撒盐!现在,投资者很难决定在如此惨痛的猛烈抽打之后是否重新进入他们的持仓。

现在让我们考虑一下如果股票遵循后一种序列(+8.29%,–10.25%)会发生什么。当股票飙升+8.29%时,投资者将获利+5%。他们会对未在最近的高价位卖出自己的持仓感到一些遗憾。但没有人能够完美地时间市场或者能够持续做到。然而,第二天,当股票下跌–10.25%时,投资者会感到非常聪明和满意。他们将通过+7.81%超额表现而超过同行,如果愿意的话可以炫耀一番。现在投资者可以相当轻松地重新进入股票持仓,因为他们的平均成本已经降低了+5%。

这个例子展示了波动性(或回报标准偏差)作为风险度量的另一个无意义之处,正如第三章中所讨论的那样。波动性只是另一种集成平均值,并非遍历性。在第一个轨迹中,波动性损害了投资者的回报,在第二个轨迹中却帮助了他们。

尽管这些数字是特定于我们的概率集合,但任何时间段内的投资轨迹对大多数积极的投资者和一般交易者来说都可能产生深远的影响。回报序列的特定排序影响了投资者的决策、经验和投资成功。关于“平均投资者”在投资上体验回报的概念只是另一个金融童话故事。

生成价值风险

与依赖集成平均值不同,一种称为价值风险 (VaR) 的流行损失函数可以帮助我们在任何时间段做出更好的风险管理决策。VaR 是回报分布的百分位数度量,代表了某个百分比的回报 (或损失) 位于其下方的值。换句话说,VaR 是在给定概率下在指定时间段内预期的最大损失。参见图8-1,显示了 VaR 和条件 VaR (CVaR),下一小节将对其进行解释。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (73)

图8-1. 价值风险 (VaR) 和条件 VaR (CVaR),也称为预期损失 (ES),以 alpha 概率显示的一个假想投资回报分布⁴

与波动性不同,这一指标基于对风险的常识性理解。例如,假设投资组合的每日 VaR 为 $100,000,概率为 99%。这意味着我们估计有:

  • 99% 的概率,投资组合的每日损失不会超过 $100,000。

  • 每日损失超过$100,000 的概率为 1%。

一般来说,VaR 的时间跨度通常与决策者认为需要采取行动的时间有关,例如清算股票头寸的时间。时间跨度越长,产生的 VaR 值通常越大,因为未来的不确定性越多。

在第三章中,我们使用蒙特卡罗模拟揭示了将波动性作为风险度量的深刻缺陷。在行业中,通常使用蒙特卡罗模拟来使用理论或经验模型估算复杂投资或投资组合的 VaR。风险估计称为蒙特卡罗 VaR。在概率机器学习中,使用后验预测分布无缝地进行此模拟,并在认识上保持一致。我使用后验预测样本来估算 VaR,我称之为生成 VaR 或 GVaR,如下所示:

  • 将 N 个模拟过的超额收益按损失降序排列。

  • 取这些损失中的前 M 个,使得 1 - M/N 是所需的概率阈值。

  • M 个损失子集中的最小损失是你的 GVaR。

现在让我们使用 Python 计算线性集成的 GVaR,其损失来自其后验预测分布的尾部:

#Generate a list the 20 worst daily losses predicted # by tested linear ensemble.sorted_returns = generated['Values'].sort_values()sorted_returns.head(20).round(2)

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (74)

# Compute the first percentile of returns. probability = 0.99gvar = sorted_returns.quantile(1-probability)print(f"The daily Generative VaR at {probability}% probability is {gvar/100:.2%} implying a dollar loss of ${gvar/100*position_size:.0f} ")The daily Generative VaR at 0.99% probability is -3.79% implying a dollarloss of $-3789 

生成期望损失

在大规模金融危机之后,人们普遍认识到金融机构使用的 VaR 指标存在严重缺陷。它不能估计超出 VaR 截断点的尾部分布中可能发生的巨大损失。预期缺失(ES),也称为条件 VaR,是一种常用的损失函数,用于估计可能发生在收益分布尾部的罕见但极端损失。请参考图 8-1 来看看 VaR 和 ES 之间的关系。顾名思义,ES 是一个期望值,并且被估计为 VaR 截断点后所有损失的加权平均值。让我们计算我们线性集成的生成 ES,并将其与后验预测分布尾部的所有最差收益进行比较:

# Filter the returns that fall below the first percentilegenerated_tail = sorted_returns[sorted_returns <= gvar]# Expected shortfall is the mean of the tail returns.ges = generated_tail.mean()# Generated tail risk is the worst possible loss predicted # by the linear ensemblegtr = generated_tail.min()# Plot a histogram of the worst returns or generated tail risk (GTR)plt.hist(generated_tail, bins=50)plt.axvline(x=gvar, color='green', linestyle='solid', label='Generative Value at Risk')plt.axvline(x=ges, color='black', linestyle='dashed', label='Generative expected shortfall')plt.axvline(x=gtr, color='red', linestyle='dotted', label='Generative tail risk')plt.xlabel('Simulated excess returns of Apple')plt.ylabel('Frequency of excess returns')plt.title('Simulation of the bottom 1% excess returns of Apple')plt.legend(loc=0)plt.show()print(f"The daily Generative VaR at {probability}% probability is {gvar/100:.2%} implying a dollar loss of ${gvar/100*position_size:.0f} ")print(f"The daily Generative expected shortfall at {1-probability:.2}% probability is {ges/100:.2%} implying a dollar loss of ${ges/100*position_size:.0f}")print(f"The daily Generative tail risk is {gtr/100:.2%} implying a dollar loss of ${gtr/100*position_size:.0f}")

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (75)

从 VaR 和 ES 的损失函数中,我们可以看到我们在苹果股票的假设投资中的每日损失有 99%的概率不会低于–3.79%。如果损失超过该 GVaR 阈值,则 GES 或在 1%的情景中每日损失不会低于–4.50%。

生成尾部风险

ES 的主要缺陷在于它是另一个期望值或集成平均值,低估了由极端事件引起的风险。它甚至更危险,因为它是在我们回归集成的最坏损失子集上进行平均,而这一区域的分布如前所示,在后验预测分布的尾部中更加非遍历和厚尾。对于我们特定的集成,最糟糕的损失是 GES 的两倍多。如果极端损失损害了你的资本基础,那么你将无法观察到预期缺失。作为一个经常做空波动率的波动性交易者,我使用后验预测分布生成的最坏损失—–10.25%作为我的缺失,并相应地对冲我的交易。我称之为集成的生成尾部风险(GTR)。

如果你拥有股票,就像大多数人一样,本质上你是在做空波动率,并且正在进行一种高概率的赌注,即股票未来不会出现意外波动。根据你的风险偏好、头寸规模和对回归集成的信心,你可能会选择尾部收益分布中不同百分位作为参考点来管理尾部风险。因此,你可以决定持有你的股票头寸、减少头寸,或者用期权或期货或两者对冲。无论如何,你应该继续监控你的投资和整个市场,不断根据更近期的数据更新你的回归集成。正如我们在本书的后半部分讨论的那样,持续的概率机器学习是生成集成的标志。

资本保值或资本的回报是我们的主要目标。在前一节中,我们探讨了可以用来管理我们的高风险投资以实现这一目标的工具。现在让我们将注意力集中在第二个目标上:资本增值。作为投资者和交易者,在面对在三维不确定性和信息不完全的环境中投资高风险资产时,我们有两个相关的基本决策:

  • 评估并决定投资是否会在合理的时间段内升值。

  • 决定将我们辛苦赚来的资本的哪一部分分配到这个机会上。

预期价值广泛用于评估投资机会的吸引力。它几乎在金融和投资的每个情况中都有应用,从估算公司资本项目的自由现金流到估值其债务和未偿债务股权。然而,像所有概念和工具一样,预期价值有其优势、劣势和局限性。正如我们在前一节中已经讨论过的那样,作为一个整体平均值,预期价值是一个复杂的概念。在本节中,我们继续深化我们对整体平均值的理解,以看看投资者在寻求分配他们的资本以增加财富的同时,在任何时候都不会冒着财务毁灭风险的地方,是否可以适当地应用。

Gambler’s Ruin

直到 17 世纪,著名数学家和物理学家布莱兹·帕斯卡与法国贵族合作,以提高其赌博技能,数学上证明了几千年来已知的一个真理:最终所有赌徒都会破产。赌博是有用的概率模型,在概率论和决策理论的发展中发挥了关键作用。⁶ 赌徒毁灭的经典问题对投资者具有教育意义,因为它强调了正期望值对于进行投资的必要条件。

假设您决定玩以下抛硬币游戏。您从\(M 开始,您的对手从\)N 开始。每个人在硬币抛掷上押注$1,硬币出现正面的概率为 p,反面的概率为 q = (1 - p)。如果是正面,您从对手那里赢得$1;如果是反面,您失去$1 给对手。游戏结束时,其中一名玩家破产(即被 Ruined)。这不是个儿戏。这是一个被称为算术随机漫步的随机过程,可用于模拟股票价格和尘埃颗粒的碰撞。它也是一个马尔可夫链,因为其未来状态仅依赖于当前状态,而不依赖于到达该状态的路径。

赌徒的毁灭是一个两部分问题,其中赌徒进行一系列预期价值为负或零的赌注。使用算术随机漫步模型,可以数学上证明,在以下两种情况下,任何赌徒几乎肯定会破产:

  1. 一个赌徒进行一系列赌注,每次成功的概率都低于 50%,并且回报等于押注金额。在这样的游戏中,不论赌徒如何制定他们的投注策略,他们最终都会破产,因为他们的赌注始终具有负期望。甚至赌徒的资金规模与对手相比有多大都不重要。赌徒破产的概率 P(ruin) 是:

    • P(ruin)=[1(pq)</mi><mo>⁢</mo><mi>N</mi></mrow></mrow><mo>]</mo></mrow><mo>/</mo><mrow><mo>[</mo><mrow><mn>1</mn><mo>−</mo><mrow><mrow><mo>(</mo><mrow><mfrac><mi>p</mi><mi>q</mi></mfrac></mrow><mo>)</mo></mrow><mo>⁢</mo><mi>(N+M)]ifp<q
  2. 一个赌徒面临一系列赌注,每次成功的概率为 50%,回报等于押注金额。这些是公平的赔率,但如果赌徒的对手拥有更大的资金规模,那么令人惊讶的是,即使在这种情况下,赌徒最终也会破产。如果他们的对手拥有更大的资金,例如赌场的经销商,那么通向破产的坎坷之路将变成一条没有限速的高速公路。破产的概率 P(ruin) 是:

    • P(ruin)=N(M+N)ifP=qandM<N

请注意,在第一个场景中,我们假设赌徒不能或不允许计算卡片或利用赌博机的物理特性,例如 1960 年代伟大的埃德·索普在拉斯维加斯击败经销商所做的那样。⁷

数学非常清楚。无论你如何努力或发明什么样的投注系统,由于赌注的负期望,赌博对于所有赌徒来说都是一种愚蠢的事业。赌徒将采取各种随机行走,会在盈利和亏损之间曲折变化,但最终所有道路都将通向破产。涉及等概率和等资金规模的游戏对大多数赌徒来说是不现实的情况。因此,为了避免破产,赌徒需要进行具有正期望值的投注。

但是,一个具有正期望值的赌局通常被称为投资。根据约翰·凯利(John Kelly),最优资本增长算法的发明者,期望值的符号是每个赌注的预期值和投资之间的主要区别。通过进行具有正期望的赌注,一个堕落的赌徒变成了一个值得尊敬的投资者,现在可以追求一个在避免财务破产的同时增加财富的统计上可行的路径。但是,我们应该把多少资本分配给具有正期望的投资?当我们面临非常有利的赔率时,全力以赴是否有意义?

期望值的破产者

假设你面对一个富有且强大的对手,他拥有一个有 76%概率出现正面的有偏向性的硬币。假设所有人都准确地知道这个有偏向性硬币的概率,但是任何一次投硬币的物理学都是未知的。你的对手向你提出了一个具有法律约束力的提议——一个你可以拒绝的提议。

如果你把你的整个净资产押在一次投币上,如果硬币正面朝上,他会支付你三倍于你净资产价值的金额。但如果硬币反面朝上,你将失去你的全部净资产,除了你穿的衣服——这并不是私人问题,这只是商业行为。这看起来像一生中的赌注,因为它给了你一种机会,在眨眼之间将你的净资产增加一倍:

  • 投注的期望值 = (3 × 净资产值 × 0.76) - (净资产值 × 0.24)= 2.04 × 净资产值。

  • 支付是按你的净资产的倍数计算的,这将在法律诉讼中(或者不会)被估算,所以虚报你的净资产是没有用的。

你会接受这个明显具有高期望值的提议吗?有 76%的成功概率,但也有一个非常实质的 24%的破产风险?扔一次硬币实际上并不涉及时间,所以期望值作为一个集合平均值能帮助我们评估这个机会吗?

我们的常识本能地对于依赖任何最大化期望值的金融规则来进行如此高风险的决策有所警惕。就好像我们自己正面对着“脏”哈利警官著名的.44 马格南手枪,想知道里面是否还有子弹,而他警告我们:“你得问问自己一个问题:‘我感觉幸运吗?’那么,混蛋,你感觉到了吗?”

任何负责任的人、经验丰富的投资者、交易员或企业高管(总体上来说,他们都不是骗子)都会拒绝这个提议,因为任何甚至暗示可能导致财务破产的投资机会都是不可接受的。这在市场的一则至理名言中表达得很简洁:“有老交易员,有胆大的交易员,但没有又老又胆大的交易员。”或者另一句名言说,“牛市赚钱,熊市赚钱,但贪婪会导致屠杀。”这两个谚语的一个基本统计洞见,经过几个世纪的集体观察和生活经验,是:最大化投资的预期价值几乎肯定会导致巨大损失,甚至是财务破产,即使赔率对你有利。

对于一系列有利的赌注,你如何通过在每一次押注中最大化预期价值来投入所有资本?即使你的对手给了你一系列独立同分布的正期望押注,每次连续押注都会对你造成毁灭性打击。你不需要数学证明来弄清楚,只需一次输掉的赌注就足以清空所有累积利润和任何一位预期价值最大化投资者的初始资本。

那么在不涉及押注整个净资产的正期望二进制机会中,你应该如何做出决策?让我们回到我们在第六章中描述的情况,关于 ZYX 科技公司及其盈利预期。回想一下,在观察到 ZYX 在过去三个季度成功超过其盈利预期后,你的模型预测下个季度 ZYX 有 76%的概率会超过其盈利预期。假设你继续认为概率模型有用,并且 ZYX 将在今天交易结束后宣布其收益。

根据在 ZYX 股票期权价格,市场似乎在定价股票价格上涨 5% 如果 ZYX 超过其盈利预期。然而,如果不是这样,市场也在定价 ZYX 股票价格下跌 15%。就本次讨论而言,假设这些是在盈利事件后股票价格波动的准确预测。你如何利用这些市场信息和你模型的预测,在今天盈利公告前配置资金到 ZYX 股票?

让我们创建一个目标函数 V(F, Y″),其中 F 是你想投资于 ZYX 的总资本的比例,Y″ 是盈利超预期的预测结果。考虑到你要避免破产的目标,F 必须在区间 [0, 1) 内:

  • 由于 F 不能等于 1,所以我们避免了预期价值最大化策略和前文讨论过的赌徒困境。

  • 此外,由于 F < 1,不能使用杠杆,这意味着你不能向经纪人借钱投资超过账户中现金的资本。当你从经纪人那里借钱投资股票时,最终可能欠债超过你的初始资本支出,这比破产账户更糟糕。

  • 由于 F 不能为负数,你不能做空股票。做空股票是一种高级的交易技术,你从经纪人那里借股票卖出,期望以更低的价格买回。这相当于反向的买低卖高。请注意,由于公司所有权的有限责任,股票价格的下限为 0。然而,股票没有理论上限,这是许多不幸投资者在泡沫和狂热中意识到的。这就是为什么做空股票可能会很危险,需要专业技能和纪律的风险管理。股票可以因为最微弱的原因而爆发强劲的涨势,称为做空回补涨。这些涨势可能是两倍强劲,因为有来自买家的买单和来自做空者的买单,他们急于回补之前卖空的股票。我曾多次处于这种做空回补涨的错误一方,而“撕脸涨势”这个词组恰如其分地描述了这些经历。

回忆一下,Y″ 是我们的概率模型对 ZYX 公司的收益预测,基于观察到的样本数据 D,其中当 ZYX 超出盈利预期时,P(Y[1]″ = 1 | D) = 76%,当没有超出预期时,P(Y[0]″ = 0 | D) = 24%。因此,我们目标函数的期望值 E[V(F)] 是一个盈利(W)为 5% 和亏损(L)为 -15% 的概率加权平均:

  • E[V(F)] = W × F × P(Y[1]″ = 1 | D) + L × F × P(Y[0]″ = 0 | D)

  • E[V(F)] = 0.05 × F × 0.76 – 0.15 × F × 0.24 = 0.002 × F

  • 这笔交易的优势或正期望约为 0.2%。

用常识来看,可以看到没有任何单一投资者会在 ZYX 的股票价值增长 0.2% 或者他们可能估计的任何其他预期值之后观察到。根据 ZYX 的实际收益结果,每个持有该股票的投资者将会有一个 5% 的盈利或者 -15% 的亏损,或者如果他们对该股票做空,情况会反过来。我们计算的期望值是所有 ZYX 股东所有盈利和亏损的集成平均值。这很难估计,并且可能不在你估计范围内是合理的。

但在这种情况下,我们为什么要关心集合平均值呢?正如您所看到的,对于单个投资者在这样的一次性二元事件中做决策,它是一个完全无用的工具。ZYX 的盈利事件的正期望值听起来很棒,直到您在一个高频微秒内遭受到-15%的损失,比您的眨眼速度还快。前重量级拳击冠军迈克·泰森(Mike Tyson)在概括这种充满希望的正期望时说得非常出色:“每个人都有计划,直到他们被打在嘴巴上。”

那么,无论您打算为赌注分配多少资本,什么资本分配算法可以帮助您在一次性二元交易中做出决策呢?不幸的是,没有。只有您能够承受您决策的最坏已知结果的能力,这在定义上是主观的,可以帮助您做出这样的一次性二元决策。我们已经讨论过如何将主观性整合到概率决策中去。假设您的每日亏损限制为-10%,每日利润限制为+5%,适用于您投资组合中的任何头寸。这使得决策系统化,尤其对于自动化系统而言更易实施:

  • 在收益公告之前不要投资 ZYX,因为有非常大的可能性在一天内损失-10%,这与您的目标函数的风险限制相冲突。

  • 不要做空 ZYX 股票,因为这与您的目标函数相冲突。

  • 如果您已经投资于 ZYX 股票,则需要重新调整您的仓位大小,并用期权或期货进行对冲,以确保每日损失不超过-10%。当然,对冲成本会降低 5%的预期收益,因此您需要重新计算预期值,以确保它仍然是正的。

寻找在合理时间范围内具有正期望值的投资机会通常是任何投资策略的难点。但在本节中,我们已经了解到,做出具有正期望的投资是必要的,但不是充分条件。因此,投资者面临着一个困境:

  • 如果他们将太多资本投入到这样一个有利机会中,他们会面临破产或造成毁灭性的损失的风险。

  • 如果他们分配的资本太少,他们会冒着浪费有利机会的风险。

这意味着投资者需要一个资本分配算法,计算他们总资本的一部分投向一系列具有正期望的投资机会,以便平衡两个基本目标:

  • 避免在任何时候陷入财务灾难。

  • 在有限的时间内增加他们的财富。

一些投资者有额外的目标,这些目标需要在特定时间段内管理的资本上实现,通常是一年:

  • 百分比利润必须超过一个定义的阈值

  • 百分比损失不得超过一个定义的阈值

这些目标可以编码在投资者的目标函数中,这将影响和限制他们的资本配置算法。正如我们在本章中到目前为止已经学到的,将期望值应用于投资和金融中既不直观也不简单,因为投资过程是非遍历的。让我们探讨一种在学术界和工业界广泛使用的资本配置算法。

现代投资组合理论

现代投资组合理论(MPT),由哈里·马科维茨在 1952 年开发,着重于通过投资组合中不同资产回报的相关性来量化分散化的益处。它在单个时间段内最大化资产组合的预期回报的同时,利用波动率(方差的平方根)作为预期值优化算法的约束条件。MPT 假设资产价格回报是稳态遍历和正态分布的。

正如我们已经学到的那样,这些是不切实际和危险的假设,原因如下:

  • 它们忽视了资产价格回报的偏度和峰度,即使是学术界也知道它们是不对称的、厚尾的。

  • 在市场极端压力期间,如我们最近在 2020 年和之前在 2008 年所见到的那样,投资组合分散化会减少或消失。

  • 在正常期间,厚尾分布可能会在投资组合中引入大的相关性误差。

  • 投资组合权重对于回报、方差和协方差的估计非常敏感。对回报估计的微小变化可以完全改变最优投资组合的构成。

MPT 投资组合比宣传的要风险更大,并提供次优的回报——分散化导致“非优化”。巴菲特称 MPT 是“一大堆胡说八道”,自那时以来一直在他的巨额银行笑得开怀。

在一次采访中,马科维茨承认并未将他那个“诺贝尔奖获得的”均值-方差算法用于自己的退休基金!如果这不是对均值-方差算法的控诉,我不知道还有什么能够是。⁹ 相反,马科维茨采用了 1/N 启发式或者说天真的分散化策略。这是一种投资策略,你将资本均匀分配给 N 个投资项目。已经证明,这种天真的分散化投资组合策略表现优于均值方差和其他复杂的投资组合策略。¹⁰

我们将注意力集中在另一种更简单但同样无用的 MPT 模型上,以突显将波动性用作总体风险度量的概念错误。由其学生威廉·夏普从马科维茨的投资组合理论推导出来的资本资产定价模型(CAPM),在第四章中讨论。它简化了 MPT,用于思考任何风险投资的预期回报。根据 CAPM,资产具有两种类型的风险:非系统性风险和系统性风险。非系统性风险是特定资产特有的特异风险,是可分散的。系统性风险是影响所有资产的市场风险,不可分散。

CAPM 建立在 MPT 的英雄假设之上,即所有投资者都是理性且风险厌恶的,他们在同一时间给定相同信息时有相同的预期,从而市场总是处于均衡状态。这样的金融童话不亚于迪士尼乐园中的任何童话故事。无论如何,这些马科维茨投资者被认为会创造高度有效的市场,只持有能够减少资产相关性和消除任何特定资产特异风险的多样化投资组合。统计上来说,这意味着在一个充分多样化的投资组合中,任何特定资产的特异风险和回归线中的任何误差项的期望值都将为零。因此,马科维茨投资者只会为资产的系统风险支付溢价,因为这种风险无法通过分散化消除。

在这样高效的市场中,所有定价合理的投资将在一个称为安全市场线的回归线上绘制,其截距等于无风险利率,斜率等于β或系统风险。资产的β确定了资产相对于市场运动的幅度和方向。参见图 8-2(M 是具有β = 1 的市场组合)。

资产的市场模型(MM)的系统风险项β与其 CAPM 计算的相同。但是请注意,资产的市场模型(MM)与其 CAPM 在三个重要方面有所不同:

  • CAPM 制定了资产的预期回报,而其 MM 则制定了实现回报。

  • MM 在其制定中既有特异风险项(α),也有误差项。

  • 基于 MPT,α的期望值为零,因为它已经被理性投资者通过分散化抵消掉了。这就是它不出现在 CAPM 中的原因。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (76)

图 8-2. CAPM 声称,随着您增加投资的系统风险(或β),其预期回报将线性增加。 Beta 与投资回报的波动性成正比¹¹

在简单线性回归中,beta 量化了与关联特征的单位变化相关的目标的平均变化。根据简单线性回归的假设,特别是残差恒定方差的假设,beta 有一个等于的解析公式:

  • Beta = Rxy × Sy / Sx 其中:

    • Sy = 目标或投资的标准差

    • Sx = 特征或市场投资组合的标准差

    • Rxy = 特征与目标之间的相关系数

Beta 也可以解释为将高风险投资的波动性与市场波动性相关联的参数。

马科维茨投资者的破产

正如您可以从图 8-2 中看到的,CAPM 声称,只要您愿意接受资产价格回报的伴随波动性,通过选择高风险投资或使用杠杆或两者兼而有之,您可以增加期望收益的价值。

让我们通过生成一个与 ZYX 盈利事件具有相同概率、结果和回报的非常大的假设交易样本来测试关于收益期望的这些假设。在以下 Python 代码中,我们从后验预测分布生成了 20,000 个样本。这应该足够大,使大数定律(LLN)生效,并能使随机过程的任何渐近性质收敛。

特别地,我们将通过计算 20,000 个模拟样本中的后验预测均值来计算我们的集合平均值。这些样本模拟了 ZYX 盈利事件的两个结果。然后,我们按时间序列将相同的 20,000 个结果顺序地提供给 100 名模拟投资者。每个模拟投资者在其投资过程中应用 MPT/CAPM 理论。他们将其初始资本 100,000 美元的 1%到 100%分配给 ZYX 股票。对于特定投资者/总资本的每个模拟结果产生的利润或损失进行计算。我们的代码迭代地跟踪每个特定部分/投资者的终端财富。最后,我们绘制每个部分/投资者的终端财富,并检查典型投资者的时间平均值是否等于前面计算的集合平均值:

#Fix the random seed so numbers can be reproducednp.random.seed(114)#Number of posterior predictive samples to simulateN = 20000#Draw 100,000 samples from the model's posterior distribution #of parameter p#Random.choice() selects 100,000 values of p from the #earnings_beat['parameter'] column using the probabilities in the #earnings_beat['posterior'] column.posterior_samples = np.random.choice(earnings_beat['parameter'], size=100000, p=earnings_beat['posterior'])#Draw a smaller subset of N random samples from the #posterior samples of parameter pposterior_samples_n = np.random.choice(posterior_samples, size=N)#Generate N random simulated outcomes by using the model's likelihood#function and posterior samples of the parameter p#Likelihood function is the Bernoulli distribution, a special case #of the binomial distribution where number of trials n=1#Simulated data are the data generated from the posterior #predictive distribution of the modelsimulated_data = np.random.binomial(n=1, p=posterior_samples_n)#Plot the simulated data of earnings outcomes y=0 and y=1plt.figure(figsize=(8,6))plt.hist(simulated_data)plt.xticks([0,1])plt.xlabel('Predicted outcomes')plt.ylabel('Count')plt.title('Simulated outcomes of ZYX beating earnings expectations')plt.show()#Count the number of data points for each outcomey_0 = np.sum(simulated_data == 0)y_1 = np.sum(simulated_data == 1)#Compute the posterior predictive distributionprint(f"Probability that ZYX will not beat earnings expectations (y=0) is:{y_0/(y_0+y_1):.3f}")print(f"Probability that ZYX will beat earnings expectations (y=1) is:{y_1/(y_0+y_1):.3f}")

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (77)

注意,基于我们的后验预测分布的结果变量的概率几乎等于 y = 0 和 y = 1 的理论概率。这验证了我们的样本大小足够大,以实现渐近收敛,LLN 按预期工作。现在我们继续根据我们模型生成的 20,000 个可能结果序列来计算我们的利润和损失,以计算所有投资者的终端财富:

#Percentage losses when y=0 and earnings don't beat expectationsloss = -0.15#Percentage profits when y=1 and earnings beat expectationsprofit = 0.05#Set the starting capitalstart_capital = 100000#Create a list of values for position_size or percentage of total capital #invested in ZYX by an investorposition_size = np.arange(0.00, 1.00, 0.01)#Create an empty list to store the final capital values for #each position_size of an investorfinal_capital_values = []#Loop over each value of position_size f to calculate #terminal wealth for each investorfor f in position_size: #Set the initial capital for this simulation capital = start_capital #Loop over each simulated data point and calculate the P&L based on y=0 or y=1 for y in simulated_data: if y == 0: capital += capital * loss * f else: capital += capital * profit * f # Append the final capital value to the list final_capital_values.append(capital)#Find the value of f that maximizes the final capital of each investoroptimal_index = np.argmax(final_capital_values)optimal_f = f_values[optimal_index]max_capital = final_capital_values[optimal_index]#Plot the final capital values as a function of position size, fplt.figure(figsize=(8,6))plt.plot(position_size, final_capital_values)plt.xlabel('Position size as a fraction of total capital')plt.ylabel('Final capital values')plt.title('Growth of total capital as a function of position size in ZYX')# Plot a vertical line at the optimal value of fplt.axvline(x=optimal_f, color='red', linestyle='--')plt.show()#Print the optimal value of f and the corresponding final capitalprint(f"The optimal fraction of total capital is {optimal_f:.2f}")print(f"Initial capital of ${start_capital:.0f} grows to a final capital of ${max_capital:.0f}")

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (78)

根据我们的模拟,我们可以得出一些明显的观察:

  • 投资者根据在这一系列假设正期望赌注中投资的初始资本的比例经历不同的财富轨迹(总计 20,000 次独立同分布赌注)。

  • 如果投资者投资超过其资本的 26%,则会开始亏损。

  • 所有投资者中超过其资本的 40%投资者都破产。

  • 所有投资者,投资其资本的 1% 到 26% 的人都增加了他们的财富。

  • 只投资其资本的 13% 的投资者获得了最多的终端财富。在这种投资情境中,13% 的总资本是 Kelly 最优头寸大小,用于增长个人财富。

  • 需要注意的是,投资者的破产风险与其初始资本的头寸大小密切相关,而不是随机过程回报的波动性,这对每位投资者都是相同的。

  • 更重要的是,即使您愿意接受相关投资的波动性,也有一个限度,应该分配到一个投资中。这是 MPT/CAPM 的致命缺陷,并揭示了使用波动性作为风险度量的愚蠢。

正如我们的模拟所示,假设投资是一个遗传过程,并且优化预期价值会导致大多数应用 MPT/CAPM 原则的投资者陷入财务灾难,这些原则使用波动率作为风险的代理,并忽略头寸大小。这就是 LTCM 为什么可以合理高杠杆化其头寸并忽略财务灾难可能性的理由。

凯利准则

1956 年,贝尔实验室的物理学家约翰·凯利提出了解决如何在非遗传性随机过程中投资正期望机会的棘手问题的突破性解决方案。他的解决方案,通常称为凯利准则,是最大化资本预期复利增长率或财富对数预期值的方法。¹² 凯利头寸大小是分配给一系列正期望赌注或投资的最优资本量,以在最短时间内获得最大的终端财富而不会冒财务灾难的风险。

假设您富有的对手给了您另一个加权硬币,有 55%的概率正面朝上。他向您提供了一系列赔率相等的无限交易:

  • 正面时,您的投注金额翻倍。反面时,您失去整个投注金额。

  • 为了长期最大化您的资本,您应该分配多少资金?

让我们在 Python 中运行一个简单的二元赌注系列模拟,固定赔率,以说明 Kelly 准则在最大化财富方面的威力:

import numpy as npimport matplotlib.pyplot as pltnp.random.seed(101)# Weighted coin in your favorp = 0.55# The Kelly position size (edge/odds) for odds 1:1f_star = p - (1 - p)# Number of series in Monte Carlo simulationn_series = 50# Number of trials per seriesn_trials = 500def run_simulation(f):#Runs a Monte Carlo simulation of a betting strategy with #the given Kelly fraction.#Takes f, The Kelly fraction, as the argument and returns a NumPy array #of the terminal wealths of the simulation. # Array for storing results c = np.zeros((n_trials, n_series)) # Initial capital of $100 c[0] = 100 for i in range(n_series): for t in range(1, n_trials): # Use binomial random variable because we are tossing # a weighted coin outcome = np.random.binomial(1, p) # If we win, we add the Kelly fraction to our accumulated capital if outcome > 0: c[t, i] = (1 + f) * c[t - 1, i] # If we lose, we subtract the Kelly fraction from # our accumulated capital else: c[t, i] = (1 - f) * c[t - 1, i] return c# Run simulations for different position sizes# The Kelly position size is our optimal betting sizec_kelly = run_simulation(f_star)# Half Kelly size reduces the volatility while keeping the gainsc_half_kelly = run_simulation(f_star / 2)# Anything more than twice Kelly leads to ruin in the long runc_3_kelly = run_simulation(f_star * 3)# Betting all your capital leads to ruin very quicklyc_all_in = run_simulation(1)# Plot the expected value/arithmetic mean of terminal wealth # over all the iterations of 500 trials eachfig, ax = plt.subplots(figsize=(10, 6))# Overlay multiple plots with different line styles and markersax.plot(c_kelly.mean(axis=1), 'b-', lw=2, label='Kelly')ax.plot(c_half_kelly.mean(axis=1), 'g--', lw=2, label='Half Kelly')ax.plot(c_3_kelly.mean(axis=1), 'm:', lw=2, label='Three Kelly')ax.plot(c_all_in.mean(axis=1), 'r-.', lw=2, label='All In')ax.legend(loc=0)ax.set_title('Expected Wealth of Bettor With Different Position Sizes')ax.set_ylabel('Terminal wealth')ax.set_xlabel('Number of Bets')plt.show()

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (79)

对于二元结果,投资者可以计算资本的百分比 F,以在非遍历投资过程的现实世界中将资金分配给正期望的机会。然而,关于凯利准则的流行文献并没有提供适用于你在其中失去赌注的一部分而不是你的整个赌注的一般凯利仓位大小公式。最优分数 F′ 是:

  • F′ = (W × p – L × q) / (W × L) 其中

    • p 是获利的概率,q = 1 – p 是损失的概率。

    • W 是百分比收益,L 是百分比损失。

  • 当 L = 1 时,请注意,你将失去你的整个赌注,并且你会得到这个流行的公式:

    • F′ = (W × p – q) / W,或者众所周知的优势赔率。

    • 此公式用于体育博彩,您可以失去整个赌注。

重要的是要注意,凯利公式将整体平均值与单个轨迹的时间平均值联系起来。投资的预期值,或者优势,在其分子中。但分母通过包含在时间平均值中将依次产生的乘法损失和利润来修改由整体平均值暗示的头寸大小。这就是我们早期在遍历性子节中讨论过的波动性拖曳。

凯利公式相当优雅地解决了多元动力学中的赌徒毁灭问题。回想一下,赌徒毁灭问题涉及一系列的加法赌注。相反,凯利准则用于一系列的乘法赌注。当机会的预期值或优势为零时,凯利公式给出了零头寸大小。此外,当预期为负时,头寸大小也为负。这意味着你应该押注另一边。在赌博中,这意味着反对赌徒,与赌场荷官一起下注。在市场上,这意味着押注市场将下跌,并在投资中建立空头头寸。

凯利准则对于投资于正期望投资机会有许多理想的特性:¹³

  • 数学上无可争议,凯利仓位最大化了在最短时间内的终端财富而没有破产的风险。

    • 它产生指数增长,因为利润被再投资。

    • 它涉及多期,近视交易策略,您可以专注于当前的机会,而无需长期计划。

  • 它在公式中内置了风险管理:

    • 凯利仓位大小是你资本的一个分数。

    • 当损失累积时,仓位大小变小。

凯利准则在数学上表达为,评估投资机会的期望值是必要的但不够的。调整我们的投资仓位以考虑投资的非遗传过程是非常重要的,并且是我们需要的充分条件。不幸的是,在金融市场中进行资本配置并不那么简单,应用凯利准则是具有挑战性的,因为市场并不稳定。

凯利投资者的毁灭

正如我们在第一章中提到的,金融市场不仅不符合遗传性,而且还不是稳态的。潜在的数据生成随机过程随时间变化。这使得估计这些过程的不断变化的统计特性变得危险,特别是当市场的基本结构突然发生变化时。

请注意,由于其参数和数据抽样的不确定性,事件变量 Y″ 的后验预测分布具有概率分布。76%的概率只是其后验预测分布的均值。如果我们的估计值低于 75%,我们的目标函数的期望值就会变负。这里没有太多的错误余地,这应该引起警觉。根据理论公式和超过 75%的盈利概率,凯利仓位大小应为零。然而,我们已经超出了凯利仓位,我们的资本增长是次优但对于这个模拟是正的。很可能在另一个具有更多样本的模拟中,仓位大小会发生变化,当前仓位大小为 13%可能会导致破产。

凯利仓位大小公式对期望值(“边缘”)和盈亏概率(“赔率”)的估计非常敏感。在应用凯利公式时犯的致命错误是过度投注或仓位大小大于凯利大小。随着投资者的仓位大小超过凯利最优值,他们的财富增长率会降低,并不可避免地将他们推向财务破产。¹⁴

凯利准则的实践者使用凯利最优大小的一部分,如半凯利,以避免过度投注,因为它对抗:

  • 高估自己的优势

  • 事件概率的错误估计

  • 改变边缘和赔率

分数凯利分配策略还可以减少伴随全凯利仓位大小可能出现的回报波动性。将凯利标准完全应用于一系列投资涉及非线性规划,超出了本入门指南的范围。¹⁵

现实世界中的复杂决策是一门艺术和科学。我们的概率决策框架为我们提供了将先验知识和主观原因与观察数据的客观性以及概率计算的严苛要求整合起来的视角和工具。它使我们能够在面对不确定性和不完整信息的情况下做出最佳决策,以优化我们的目标。为了做出可以信赖机器的系统决策,我们需要指定一个目标函数,并根据从生成集合的后验预测分布中产生的所有可能结果评估该函数。

预期值,也被称为集合平均,需要谨慎应用,因为金融和投资过程是非遍历的。由于每位投资者的财富轨迹是独特的,不同于计算所有市场参与者所有可能轨迹的集合平均,他们的时间平均值与集合的预期值不同。此外,不同的事件序列导致不同的决策和结果,即使时间平均值可能是等效的。在风险管理中,使用风险值而不是波动性更为谨慎,因为风险值是从可能回报的分布中估计出来的。此外,最好使用尾部风险值而不是预期缺失,因为后者也是集合平均值。在本章中,我演示了这些风险度量的生成版本,这些版本无缝地由概率集合生成。

投资的预期值是一种有用的评估工具,因为它将赌博与投资区分开来。然而,在非遍历的世界中,尽管正期望是投资的必要条件,但它并不足够。您需要一种资本配置算法,适当地调整您的投资规模,以便在您的投资财富轨迹上不破产,并且有实现财富增长的现实机会。

如果您希望最大化资本的增长,您可能希望考虑凯利投资策略,这种策略优于任何其他资本配置策略,尤其是次优的马尔科维茨均值-方差投资策略。凯利准则投资策略已被有史以来最成功的投资者使用,包括沃伦·巴菲特、埃德·索普和詹姆斯·西蒙斯。凯利准则不在学术界或专业课程中教授是一种悲剧。然而,凯利公式并非灵丹妙药,在非平稳世界中实施起来很困难。这就是为什么像我这样的大多数从业者使用分数凯利交易策略来避免过度投注和破产风险。

不幸的是,对于在交易、投资和金融中获得成功而言,没有任何可以编码在任何 AI 系统中的简易公式或算法,因为市场不是静态的遗传群体。符号 AI 和概率机器学习系统需要人类的常识和专业知识,以区分相关性和因果关系,从而成功地应对由市场参与者的创造性、情感和自由意志产生的变量性、认知性和本体论性不确定性。现在这是一个几乎可以肯定地将几率放在你这边的生成整体。

Bhide, A. V. “Compulsive Gambling in Ancient Indian Texts.” Indian Journal of Psychiatry 49, no. 4 (2007): 294–95.

Bower, Bruce “Simple Heresy: Rules of Thumb Challenge Complex Financial Analyses.” Science News 179, no. 12 (2011): 26–29.

DeMiguel, Victor, Lorenzo Garlappi, and Raman Uppal. “Optimal Versus Naïve Diversification: How Inefficient is the 1/N Portfolio Strategy?” Review of Financial Studies 22, no. 5 (2009): 1915–53.

Karasan, Abdullah. Machine Learning for Financial Risk Management with Python. O’Reilly Media, 2021.

Kelly Jr., J. L. “A New Interpretation of Information Rate.” The Bell System Technical Journal 35, no. 4 (1956): 917–26.

MacLean, L. C., E. O. Thorp, and W. T. Ziemba. “Long-Term Capital Growth: Good and Bad Properties of the Kelly Criterion.” Quantitative Finance 10, no. 7 (2010): 681–687.

MacLean, L. C., E. O. Thorp, and W. T. Ziemba. “Medium Term Simulations of the Full Kelly and Fractional Kelly Investment Strategies.” 在The Kelly Capital Growth Investment Criterion: Theory and Practice,由 L. C. MacLean, E. O. Thorp, and W. T. Ziemba 编辑,543–61 (Hackensack, NJ: World Scientific Publishing Company, 2011).

Peters, Ole. “The Ergodicity Problem in Economics.” Nature Physics 15 (2019): 1216–21.

Peters, Ole, and A. Adamou. “The Time Interpretation of Expected Utility Theory.” arXiv.org, February 28, 2021. https://arxiv.org/abs/1801.03680.

Peters, Ole, and Murray Gell-Mann. “Evaluating Gambles Using Dynamics,” arXiv.org, June 5, 2015. https://arxiv.org/abs/1405.0585.

Poundstone, William. Fortune’s Formula: The Untold Story of the Scientific Betting System That Beat the Casinos and Wall Street. New York: Hill and Wang, 2006.

Robert, Christian P. The Bayesian Choice: From Decision-Theoretic Foundations to Computational Implementation. New York: Springer Science+Business Media, 2007.

Thorp, Edward O. A Man for All Markets: From Las Vegas to Wall Street, How I Beat the Dealer and the Market. New York: Random House, 2017.

MacLean, L.C., E. O. Thorp, and W. T. Ziemba (eds.). The Kelly Capital Growth Investment Criterion: Theory and Practice. World Scientific Publishing Company, 2011.

¹ Christian P. Robert,《贝叶斯选择:从决策理论基础到计算实施》(纽约:斯普林格科学+商业媒体,2007)。

² Abdullah Karasan,《Python 金融风险管理中的机器学习》(O’Reilly Media, 2021)。

³ Ole Peters,《经济学中的遍历性问题》,自然物理学 15(2019 年):1216–1221;Ole Peters 和 A. Adamou,《预期效用理论的时间解释》,arXiv.org,2021 年 2 月 28 日,https://arxiv.org/abs/1801.03680

⁴ 自 Wikimedia Commons 的一幅图像改编。

⁵ A.V. Bhide,《古代印度文本中的强迫赌博》,印度精神病学杂志 49, no. 4(2007):294–95。

⁶ Ole Peters 和 Murray Gell-Mann,《使用动力学评估赌注》,arXiv.org,2015 年 6 月 5 日,https://arxiv.org/abs/1405.0585

⁷ Edward O. Thorp,《一个适合所有市场的人:从拉斯维加斯到华尔街,我如何击败庄家和市场》(纽约:随机之家,2017)。

⁸ William Poundstone,《财富的公式:科学赌博系统打败赌场和华尔街的未被讲述的故事》(纽约:希尔和旺,2006)。

⁹ Bruce Bower,《简单的异端:经验法则挑战复杂的金融分析》,科学新闻 179, no. 12(2011):26–29。

¹⁰ Victor DeMiguel, Lorenzo Garlappi, 和 Raman Uppal,《最优与天真的多样化:1/N 投资组合策略有多低效?》,金融研究评论 22, no. 5(2009):1915–53。

¹¹ 自 Wikimedia Commons 的一幅图像改编。

¹² J.L. Kelly Jr.,《信息速率的新解释》,贝尔系统技术期刊 35, no. 4(1956):917–26。

¹³ L.C. MacLean, E.O. Thorp, 和 W.T. Ziemba,《凯利准则的长期资本增长:准则的优缺点》,量化金融 10, no. 7(2010):681–687。

¹⁴ L.C. MacLean, E.O. Thorp, Yonggan Zhao, 和 W.T. Ziemba,《完全凯利和分数凯利投资策略的中期模拟》,在凯利资本增长投资准则:理论与实践中,eds. L.C. MacLean, E.O. Thorp, 和 W.T. Ziemba(Hackensack, NJ: World Scientific Publishing Company, 2011),543–61。

¹⁵ 凯利资本增长投资准则:理论与实践,eds. L.C. MacLean, E.O. Thorp, 和 W.T. Ziemba(Hackensack, NJ: World Scientific Publishing Company, 2011)。

金融投资中的概率机器学习-全- - 绝不原创的飞龙 - 博客园 (2024)
Top Articles
Latest Posts
Article information

Author: Kimberely Baumbach CPA

Last Updated:

Views: 5895

Rating: 4 / 5 (41 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Kimberely Baumbach CPA

Birthday: 1996-01-14

Address: 8381 Boyce Course, Imeldachester, ND 74681

Phone: +3571286597580

Job: Product Banking Analyst

Hobby: Cosplaying, Inline skating, Amateur radio, Baton twirling, Mountaineering, Flying, Archery

Introduction: My name is Kimberely Baumbach CPA, I am a gorgeous, bright, charming, encouraging, zealous, lively, good person who loves writing and wants to share my knowledge and understanding with you.