量子计算金融建模(一)

原文:zh.annas-archive.org/md5/https://annas-archive.org/md5/ef973b945f5447d43944f207d023e727

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

欢迎来到通过量子计算视角探索金融建模的迷人世界。本书旨在提供对量子计算在金融领域应用这一未开辟领域的启示性探索。我们的旅程从全面理解数字技术的局限性开始,并探讨量子计算如何帮助突破这些边界。

在本书的篇章中,我们深入探讨了量子机器学习QML)的细微差别,以及如何利用其独特特性来彻底改变金融建模的各个方面。我们将探索衍生品定价、投资组合管理和信用风险分析,揭示 QML 算法在这些领域的变革潜力。

然而,与任何技术实现一样,单单理解量子技术并不足以确保一帆风顺。因此,本书还提供了关于金融科技公司和银行等机构如何在项目实施中导航的指导,帮助他们最大限度地降低风险,确保顺利执行。

本书还阐明了经典方法和高性能硬件在实现短期量子优势中的作用,并进一步探讨了基于不同供应商策略的噪声中等规模硬件的潜在发展,强调其长期影响。

我们根据多年的量子技术和金融建模研究经验整理了这本材料。您在这里获得的洞见,来自于对行业专家进行的广泛访谈,以及对量子金融领域的深入研究。

根据最近的报告,量子计算有望彻底改变金融行业。随着越来越多的机构采用这项技术,且金融模型的复杂性不断增加,理解并成功实施量子计算策略将变得不再是选择,而是必然的需求。本书旨在引导您顺利度过这一过渡,为金融建模中的量子飞跃做好准备。

本书适合人群

本书面向金融从业人员、量化分析师或开发人员,旨在帮助他们将量子计算的力量带入组织中。这是一本为金融专业人士编写的必备资源,旨在帮助他们利用量子计算机解决现实世界中的金融问题。对 Python、微积分、线性代数和量子计算的基本理解是前提条件。

本书涵盖的内容

第一章量子计算范式,帮助读者理解数字技术的挑战与局限,并阐明量子计算如何帮助克服这些难题。

第二章量子机器学习和优化算法,考虑了量子机器学习如何利用量子比特和量子操作来改善专用量子系统的计算速度和数据存储。这是通过程序中的算法实现的。本章解释了量子机器学习算法在理论和实际生活中的工作原理。

第三章量子金融格局,帮助读者理解量子金融的格局,以及量子计算原理可以应用于哪些类型的金融问题。

第四章衍生品估值,强调了衍生品的估值通常非常复杂,只能通过数值方法进行——这需要相应的高计算努力。本章探讨了 QML 算法在衍生品估值中的作用。

第五章投资组合优化,将投资组合管理视为管理一组金融证券,并做出持续的决策以实现投资目标。投资组合管理还包括多个步骤,如管理成本和风险、资产配置、市场研究和证券选择。本章探讨了 QML 算法在投资组合分配中的作用。

第六章信用风险分析,概述了信用风险与客户未能履行合同义务(如抵押贷款、信用卡债务和其他类型的贷款)之间的关系。最小化违约风险是金融机构的主要关注点。机器学习模型帮助这些公司提高信用风险分析的准确性,提供一种科学方法,提前识别潜在的债务人。了解 QML 算法如何使用真实世界数据帮助解决这个问题。

第七章量子云中的实现,讨论了如何在生产环境中实现量子机器学习和优化架构,或者作为当前系统的回测,这是获取知识并开始使用这一技术的关键部分。

第八章模拟器和高性能计算机在 NISQ 时代的作用,强调了经典方法,特别是高性能硬件,在实现短期量子优势中的关键作用。在这一章中,我们将探讨一些最相关的方法,以全面描绘量子-经典的全景图。

第九章NISQ 量子硬件路线图,展示了噪声中等规模量子(NISQ)硬件如何根据不同提供商的不同方式演进。不同的方法,从容错逻辑量子比特到电路编织,都可能是实现容错设备的早期步骤之一。在这一章中,我们概述了这些方法的关键方面及其长期潜力。

第十章商业实现,强调了了解量子技术并不保证公司能够以最低的风险成功实现量子计算。在这一章中,我们将提供有帮助的信息,帮助金融科技公司和银行在实施此类项目时避免中途受阻。

最大限度地利用本书

本书中涵盖的软件/硬件操作系统 要求
PythonWindows、macOS 或 Linux
Jupyter notebookWindows、macOS 或 Linux
Dwave LeapWindows、macOS 或 Linux
AWS BraketWindows、macOS 或 Linux
AzureWindows、macOS 或 Linux

如果您使用的是本书的数字版本,我们建议您自己输入代码,或者访问本书的 GitHub 仓库中的代码(下一节提供了链接)。这样做将帮助您避免与代码复制和粘贴相关的潜在错误。

下载示例代码文件

您可以从 GitHub 上下载本书的示例代码文件,链接为github.com/PacktPublishing/Financial-Modeling-using-Quantum-Computing。如果代码有更新,它将会在 GitHub 仓库中进行更新。

我们还提供了其他代码包,来自我们丰富的书籍和视频目录,您可以在github.com/PacktPublishing/查看。

下载彩色图片

我们还提供了一个 PDF 文件,其中包含本书中使用的截图和图表的彩色图片。您可以在这里下载:packt.link/1xxSu

使用的约定

本书中使用了一些文本约定。

文本中的代码:表示文本中的代码词汇、数据库表名、文件夹名称、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 用户名。以下是一个例子:“将下载的WebStorm-10*.dmg磁盘镜像文件挂载为系统中的另一个磁盘。”

代码块按照如下格式设置:


import numpy as np 
from scipy.stats import norm 
t = 1.0 # year 
K = 105 # Strike price 
r = 0.05 # Riskless short rate 
sigma = 0.25 # Volatility (stdev) 
S0 = 100 # Present price

当我们希望您注意到代码块中的某个特定部分时,相关的行或项目会以粗体显示:


[default]
exten => s,1,Dial(Zap/1|30)
exten => s,2,Voicemail(u100)
exten => s,102,Voicemail(b100)
exten => i,1,Voicemail(s0)

任何命令行输入或输出都按照如下方式书写:


$ mkdir css
$ cd css

粗体:表示新术语、重要词汇或您在屏幕上看到的词汇。例如,菜单或对话框中的词语通常会以粗体显示。以下是一个例子:“从管理面板中选择系统信息。”

提示或重要事项

如下所示。

与我们联系

我们始终欢迎读者的反馈。

一般反馈:如果您对本书的任何方面有疑问,请通过电子邮件联系我们:customercare@packtpub.com,并在邮件主题中注明书名。

勘误:尽管我们已尽最大努力确保内容的准确性,但错误仍有可能发生。如果您发现本书中的错误,我们将不胜感激,如果您能将其报告给我们。请访问 www.packtpub.com/support/errata 并填写表单。

盗版:如果您在互联网上遇到任何我们作品的非法复制版本,请提供相关位置地址或网站名称,我们将不胜感激。请通过电子邮件联系我们:copyright@packtpub.com,并附上相关材料的链接。

如果您有兴趣成为作者:如果您对某个主题有专业知识,并且有兴趣写作或参与写书,请访问 authors.packtpub.com

分享您的想法

在您阅读完*《使用量子计算的财务建模》*后,我们非常希望听到您的反馈!扫描下面的二维码,直接进入亚马逊的书籍评论页面,分享您的看法。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_QR.jpg

packt.link/r/1-804-61842-X

您的评论对我们和技术社区都非常重要,它将帮助我们确保提供卓越的优质内容。

下载本书的免费 PDF 副本

感谢您购买本书!

您喜欢随时随地阅读,但无法随身携带纸质书籍吗?您的电子书购买无法与您选择的设备兼容吗?

不用担心,现在每本 Packt 书籍都会免费赠送一份没有 DRM 保护的 PDF 版本。

在任何地方、任何设备上阅读。可以直接搜索、复制并粘贴您最喜欢的技术书籍中的代码到您的应用程序中。

福利不仅仅于此,您还可以获得独家的折扣、时事通讯,并每天通过电子邮件收到大量精彩的免费内容。

按照这些简单的步骤即可获得福利:

  1. 扫描二维码或访问以下链接

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_QR_Free_PDF.jpg

https://packt.link/free-ebook/9781804618424

  1. 提交您的购买凭证

  2. 就这样!我们会直接通过电子邮件将您的免费 PDF 和其他福利发送给您。

第一部分:量子计算在金融中的基本应用

本部分讨论了数字技术的复杂性、面临的挑战以及量子计算在克服这些局限性中的作用。特别强调了量子机器学习,这是一种利用量子比特和量子操作来提高计算速度和数据存储能力的技术。读者将获得量子机器学习算法的理论和实践理解。章节还介绍了量子金融,揭示了其潜力,并阐明了可以使用量子计算原理解决的金融问题类型。

本部分包含以下章节:

  • 第一章量子计算范式

  • 第二章量子机器学习算法

  • 第三章量子金融格局

第一章:量子计算范式

量子计算机在不久的将来展示了对大规模行业带来革命性变革的潜力。量子解决方案(硬件和软件)在其巅峰时期,有可能通过优化计算将人类送上冥王星。根据 Gartner 报告,到 2023 年,20%的组织将为量子计算项目进行预算(CIO 的量子计算指南tinyurl.com/yrk4rp2u)。该技术承诺通过模拟实现更高的准确性,并提供真实世界的体验。本书深入探讨了量子解决方案在解决现实世界金融问题中的潜在应用。

在本章中,我们将讨论目前处于研究阶段的各种计算范式。还将呈现量子计算的历史。接下来,我们将介绍经典计算机面临的限制,以及这些挑战如何通过量子计算机得以克服。之后,量子计算在塑造下一代商业中的作用将得到定义。

本章后续将介绍量子计算的基础知识。驱动量子计算机的硬件类型将在接下来的章节中描述。我们还将探讨这项技术的潜在商业应用,以及组织如何根据其商业战略来充分利用这些潜力。

本章将涵盖以下主题:

  • 量子技术及其相关范式的发展

  • 基本量子力学原理及其应用

  • 量子计算的商业应用

量子技术及其相关范式的发展

计算范式可以定义为多年来取得的重要里程碑。说计算机使人类的生活变得更容易,简直是轻描淡写。日常生活中,我们需要能够分析、模拟和优化复杂问题解决方案的机器。尽管计算机的形态和大小随着时间的推移发生了变化,但它们仍然基于艾伦·图灵和约翰·冯·诺依曼提出的学说进行运作。

在本节中,我们将研究量子技术多年来的发展。我们还将研究该技术在面对某些商业挑战时的局限性。

计算范式的演变

图灵向我们展示了计算机能够解决的问题类型,冯·诺依曼构建了可编程计算机,迈克尔·摩尔在半导体领域的开创性工作使计算机变得更加强大。图 1.1展示了计算范式多年来的发展,以及它们对人类历史增长的影响:

1821机械计算器使人类能够从机械设备过渡到电子设备,在计算精度上有了更好的提升。
1890穿孔卡片系统通过协助美国人口普查,展示了大规模计算的首次应用案例。
1936图灵机为解决大型计算问题奠定了理论框架。
1941数字电子计算机首次实现计算机能够在主内存中存储信息。
1945电子数值积分与计算机 (ENIAC)第一台通过重编程执行大规模数值问题的数字计算机。
1958集成电路 (IC)帮助企业级计算向个人计算转型。
1976Cray-1 超级计算机提供了 240 百万次计算,支持大规模科学应用和仿真。
1997并行计算使用多核 CPU 在有限时间内解决复杂问题,帮助谷歌形成更好的搜索引擎。
2006云计算使用户能够从远程位置访问大型计算资源。
2016可重编程量子计算机提供了一个更好的平台,用于解决与经典计算机相比更复杂的仿真或优化问题。
2017分子信息学利用分子特性进行快速、可扩展的信息存储和处理。

图 1.1 – 计算范式的演变

计算技术的发展使人类从农业社会演变为工业社会。计算能力的进步将社会从以物易物推进到建立电子商务平台。图 1.1 给出了计算技术如何通过从单纯执行计算的设备到如今的多功能设备,推动社会发展的总结。在下一部分,我们将评估大型企业面临的挑战以及当前数字技术在应对这些挑战时的局限性。

企业挑战与技术解决方案

当前的数字技术在实时提供解决方案和洞察方面既有优势也有局限性。众多变量的出现及其日益复杂化可能会影响现实世界中的决策。拥有一种既可靠又精准、同时又快速的技术是至关重要的。对于一种可靠技术堆栈的需求促使全球科学家研究超出人类能力范围的技术。大型企业目前面临的挑战如下:

  • 更快的任务完成:在当前时代,制造公司致力于实现超大规模生产能力和效率,因此需要建立更快、更可靠的系统。例如,根据人工智能大脑的一项令人兴奋的研究(如何通过量子退火和遗传算法为电动汽车充电站选址,Quantum Zeitgeisttinyurl.com/bdep5eze),在旧金山湾区设置充电站的 50 英里半径内,大约有 8,543,811,434,435,330 种组合是可能的。那么,当可能的组合数如此庞大时,如何优化这种分布呢?量子计算机在不到 3 秒的时间内理论上解决了这个问题。

  • 内容发现:随着社交媒体网站的兴起,能够分析的内容种类繁多。这些内容以文本和图像的形式存在,大小各异。一个组织需要一台具有超强计算能力的计算机来探索这些内容。这种特殊的计算能力通过并行计算和本地优化机器实现。然而,在这一领域还有许多工作要做,以便从潜在的数据中挖掘出实时的商业洞察。量子自然语言处理QNLP)是一种有前景的技术,可以实时解决问题。

  • 降低管理成本:优化成本始终是一个不错的策略。大规模工厂的自动化为业主提供了一个正确方向的解决方案。大规模自动化伴随着一系列自身的问题,但精确度和实时决策帮助提高了准确性和可靠性。最近,宝马提出了一个挑战,竞争者必须专注于解决基于生产前车辆配置、生产中的材料变形、车辆传感器放置和用于自动化质量评估的机器学习等问题。基于获得的结果,宝马集团研究与新技术数字化汽车副总裁 Peter Lehnert 博士评论道:“我们宝马集团深信,未来的技术,如量子计算,具有使我们的产品更具吸引力和可持续性的潜力”(在宝马集团量子计算挑战赛中宣布获胜者,AWS 量子计算 博客aws.amazon.com/blogs/quantum-computing/winners-announced-in-the-bmw-group-quantum-computing-challenge/)。

  • 远程办公:2020 年在人类历史中发挥了至关重要的作用。由于新冠疫情的爆发,人们发现自己可以在世界任何地方工作。这促进了管理层和员工对远程办公的需求。由于有些情况需要更高的计算能力,远程办公可能并非在所有情况下都可行。然而,随着大多数技术转向在线并通过虚拟现实和增强现实技术以及更好的连接性提供类似办公室环境的实时工作体验,企业可以克服这一挑战。同时,这也降低了管理层的行政成本。它还有助于进一步降低存储成本,从而帮助公司降低单位成本。

为了更高效和更优化地执行业务任务,商业界开始寻求技术解决方案。当前状态下的数字计算帮助企业通过自动化和增强智能提高了效率。然而,现有的硬件技术尚未能够解决一些复杂任务,这些任务与大量数据和计算内存的限制有关。以下部分将突出数字计算能够解决的各种问题,以及需要超越当前计算范式的其他问题。

当前的商业挑战与数字技术的局限性

数字计算机由集成电路ICs)提供动力,这项技术在 20 世纪达到了顶峰。根据摩尔定律,推动微芯片的晶体管数量每年将翻倍。2021 年,IBM 宣布其 2 纳米芯片技术能够容纳 500 亿个晶体管,这基本上使得一颗芯片能够装进指甲大小的空间。大量晶体管的存在使得经典计算机能够执行大量计算和复杂的程序,从而帮助更快地解决日常问题。

然而,由于内部泄漏和微型化效应,经典门电路(或门和与门)展示了量子效应。此外,数字计算机传统上无法解决 NP-难问题(图 1.2)。用外行话来说,NP-难问题是根据问题的复杂度和变量数量来衡量解决一个问题所需的时间。例如,前文所述的如何从 8,543,811,434,435,330 种充电站位置组合中选择最优路线的问题。尽管经典计算机解决上述问题可能需要数年时间,但理想情况下,量子计算机可以在 3 秒内解决该问题。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_01_002.jpg

图 1.2 – 基于复杂度水平的 NP-难问题分类

为了更好地理解传统计算机的局限性,假设你必须在有限的预算下挑选 100 只便士股的投资组合,并且假设股票价格是离散的(例如,股市中的最小价格变动)。假设你必须在多项式时间内构建一个投资组合(p = 计算机可以在合理时间内解决的问题),并且假设需要 100 步(n = 输入数量)来获得一个优化的投资组合,换句话说,所需的时间是 n³。从理论上讲,数字计算机将在三小时内解决这个问题。这个问题很容易解决,专家也能轻松验证解决方案,因为我们处理的是同一类股票。因此,我们可以自信地说,p 类问题很容易验证和解决。现在,假设同样的问题发生变化(在有限的时间内优化属于不同风险类别的 100 只股票的投资组合),这将需要约 300 万亿年才能解决,因为尽管解决方案可以在多项式时间(n)内验证,但它是以指数时间(NP)获得的。这个问题被归类为 NP 问题。打个比方,想象一个数独或井字游戏问题:这是一个 NP 问题,尽管它的解决方案很难获得(需要指数时间),但可以在多项式时间内轻松验证。

继续前面的讨论,以下是被认为数字计算机难以解决的四种 NP 问题类型:

  • 模拟:计算模拟是将自然世界或物理系统建模为虚拟场景,以便提前了解其结果和影响。例如,在 2008 年次贷危机之后,金融机构必须对其基础资产和交叉持股进行压力测试,以预测下一次金融崩溃可能发生的场景。据估计,对于一个简单的 20-30 家机构组成的网络,这些机构涉及股票、衍生品、固定收益证券,并彼此有风险暴露,评估金融崩溃的概率将需要 137 亿年时间,由数字计算机计算得出。这是估算的时间,用于运行一个本质上是确定性的模拟问题,暗示着在 p 时间内通过 n 步解决问题的复杂性,这种问题不能使用当前的数字技术解决,因此需要一个更先进的系统来提供更快的处理速度。

  • 优化:优化是指改进现有算法的效率,以降低时间复杂度。假设你需要构建一个包含 1,000 只股票的投资组合,涉及 10 个行业。你的客户,一家国际对冲基金,必须根据市场条件生成多个情景,从而寻找一个有效前沿。这些情景需要实时更新,并根据为投资组合定义的风险容忍限额进行调整。传统计算机可以使用并行计算来解决这个难题,但这可能不是最具成本效益和时间效率的策略。这个问题凸显了实时解决该难题的高效计算机的需求。

  • 模式识别:模式识别方法利用基础数据,通过机器学习算法发现隐藏的模式和趋势。然而,近年来 GPU 及相关技术的进步使程序员在理解和揭示给定数据中的隐藏模式方面取得了相当大的成功。然而,在金融欺诈领域,由于人类行为的复杂性,机器学习算法很难理解其中的模式。理论上,一台能够实时理解数据的计算机可以更成功地解码金融欺诈的模式。

  • 密码学:在这个互联的世界中,为客户提供安全的在线交易通道是 21 世纪银行的首要任务。在全球范围内,银行使用基于线性因式分解的里维斯特、沙米尔和阿德尔曼RSA)技术。最近计算能力的发展表明,这种加密技术可以通过量子计算机轻松破解。

总结来说,可以简单地说,在当前技术的局限性下,探索新的计算范式已经到了时机,这些新范式能够帮助解决商业界面临的问题,并推动行业创新与创造力。

基本量子力学原理及其应用

量子计算机使用原理和理论(如量子场论和群论)来描述量子力学现象。量子力学原理,如叠加、去相干和纠缠,已被应用于构建处理和传递信息的处理器,其速度呈指数级增长。以下部分展示了量子计算机的演变过程,并简要描述了量子力学原理。

量子计算技术在下一代企业中的新兴角色

长期以来,由于数字计算机在规模经济上的进步,抑制了其他计算范式的发展。摩尔定律(图 1*.3*)预测了微处理器的指数增长和进步。然而,几十年来积累的大量数据使计算能力、存储和通信受到了限制。为了克服当前架构的局限性,我们必须克服有限内存、自编程计算机、大数分解和更快微处理器等挑战。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_01_003.jpg

图 1.3 – 根据摩尔定律的晶体管数量增长

由于数字计算机的基本原理和假设存在当前的局限性,需要出现新的计算范式。为了应对与气候、过程自动化、工业机械化和自主系统等多个领域相关的问题,需要克服当前的挑战。量子计算、分子计算、自然启发的算法以及人机协同互动(《计算机特刊 2016 年 9 月研究“下一代计算范式”》,IEEE 计算机学会,tinyurl.com/4b5wjepk)是当前为克服上述挑战而进行的创新和研究方向。图 1*.4*描绘了量子计算范式从理论到实际应用的历程和影响:

年份现象影响
1905阿尔伯特·爱因斯坦发现了光电效应,并且光子被发现。为发现原子粒子中的量子行为奠定了基础。
1924 至 1927 年马克斯·玻恩创造了“量子力学”这一术语,海森堡、玻恩和乔丹发现了矩阵力学。发现了量子力学原理,这些原理被用来生产量子处理器。
1935埃尔温·薛定谔构思并写下了他的思想实验——薛定谔的猫。发现了量子纠缠原理。
1976罗曼·斯坦尼斯瓦夫·英加登提出了量子信息理论。量子信息科学作为一门学科被制定,奠定了量子算法的基础。
1981理查德·费曼提出量子计算机有潜力模拟物理现象。量子力学的实际应用被用来开发工作量子计算机。
1994发现了肖尔算法用于整数分解。为量子密钥分发后的密码学奠定了基础。
1996发现了格罗弗算法。为以数据库形式存储信息铺平了道路。
2011D-Wave 提供了首个使用量子退火技术的量子计算解决方案。开启了量子计算在商业用途上的可能性。
2019Google 宣称量子霸权。展示了量子霸权的一个应用案例,有助于更好的加密。
2021IBM 揭晓了首个 127 量子比特的量子计算机,名为 Eagle。加速了复杂的 NP 困难问题的处理。

图 1.4 – 从量子力学到量子计算的历程

如图所示(图 1.4),从发展历程的角度来看,量子技术正快速进展,解决诸如精准仿真、高效优化和正确模式识别等问题。一旦研究人员能够克服当前用户面临的相关问题,并实现量子技术来解决日常问题,便能看到量子技术在整个行业中的广泛应用将如何解决大规模问题。

下一节将介绍一些在构建和操作量子计算机中常用的量子力学术语和原理。

从量子力学到量子计算

解读涉及量子计算的量子力学原理对外行人来说是一项艰巨的任务。本节将用通俗易懂的语言描述每一个量子力学公设,并解释它是如何参与量子计算机制的。

公设定义用法深入阅读
量子比特(Qubits)量子比特是量子信息的基本单位,存储在一个二态设备中,以 0 和 1 的形式编码信息。有助于加速复杂过程(如仿真和优化)中的信息处理。什么是量子比特?(quantuminspire.com)
量子态量子态是原子粒子的位置和属性(变化与自旋)的值,这些值可以通过自然获得或通过创造物理环境(例如激光和热量)来诱导。用于在受控环境中通过量子比特处理和转换信息。叠加与纠缠(quantuminspire.com)
量子叠加量子叠加指的是量子叠加现象,告诉我们量子叠加可以被视为量子态的线性组合。这一特性使得系统很难解密量子通信,从而提供了一种更安全的信息传输方式。叠加与纠缠(quantuminspire.com)
量子纠缠量子纠缠指的是两个粒子处于相同量子态并且它们之间存在关联的现象。通过越来越多的量子比特(qubits),使得系统能够以指数速度进行计算。叠加与纠缠(quantuminspire.com)
量子测量一组数学算子,用于理解和测量可以从量子比特中恢复和处理的信息量。有助于理解量子力学的复杂性。量子测量将信息分为三部分 - Physics World.
量子干涉它指的是原子粒子能够像波粒一样表现的能力,从而导致信息或量子比特状态的坍缩,进而引发量子相干或去相干。它衡量量子计算机准确计算和承载存储在其中的信息的能力。什么是量子力学?量子计算研究所(uwaterloo.ca)
无克隆定理无克隆定理”是量子力学的一个结果,禁止创建任意未知量子状态的相同副本。无克隆定理是量子密码学中的一个重要组成部分,因为它禁止窃听者创建传输的量子密码学密钥的副本。无克隆定理 - Quantiki

图 1.5 – 量子计算术语表

图 1.5中提到的假设使计算机科学家能够从经典计算机过渡到量子计算机。正如我们在后续章节中将看到的那样,量子干涉和无克隆定理等假设使量子技术走到前沿,并为实现更快、更高效、更准确的计算能力奠定了基础。接下来的部分将探讨推动量子计算范式创新的技术。

量子创新方法

在当前形式下,量子计算依赖于多种技术来扩展其影响力。量子计算机要完全实现其商业潜力还需要数年时间。然而,当它们与经典计算机以混合模式工作时,预计它们会比单独运行时产生更好的结果。让我们来看看推动它们运行的技术:

  • 超导:这项技术利用了量子物理中的叠加特性。信息通过两股方向相反的带电电子电流在超导体中循环流动,然后在纠缠的过程中交换存储在量子比特中的信息。这项技术需要量子计算机在极低的温度下运行。

  • 困陷离子:离子是带电的原子(如 Ca+或 Br+)。假设一段信息编码在这个带电的原子上。通过发射能量脉冲,原子从状态 0 被转移到状态 1。这个带电的原子将携带信息,并在激光的帮助下解码。这些离子被困在电场中。编码的信息通过光子单元进行解释,然后通过光纤传递。

  • 光子学:这项技术利用光子在量子态中承载信息。通过当前的硅芯片,可以控制光子的行为,并将信息通过电路传输。由于与现有基础设施和芯片制造能力的兼容性,它有望取得巨大的成功。

  • 量子点:量子点是由硅、镉等元素构成的小型半导体纳米晶体,其大小范围为 2 到 10 纳米。量子比特的物理实现涉及通过电荷量子比特在电容状态下交换信息。由于其有利的条件,光子学更少出现错误。

  • 冷原子:冷原子使用与困束离子类似的方法,原子被冷却至低于 1 mK,然后用作信息通道,将信息反射回来。激光被编程以控制冷原子的量子行为,并利用它们来传输数据。

为了理解每项技术所取得的里程碑,我们将借助迪文琴佐标准。2000 年,David DiVincenzo 提出了一份量子计算机实验特性的愿望清单。自那时以来,迪文琴佐标准已成为物理学家和工程师构建量子计算机的主要指南(Alvaro Ballon,超导量子比特的量子计算,PennyLane,tinyurl.com/4pvpzj6a)。这些标准如下:

  • 良好表征且可扩展的量子比特:自然界中看到的许多量子系统并非量子比特;因此,我们必须开发一种方法使它们表现得像量子比特。此外,我们还需要整合多个这样的系统。

  • 量子比特初始化:我们必须能够在可接受的误差范围内复制相同的状态。

  • 延长的相干时间:量子比特在与周围环境长时间交互后会失去其量子特性。我们希望它们足够耐用,以便支持量子过程的进行。

  • 通用门集:必须对量子比特执行任意操作。为此,我们需要单量子比特门和双量子比特门。

  • 单个量子比特的量化:为了确定量子计算的结果,必须精确测量预定量子比特集的最终状态。

图 1.6 有助于根据迪文琴佐标准评估每种量子技术的前景和缺点:

超导困束离子光子学量子 冷原子
良好表征且可扩展的量子比特已实现已实现已实现已实现已实现
量子比特初始化已实现已实现已实现已实现已实现
延长的相干时间99.6%99.9%99.9%99%99%
通用门集10-50 ns1-50 us1 ns1-10 ns100 ns
单个量子比特的量化已实现已实现已实现已实现已实现

图 1.6 – 迪文琴佐标准

在各项参数上,超导和捕获离子等技术在克服量子技术挑战方面显示出最大的潜力。虽然像 IBM 和谷歌这样的超级巨头正押注于这类技术来开发它们的量子计算机,但包括 IQM 和 Rigetti 在内的新时代初创公司则在探索与当前基础设施更兼容的其他技术。

在接下来的章节中,我们将详细介绍与量子计算生态系统相关的应用和技术。

量子计算价值链

量子计算技术仍处于起步阶段。如果从技术角度类比,1975 年,大多数投资者都在投资硬件公司,如 IBM、惠普,后来是苹果,以确保人们能够从大型主机迁移到个人计算机。一旦从硬件中获得了价值,他们开始关注软件,公司如微软因此崭露头角。根据 BCG 发布的报告,80%的资金正流向硬件公司,如 IonQ、ColdQuanta 和 Pascal。需要克服的关键工程挑战包括可扩展性、稳定性和运营。

多家公司和初创公司正在投资量子计算。美国(20 亿美元)、中国(10 亿美元)、加拿大(10 亿美元)、英国(10 亿英镑)、德国(20 亿欧元)、法国(18 亿欧元)、俄罗斯(7.9 亿美元)和日本(2.7 亿美元)已承诺巨额资金以实现量子霸权。有人推测,包括量子传感器、量子通信和量子互联网在内的量子解决方案需要大量投资,以帮助各国实现量子霸权。麦肯锡估计量子计算初创公司数量为 200 家。此外,根据 PitchBook(市场数据分析公司)的数据,全球在量子技术领域的投资已从 2015 年的 9350 万美元增加到 2021 年的 10.2 亿美元。最近吸引了大量投资的一些知名初创公司包括 Arqit、Quantum eMotion、Quantinuum、Rigetti、D-Wave 和 IonQ。

图 1.7 显示了量子技术在不同领域的潜在应用,依据量子计算机解决的各种问题类型:

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_01_007.jpg

图 1.7 – 量子计算应用

以下技术正在帮助公司在量子领域为最终用户创造价值链:

  • 量子计算:量子计算指的是利用量子力学原理开发软件和硬件技术。

  • 量子密钥分发QKD):QKD,或称量子加密,提供了一种安全的方式,供银行和其他机构交换加密密钥。它利用量子力学原理来保护通信通道。

  • 量子软件和量子云:量子软件,或如 Qiskit 这样的编程语言,为终端用户提供了与系统硬件接口并执行复杂计算操作的媒介,包括仿真、优化和模式识别。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_01_008.jpg

图 1.8 – 量子技术

  • 后量子加密:国家投资数十亿美元的关键研究领域之一是当前加密软件可能会受到量子算法的威胁。它们需要能够进一步保障这些渠道安全的算法。

  • 量子传感器和原子钟:这些术语指的是激光和困陷离子技术的发展,用于控制分子原子行为。这促使研究人员开发出使用量子传感器等下一代技术,在早期检测自然灾害(包括海啸和地震)的应用场景。

  • 量子材料:量子材料指的是一类世界级的技术,用于捕捉和操控元素的量子特性,以便在工业中应用。

  • 量子存储器和其他量子组件:这些设备通过光子以量子位(qubit)形式携带信息。它是复杂的技术,仍在开发中,预计能够克服当前限制所定义的存储障碍。

图 1.8所示,量子计算生态系统广阔。它涵盖了多个方面,如量子材料、存储器和传感器,帮助用户更有效地收集和分析数据。

在接下来的章节中,我们将探讨推动量子技术革命的公司。

量子计算的商业应用

尽管量子技术仍处于起步阶段,尚未实现商业应用,但它具有巨大的潜力。在不久的将来,量子计算机将能够与经典计算机结合,加速解决复杂问题的进程。在本节中,您将了解这种令人惊叹的技术的商业应用。

量子计算领域在整个价值链中的全球参与者

根据麦肯锡报告(量子计算的资金持续强劲,但人才缺口引发担忧,tinyurl.com/5d826t55),量子技术已吸引了来自各国政府和资助机构的 7 亿美元投资。这项技术所展现的潜力促使业内资助各大高校和实验室的持续研究。D-Wave 是首家在 1999 年通过量子退火技术开创量子计算解决方案的公司。此后,IBM 等公司建立了强大的研究人员和终端用户社区,推动量子计算机的使用。以下是一些在量子技术领域做出开创性工作的公司:

  • IonQ(纳斯达克:IONQ):IonQ 由 Christopher Monroe 和 Jungsang Kim 于 2015 年创立,至今已获得 4.32 亿美元的融资。IonQ 基于离子陷阱技术构建量子计算机,并将其作为平台即服务PaaS)提供给服务提供商。

  • Rigetti(纳斯达克:RGTI):Rigetti Computing 由 Chad Rigetti 于 2013 年创立。目前已获得 5 亿美元的融资。Rigetti 开发了一台基于超导技术的量子计算机。

  • Quantum Computing Inc.:Quantum Computing Inc.专注于为最终用户提供软件和硬件解决方案。它还专注于为公司开发商业应用案例,从而展示量子计算在不久的未来的潜力。

  • Archer(ASX:AXE):Archer 是一家澳大利亚公司,正在开展室温量子计算机的研发。由 Mohammad Choucair 博士创立,旨在生产能够广泛应用的量子计算机。

  • D-Wave(即将通过 SPAC 合并推出):D-Wave 因推出全球首台商用量子计算机而闻名。它采用量子退火技术为最终用户开发量子解决方案。D-Wave 提供一项有限但强大的技术,其量子计算机拥有 5000 个量子比特,具有广泛的潜在商业应用。

  • Quantinuum:Quantinuum 的成立源于剑桥量子与霍尼韦尔量子解决方案的合并。剑桥量子的主要焦点是开发量子计算机的操作系统和软件,而霍尼韦尔则主要专注于利用离子陷阱技术开发量子计算机。

量子计算领域的全球玩家包括 IBM、微软和谷歌等巨头,以及 Rigetti、IQM 和 Quantinuum 等资金充足的初创公司。这些公司已经在不同类型的技术(硬件和软件)上进行了投资,以推动这一技术领域的研究。

在接下来的部分中,我们将评估不同科技巨头为实现全面量子霸权所提供的路线图。

构建量子计算战略实施路线图

构建量子优势以解决实时业务问题是许多量子领域公司最终的目标。这项技术被认为有助于公司解决大规模问题。最近,宝马公司委托了一项价值百万美元的挑战,旨在通过AWS Amazon Braket平台找到解决其库存调度问题的方法。在图 1.9中,你可以绘制出可能导致量子霸权时代的路径,并看到我们如何利用量子计算解决更多问题:

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_01_009.jpg

图 1.9 – 量子计算时代

广义上,量子时代可以分为三个部分:

  • 噪声中等规模量子NISQ):这一时代的特点是拥有较少数量的优质量子比特(<50 到 100)来解决现实问题。噪声一词指的是量子比特由于干扰而失去其量子态的倾向。预计目前的技术设置将在 2030 年之前摆脱 NISQ 时代。

  • 广泛的量子优势:IonQ 将广泛的量子优势定义为量子计算机进入开发者和终端用户的时代,能够解决现实生活中的问题。根据行业从业者达成的共识,72 量子比特的系统将开始帮助行业解决商业级问题。因此,未来将有可能通过展示高级应用编程和人机界面(HMI)功能来访问该平台。

  • 全规模容错:这一时代指的是已经实现 99.5%两量子比特门保真度的大规模量子计算机。到 2040 年,预计现有的努力将有助于解决退相干(由于大量量子比特而导致的信息泄漏)问题,并使组织能够充分利用这一令人惊叹的技术。

量子技术在近期将以混合计算的形式提供给终端用户。为了充分利用现有量子计算机的潜力,像 D-Wave 和 Rigetti 这样的公司已经开始通过微处理器提供经典计算与量子计算之间的接口。经典组件负责与终端用户的通信,而量子微处理器则用于解决 NP-hard 问题。量子技术通过量子退火器和通用量子计算机,利用超导和离子阱等技术,将能够在不久的将来充分发挥其潜力。

在下一部分,我们将看看建设量子技术及其生态系统需要什么样的人才。

为量子跃迁建设人才队伍

量子技术需要多种类型的人才来发挥其真正的潜力。整个技术栈可以分为硬件、软件和相关技术。目前,该技术需要科学研究和技术实施专家。根据福布斯编制的一份调查报告,毕业生必须拥有 STEM(科学、技术、工程和数学)学科的本科学位,才能理解量子计算机的基本工作原理。具备研究导向的思维方式对于进一步研究量子计算机的发展至关重要。为了实现与计算机硬件发展相关的科学突破,研究人员必须深入理解退火、超导和离子阱等底层技术。这些技术处于能够通过知识丰富的劳动力实现科学突破的前沿。

除了构建量子计算机,操作量子计算机同样具有挑战性。当前软件开发的重点是编写能够与量子计算机内存核心接口的低级程序。IBM 和谷歌等公司已经开发了基于 Python 的软件开发工具包SDKs),如 Qiskit 和 Cirq。IBM 暑期学校等项目是开发人员熟悉与量子内存处理器接口的方法论的良好起点。由于当前量子领域技术的限制,许多重点放在开发混合计算机上。软件开发人员需要了解云计算才能操作量子计算机。大多数量子计算机位于大房间内,温度低于冰点,并且可以通过云计算远程访问。为量子计算机编写的算法也被用来提升现有机器学习算法的性能。

量子解决方案还包括辅助技术,这使得量子技术成为一个令人兴奋的领域。量子传感器、退火机和互联网是量子力学的潜在应用。此外,量子算法在解决与金融、供应链、医疗健康和密码学相关的问题方面也显示出了潜力。图 1.8总结了与进入量子技术领域相关的能力和资格的讨论:

研究领域应用潜力 资格
硬件量子力学、理论物理、应用物理超导离子阱、量子点量子物理博士、硕士
软件量子信息科学量子算法、量子机器学习软件开发、计算机科学硕士
量子商业技术优化、仿真与密码学金融、供应链、医疗健康商业倡导者、领域专家

图 1.10 – 资格列表

图 1.10中可以观察到,潜在的量子技术候选人需要具备一定的 STEM 背景。研究能力以及学习、忘记、再学习和应用新概念的能力,是在这个动态领域中生存的必备条件。由于这是一个以研究为导向的领域,企业更倾向于招收相关领域的博士候选人。然而,能够为混合计算机编写代码以更快、更准确地解决问题的软件工程师需求也非常大。

总结

计算范式,如计算器、模拟计算机和数字计算机,随着时间的推移不断发展,帮助人类在技术发展上取得迅速进展,达到新的知识前沿。Jon von Neumann、Alan Turing 和 Graham Moore 的贡献在实现更强大计算能力方面发挥了巨大作用。

当前的商业环境催生了基于数据做出更快速、更精准决策的需求。因此,需要更快速、优化的计算机来处理海量数据。

数字计算机无法解决 NP 难问题,包括模拟、优化和模式匹配问题,从而强调了需要新型计算技术来进行更快速、更精准的计算。

新兴的计算范式,如量子计算和分子计算,承诺能够更有效、更高效地解决大规模问题,如投资组合优化、蛋白质折叠和供应链路线优化。

量子计算基于量子力学的基本原理,如量子比特(qubits)、量子态、叠加、干涉、纠缠和量子测量。

目前的量子硬件和微处理器基于超导、捕获离子、退火、冷原子和模拟器等技术。

量子计算的价值链基于通过量子传感器、量子通信和量子互联网等量子解决方案和技术所实现的创新。

在量子计算领域的全球参与者包括 IBM、微软、谷歌等巨头,以及资金充足的初创公司,如 Rigetti、IQM 和 Quantinuum。

将商业战略与量子计算对接,涉及基于量子计算的不同阶段(如 NISQ、广泛的量子优势和全规模容错)的战略路线图开发。

未来的量子工作力量需要在硬件、软件及相关量子技术的发展方面做好三方面的工作。

第二章:量子机器学习算法及其生态系统

在最近几十年,许多量子计算科学家倾向于研究和生成量子算法及其实际实现(Cerezo 等,2021;Montanaro,2016)。正如前一章所讨论的,量子计算机与经典计算机的主要区别在于它们采用的计算形式。量子计算机能够解决经典系统无法处理的问题(Arute 等,2019)。在量子计算机中,量子比特代替经典比特,成为信息的基本单元。量子算法的实现主要依赖于这些量子比特与经典比特相比的物理特性。然而,量子计算机的物理实现尚未达到经典计算机所取得的成熟水平,后者可以在有限的空间内放置数百万个晶体管,而不影响其精度或功能。

噪声和错误控制对于量子信息处理至关重要,应对噪声的有效策略是当前活跃的研究领域(正如Fedorov 等,2022所回顾的)。在这方面,量子纠错QEC)协议已经被提出,用以抑制噪声的影响(Campagne-Ibarcq 等,2020)。不幸的是,即使在量子纠错取得进展的情况下,我们仍未开发出容错的机器;从物理量子比特到逻辑量子比特(没有错误)所需的量子比特数目过于庞大。目前基于量子门的设备大约具有 100 个物理量子比特,通常被称为噪声中间规模量子NISQ)设备,因为它们的操作并不完美(Bharti 等,2021)。在这种情况下,实现容错量子计算的一种可能性是增加量子比特的数量,同时通过高效的实现和测量操作确保它们保持可用。关于如何在这种充满错误的环境中工作,我们将在第九章中详细讨论。

经典计算机在任何情况下仍未被取代。经典计算机已被用于许多任务,实现量子计算并与量子设备进行接口尤为重要,尤其是在涉及数据时。我们日常使用的大多数数据都是以字节为单位的,因此必须使用经典资源进行存储、预处理和后处理,并描述将在我们专用硬件——量子计算机上运行的算法实现。

这些量子和经典算法可以应用于许多领域,以解决与我们日常活动相关的问题。特别是,一个备受关注的领域是量子机器学习QML),其中变分量子算法VQA)代表了一类使用经典计算来寻找参数化量子电路PQC)或假设(在文献中称为 ansatz)参数的算法。将在本章中解释的 VQA 家族的具体实现包括变分量子本征求解器VQE)、变分量子求解器VQS)、变分量子分类器VQC)和量子近似优化算法QAOA)。这些是最著名的算法,但我们也将研究一些变体、修改版本以及与特定软件开发工具包SDK)、代码语言、平台和硬件相关的不同实现(Cerezo 等人,2021)。

我们在处理这些算法时必须解决的首要任务之一是将经典数据编码到量子领域。量子算法通过量子态进行工作;我们需要将数据编码到这些量子态中,才能利用量子算法的优势。最早使用经典与量子领域之间映射的实现之一是核方法,它展示了在处理监督式机器学习挑战时量子编码的优势(Mengoni 等人,2019)。这些算法采用传统的机器学习模型,例如支持向量机SVM),但通过将经典数据编码到量子态中,受益于更好的数据可分性。它们的优势来源于量子计算机能够识别数据集中固有的标签模式,而这些模式对于经典计算机而言看起来像是随机噪声。这种识别特性对于需要更多于两三个维度才能正确表示以便分类(非线性嵌入)的数据尤其重要,且通常难以解释。

本章概述了 NISQ 时代的算法,重点介绍了如何从现有设备中发挥最大计算潜力,并开发技术以实现该领域的长期目标,包括容错量子计算。在从当前量子计算状态中获取优势的过程中,混合量子-经典算法和量子启发式算法代表了应对诸如 QML、优化和模拟等挑战的最佳当前方法之一(Gilyén 等人,2022)。

文献中有数十种量子计算QC)算法,并且更多的算法正在研究中。本章将举例说明当代 NISQ 阶段的应用案例、文章、平台和实现方法。量子计算公司和学术团体已做出努力,力求在当今充分发挥量子计算的优势。为此,他们已经实现了本章和以下页面中分享的大多数算法。这些算法将从不同角度进行详细介绍,以帮助更好地理解库、编程语言、云服务和量子比特实现方法,突显出这一生态系统中最重要的参与者。

总结来说,本章将涵盖以下内容:

  • 基础量子算法(Grover、Shor、Deutsch-Jozsa 等)

  • 主要的 NISQ QML 和优化算法(变分算法、量子核算法和 QUBO 基础算法)

  • 使用上述算法(编程语言、库或 SDK、硬件、云服务和工具)的技术生态系统

  • 技术挑战(使用现实世界的数据,分析商业应用以及当前的优势)

技术要求

要跟随本章的内容,您需要具备以下技术技能:

  • 基础 Python 知识

  • 熟悉 Visual Studio Code 或任何支持 Jupyter Notebooks 的集成开发环境IDE

基础量子算法

复习基础量子算法是理解量子计算最前沿进展及其解决经典计算无法处理问题潜力的必要步骤。从基本概念出发,算法是一系列可由计算机执行的步骤,用于进行计算或解决问题(Montanaro, 2016)。因此,当一个算法能够在量子计算机上成功运行时,它被认为是量子算法。一般而言,所有经典算法理论上都可以在这样的系统上运行。然而,从严格意义上讲,量子算法是指那些至少有一步涉及量子力学特性的算法,例如叠加或纠缠。量子计算机的主要特性之一是量子并行性,它使得许多现有的量子算法成为可能(Álvarez et al., 2008)。

量子电路通常用来描述量子算法。量子电路是一种结构,其中问题解决阶段在≥1 个量子比特上进行,这些量子比特会修改它们的量子状态;这个过程被称为量子门操作(Chow et al., 2012; Mitarai et al., 2018)。量子门根据其操作的量子比特数量分为单比特门、双比特门或三比特门。所有量子电路的终点都是对一个或多个量子比特进行测量。

图 2.1 展示了如何构造一个贝尔态(一个纠缠的二量子比特态),以示范这一过程。电路从左到右读取,首先是所有设备的基本状态,由 |0⟩ 状态的量子比特组成(此处为两个量子比特)。我们看到的第一个门是哈达玛门,它将量子比特置于叠加态(|0⟩+ |1⟩),从经典位的角度来看,这代表了所有可能的选项。最常用的门之一是以下蓝色门,它使两个量子比特纠缠,即 CNOT 门。如果第一个量子比特处于活动状态(|1⟩),则该门作用于第二个量子比特。因此,在这个阶段,量子态如下所示:

|Φ +⟩ = 1 _ √ _ 2 (|0⟩ A ⊗ |0⟩ B + |1⟩ A ⊗ |1⟩ B)

这是贝尔态的标准表示。之后,我们只需要将我们的量子态测量为一系列经典可读的位。

贝尔态是量子纠缠的最简单形式。这意味着该状态无法分解为每个量子比特的状态。纠缠是 CNOT 门(图 2.1 中的蓝色门)的结果。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_001.jpg

图 2.1 – 施加哈达玛门和 CNOT 门的二量子比特量子电路。结果是一个贝尔态纠缠

在许多情况下,量子算法在经典计算机和量子计算机同时用于相同任务时,可能更为有效。比较经典与量子计算手段解决任务的方式,其复杂度顺序如图 2.2所示。一个问题可能所属的复杂度类别通常通过是否能够在多项式时间P)内解决来讨论。如果不能解决,我们就进入了非确定性多项式时间NP)类别,意味着对于经典计算来说,这个任务相当具有挑战性。例如,投资组合优化将在第五章中讨论,被认为是 NP 完全问题(Kellerer, 2000)。量子算法通常属于有限误差量子多项式时间BQP)复杂度类(Yung, 2019)。后者是一类量子计算机能够在多项式时间内解决并且最大错误几率为⅓的判定问题。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_002.jpg

图 2.2 – BQP 问题与经典 P、NP 和 PH 问题之间关系的图形表示

复杂度理论CT)主要涉及量子计算的评估。在 CT 中,一个算法或一类问题通常与特定的类别相关联。图 2.2 展示了多个类别之间的联系。多项式层次结构PH)作为比 NP 更广泛的类别,表示更高的复杂度级别。

如前所述,应对影响该领域历史的量子算法进行广泛概述,以便更好地理解量子计算的当前趋势和当代算法的基础。

我们现在将讨论三个基础算法。

德意志-乔萨算法

这是一个量子算法,它解决了一个特定问题,并且在时间复杂度上是线性的,而经典算法则需要指数级的时间。因此,它被认为是第一个展示量子加速的量子算法之一(Z. Li 等,2020)。该算法以 David Deutsch 和 Richard Jozsa 的名字命名,他们于 1992 年提出了这个算法(Deutsch 等,1992)。它可以用来确定一个布尔函数是平衡的还是常数的。如果该函数是常数函数,德意志算法将输出 0,而在平衡情况下,输出将是 1。这意味着经典方法中的最坏情况将需要估算一半的值加一(0.5n+1*,其中 n 是输入数量)来测试该函数,以判断它是常数函数还是平衡函数。

图 2*.3*显示了它在量子寄存器中描述时的实际形式,包含以下步骤:

  1. 应用哈达玛门,使所有可以被经典读取的值组合(0 和 1)都被考虑在内。

  2. 对最后一个初始化为|1⟩(而非通常的|0⟩状态)量子比特应用单一门,以编码给定函数的输出。

  3. 将哈达玛门应用回所有量子比特,并测量作为函数输入的前 N 个量子比特。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_003.jpg

图 2.3 – 德意志-乔萨的示意电路

它使用所谓的“神谕”(黑箱单一门),执行一个二进制函数 f(x) : {0,1} n → {0,1},其中 x 表示前述图中的哈达玛门所作用的输入。通过对初始化为|1⟩的量子比特的作用以及神谕对输入量子比特的作用,德意志-乔萨算法能够确定一个二进制函数是平衡的还是常数的。神谕(黑箱)是一种属性事先未知的函数,但你可以通过查询来调用它,以确定其性质。你有输入和输出,可以用来评估神谕的操作。

该算法加速了搜索过程,以确定一个函数是否具有特定的属性(即是否平衡)。该算法节省了时间,因为它只需要调用一次函数(或者更准确地说,是函数的导数),而经典算法则需要调用* n**_2+**1*次(其中 n 为输入大小)。当函数非常“昂贵”时,例如在处理资源方面,计算它一次可能更具优势。

格罗弗算法

1996 年,Lov Grover 开发了一种量子技术,使得在未排序数据库中定位一个项目比传统搜索方法快四倍。这种用于无结构数据的搜索方法被称为 Grover 算法(Grover, 1996),也可以被描述为一个 oracle。正如在 Deutsch-Jozsa 部分定义的那样,oracle 将被反复评估以确定其特性。

这样一个任务的示例是从一副洗牌的N张卡牌中搜索特定的一张。传统上,这只能通过逐一检查每一张卡牌来完成,在最坏情况下使用经典方法需要 N 步(N 张卡牌需要 N 次评估)。而 Grover 算法只需进行√_N 次 oracle 评估,就能完成此任务,从而在最坏情况下达到 O(√_N)的时间复杂度。然而,需要注意的是,由于算法的相位影响,得到正确答案的概率并不能保证是 100%。

图 2.4展示了实现 Grover 算法的量子电路。它的形状与之前的示例类似。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_004.jpg

图 2.4 – Grover 算法示意电路

对于两比特的情况,第一组 Hadamard 门将我们的初始|00⟩态转换为所有潜在组合的叠加态:

|ψ⟩ = 1 _ 2(|00⟩ + |01⟩ + |10⟩ + |11⟩)

然后我们应用问题中的单元算符U,使得解的相位发生变化,方法是在其前面加上负号。

|ψ⟩ = 1 _ 2(|00⟩ − |01⟩ + |10⟩ + |11⟩)

由于这种标记,Grover 算符可以识别我们的候选解状态,以便我们在第一次迭代结束时测量到|01⟩。一个示意图可以见于图 2.5

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_005.jpg

图 2.5 – Grover 算法第一次应用时标记元素的相位变化

当 oracle 函数有 N 个潜在输入值(在我们两比特系统中为 4)时,这种方法只需要 O(√_N)次评估。相比之下,最佳的经典算法需要 O(N)次执行。这就是为什么通过只应用一次 Grover 算符,我们能够在刚才的示例中找到问题的解。

这可以用来在一个大的搜索空间中高效地进行搜索(如大海捞针)。我们将在第五章中看到如何使用它来从所有潜在组合中找到最佳投资组合。

总结来说,Grover 算法的核心是振幅放大。这是 Grover 算法加速搜索的过程,核心在于操控所涉及量子态的概率振幅。这个过程的工作原理如下:

  1. 初始状态:在 Grover 算法的开始,你将量子系统置于所有可能状态的均等叠加态中。这意味着,如果你有 n 个量子比特,你就有 2^n 个可能的状态,并且这些状态的每一个都有 1 / 2^n 的相同概率。

  2. Oracle 应用:然后将一个 oracle 应用到系统中,它会反转与解对应的状态符号。这意味着解的状态现在具有负的幅度,而所有其他状态保持正的幅度。

  3. 幅度放大:幅度放大过程会放大正确状态的幅度(或概率),并减少错误状态的幅度。它是通过应用 Grover 扩散算子(也称为 Grover 迭代)来实现的,这个操作会使状态围绕均值幅度反转。

步骤 23 会大约重复 √ N 次,以最大化正确状态的幅度。

Grover 算法的美妙之处在于,每次迭代后,“正确”状态(我们感兴趣的解)的幅度会被放大。相比之下,“错误”状态的幅度则会被缩小。这导致在最终测量时,正确状态被测量到的概率较高。

Shor 算法

数学家彼得·肖尔(Peter Shor)在 1994 年研究离散对数问题时,通过量子傅里叶变换,他发现了一个通过两个数字之间的周期性来找到解决方案的方法。随后,他将这一发现扩展到了因式分解问题。因式分解可以用来找出一个整数的素数因子。

加密数据的主要方法是 RSA 协议,它通过基于两个大素数的乘积生成公钥和私钥,从而实现非对称加密。Shor 算法可以通过因式分解密钥来找到这两个素数。从经典计算角度来看,这个问题是无法处理的,因为破解一个 2048 位的 RSA 密钥需要几千年的时间,使用 高性能计算HPC)也难以实现。Shor 算法能够在多项式时间内破解该密钥。然而,由于所需的量子比特数量庞大,这个算法尚不能用来破解 2048 位的 RSA 密钥。

肯定,Shor 的方法是概率性的,就像许多其他算法一样。具体来说,它以较高的概率提供正确的答案,且通过重复这一过程,失败的可能性可以降低。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_006.jpg

图 2.6 – Shor 算法示意电路

图 2.6 显示了该算法除了已由哈达玛门控制的叠加操作外,还执行了两项主要操作。底部的量子比特(1)用作入口点,其余的量子比特(0)用于编码我们的解。第一阶段将给定函数的不同指数应用于下面的量子比特,这会切换应用操作的量子比特的相位。通过反向量子傅里叶变换(QFT −1)的作用,我们可以读取编码数字值的比特字符串集合,该值用于推导出分解目标值 N 的两个数字。

接下来,我们将探索由量子计算QC)和机器学习ML)合并而成的新领域,称为量子机器学习QML)(Martín-Guerrero 等,2022)。

QML 算法

这一学科结合了经典机器学习与量子能力,以产生更好的解决方案。通过量子资源增强机器学习算法和/或经典训练,拓宽了纯机器学习的应用范围,正如某些经典设备(如 GPU 或 TPU)所带来的效果一样。

大量文献已报告使用量子方法在学习算法中可能带来的多个优势(Schuld 等,2018 综述)。然而,大多数早期的研究在这一框架下追求的是计算复杂性的降低与加速的结合。当前的研究还在探讨量子技术提供非常规学习表示的方法,这些方法未来甚至可能超越标准机器学习。

近年来,量子计算的理论和技术发展迅速,现实应用的潜在利益日益显现(Deb 等,2021;Egger 等,2021)。量子计算如何影响机器学习是一个关键的研究话题。最近的实验表明,量子计算机可能成功解决某些具有复杂输入相关性的难题,这些问题对传统系统来说异常具有挑战性。

目前已有共识认为量子计算机在多个应用中可能提供优势。然而,它们尚未能完全替代经典机器学习。由量子计算生成的量子模型在特定应用中可能显著更有效,从而实现更快的处理时间和更少输入下的泛化能力。因此,至关重要的是要确认是否能够实现量子优势。

以下部分将提供对最相关的 QML 算法的详细回顾。

变分量子分类器

变分量子分类器VQC)属于混合算法范畴,因为它们需要经典的交互作用来设置量子假设电路的自由参数。变分部分决定了量子电路如何根据一些经典标准进行迭代训练,从而确保选择的参数使电路收敛于目标函数。当这个目标是一个给定数据集标签之间的分类任务时,这使得我们的算法成为一个 VQC(W. Li 等,2021)。图 2.7 展示了 VQC 的经典步骤。数据必须在第一步进行预处理,并以量子态的形式引入,以表示经典数据。之前,我们展示了 Hadamard 操作如何在初始编码态上设置所有潜在的组合。我们使用特征映射(量子电路的一种特定类型)将经典数据编码为量子态。然后描述一组参数化门来表示不同的配置(稍后我们会详细讨论),最后是一个测量步骤,获取结果。在 VQC 中,关键步骤是测量;输出变成经典数据,用于更新参数化电路的参数。这个过程类似于神经网络,其中输出用于计算损失。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_007.jpg

图 2.7 – VQC 示意电路

基于梯度和非梯度的方法都可以用来训练 QML 模型。已知基于梯度的方法在经典执行过程中容易陷入函数的局部最小值。

量子方案可能会通过量子隧道效应克服这一事实,即使某些经典方法已知的问题在量子方案中被放大(例如梯度消失或荒 plateau 等问题)。这也是为什么人们投入大量努力设计参数化电路PQC)或假设电路和方法来处理这些问题,希望能够超越经典手段。

在定义这些 PQC 时,我们也可以借鉴经典机器学习,并模仿已知的该领域瑞士军刀——神经网络。

量子神经网络

量子神经网络QNNs)是变分量子算法(VQA)的一种子类型,由带有参数化门操作的电路组成(Abbas 等,2021),如前所述。最初,信息被编码进准备好的量子态,可能涉及特征映射。通常,选择特定的特征映射是为了提高量子模型的性能,该模型需要优化和训练。该特征映射,如图 2.8所示的黄色框,指的是数据被编码到电路中的步骤。在数据被编码到量子态后,带有参数化门的变分量子电路(PQC 或蓝色变分模型)被应用并优化以完成特定任务。变分模型输出的量子态随后被测量,以估算损失函数。然后,经典部分估算误差,并将其传播到 PQC 中参数的估计值。这一从量子比特初始化到最终测量阶段的过程描述了一个量子神经网络(QNN),如图 2.8所示。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_008.jpg

图 2.8 – QNN 示意电路

量子神经网络(QNN)使用前面提到的方式进行训练,其中基于梯度的优化器通常能展现出良好的结果。Adam(Carena 等,2022)优化器是最广泛使用的优化器之一,它源于经典神经网络优化。我们将在第四章中看到一个工作示例,展示如何在处理导数估值时使用基于梯度的方法来训练量子神经网络(QNN)。

量子支持向量分类(QSVC)

监督分类系统通过有标签的数据进行训练,之后用于预测未见数据点的标签。这种训练方式称为监督学习,并且已被应用到量子机器学习(QML)中(Schuld 等,2018)。著名的经典方法如支持向量机SVMs)(Meyer,2015)已经经过此类训练,并被用于各种大规模分类任务。通过使用先前讨论过的特征映射,我们可以在经典数据上获得更好的可分性。这一事实通过将数据编码并解码到更大的领域中,利用量子支持向量机(SVM)得以实现。

在监督分类中,一组标记的数据点表示它们是否属于某一特定类别。学习过程会在这些类别之间建立一个分界线或超平面。基于核的分类器,如 SVC,极度依赖核概念(Park et al., 2020)。通常情况下,超平面无法在原始空间中分隔数据;因此,一个常见的策略是应用非线性变换函数(φ),也称为特征映射,以寻找这样的超平面。特征映射将编码后的数据投影到一个新的表示(更复杂的空间),以转化数据并帮助分隔。在这个函数中,φ : x → F,其中 F 是特征空间。该映射对每个数据点的输出,φ(x)对于每个 x ∈ X,被称为特征向量。

另一个有用的工具是核技巧。数据将仅通过成对相似性来表示。通过使用核技巧和高维非线性特征映射,量子核方法可以扩展到依赖于非线性数据的决策函数。在这种情况下,数据会从低维空间转移到高维非线性希尔伯特空间(H)(Skorohod, 2012),有时也被称为特征空间。在选择了合适的特征映射后,将 SVM 分类器应用到映射后的希尔伯特空间数据中是可行的。在这个新的特征空间中对数据点进行分类,涉及评估它们的接近度。就其本身而言,核是每对数据点之间内积的集合。

这些计算在量子计算机上执行比在常规系统上更为容易。核可以通过量子处理器轻松估算。一旦形成了核矩阵,就必须从量子电路中提取量子核信息,并将其输入到 SVM 或 SVC 算法中。

变分量子特征解算器

从前面的 VQC 定义中,我们知道变分量子特征解算器VQE)由经典部分和量子部分组成,这些部分被集成在一起以实现特定目标。当用于寻找某一哈密顿量的最小能量状态,也称为基态时,学习算法呈现为 VQE(Wang et al., 2019)。它属于 VQA 的广泛范畴。它遵循相同的步骤,其中经典优化过程调整给定假设(PQC)的参数,以产生哈密顿量在测量时的最小期望边界。能量期望值是驱动此训练的度量,就像任何经典机器学习方法的成本函数一样。

简单来说,VQE 是指在量子计算机上评估哈密顿量的能量,另一方面使用经典计算机来增强参数,从而在后续的量子迭代中减少能量。VQE 背后的概念是通过量子计算机实现一个单一目的:计算一组给定参数的能量值。其他所有操作则在传统计算机上进行。VQE 主要用于预测分子和材料的特性,通常用于组合优化问题,如投资组合优化。

QAOA

量子近似优化算法QAOA)是展示量子优势的最有前景的技术之一(Choi 等人, 2019)。QAOA 是一种近似方法,它并不会提供“最佳”结果,而是追求一个“足够好”的结果,特点是近似比的下限。

它的灵感来自于数字化的绝热方法。绝热定理表明,如果我们从一个已知最优解的简单情况开始,通过小的扰动将其转变为我们要解决的问题。如果我们在电路执行结束时获得的目标状态仍然是问题的基态,那么其读取结果将显示我们正在寻找的经典位集。

这是量子退火器用来解决复杂问题的方法之一。这种退火过程的数字实现之一涉及交替操作块的使用,其中初始候选者通过所有可能选项的叠加进行编码(见图 2.9中的 H 门),并添加离散的步骤,通过交替来增强我们的目标问题,最终生成的量子状态即为我们的目标状态。

确定所需扰动的最佳量并非易事,可以使用经典优化器来确定最佳参数,从而解决我们的问题。

这个过程的完整图示见图 2.9,其中 β 和 γ 分别对应影响问题哈密顿量(C,黄色)和混合器哈密顿量(B,绿色)的参数,适用于 p 层或层级。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_009.jpg

图 2.9 – QAOA 示意电路

对于给定的 NP-Hard 问题(Bittel 等人, 2021),近似算法是一种多项式时间解法,可以解决问题的所有实例,并提供质量保证。优势值是多项式时间解法的质量与实际解法的质量之间的比值。

量子编程

在过去的十年里,QC 的发展加速了。一个重要的例子是开发了使用高级编码语言提供解决方案的工具(Chong 等,2017;Ganguly 等,2021)。量子编程语言是将概念转换为量子计算机指令的基础。Nature Reviews(Heim 等,2020)指出,量子编程语言用于以下目的:

  • 检查 QC 基础(量子位、叠加、纠缠),然后测试和验证量子算法及其实现

  • 管理现有的物理量子硬件

  • 预测量子程序在可能的硬件上的执行成本

当前的量子编程语言主要旨在优化基于量子门的低级电路。量子电路是由量子门构成的,用于通用量子计算机。以下是主要量子门的列表:

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_010.jpg

图 2.10 – 量子计算的核心门

量子编程始于 1996 年,当时 E. Knill 提出了量子随机访问机QRAM)模型,并提出了可以被认为是第一个量子伪代码规范的概念(Knill, 1996)。此后,开发了许多方法,例如 Ömer 提出的量子编程语言(QCL)(Ömer, 2002)、C++ 量子扩展(McCaskey 等,2021)以及代表这些语言不同发展阶段的许多其他缩写。

本节的重点是特别探讨量子软件开发工具包SDKs),它们是用于开发量子算法的工具,可以在量子计算机、模拟器和仿真器中使用(Ablayev 等,2020)。微软、IBM、谷歌、Xanadu 和 Rigetti 等公司已发布了开源开发工具包。SDK 提供了软件开发人员解决问题的工具,并让他们能够访问模拟器或量子计算机,用于基于云的量子算法实现。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_011.jpg

图 2.11 – QC 编程水平比较

这些工具包通常允许使用传统编程语言,如 Python,作为主要解释器,框架的特定功能则在其之上构建。其他公司则倾向于构建自己版本的量子软件语言,例如微软的 Q#。

尽管我们尚未达到图 2.11所示的顶部(medium.com/@quantum_wa/quantum-computing-languages-landscape-1bc6dedb2a35),不同的框架专注于特定任务或领域,其中某些特定的硬件实现比其他实现更优秀。

最主要的工具生态系统包括以下几种:

  • 来自 IBM 的 Qiskit 提供面向金融等领域的高抽象模块

  • 来自 Xanadu 的 PennyLane 专注于 QML 和可微分计算

  • 来自 Google 的 Cirq,它可以使用 Sycamore 和 QSVM 模拟器

  • 微软为 Q# 用户提供的 量子开发工具包 (QDK)

市场上也可以找到其他 SDK,通常更为专业或特定于某些公司为改善自己的解决方案、硬件和基础设施而进行的努力。这些 SDK 包括以下内容:

  • 来自 D-Wave 的 Ocean

  • 来自 Zapata 的 Orquestra

  • 来自 Amazon Web Services (AWS) 的 Braket SDK

  • 来自 Riverlane 的 Anian

  • 来自 Rigetti 的 Forest

在接下来的章节中,将讨论最相关的 SDK,它们拥有最大社区、文档和在线支持。通过利用这些支持基础,任何具有平均数学和/或物理知识的人都可以从零开始学习,并能迅速与真实或模拟的量子设备进行互动。

Qiskit

Qiskit(最初称为 QISKit)是 IBM Research 于 2017 年发布的一个 Python SDK(qiskit.org/)。这个软件包/库的目的是提供量子算法和物理设备之间的桥梁,以便更多人可以理解和与量子计算机互动。Qiskit 的创建也旨在帮助拓宽量子教育的访问,并扩展量子信息挑战和结构。

目前,Qiskit 使用户能够快速构建实验和应用,并在真正的量子计算机和经典量子模拟器上运行它们。另一个目标是量子软件的进步,既包括使用 OpenQASM 进行机器代码层面的工作,也包括面向没有量子计算经验的终端用户的抽象层面。

由于 Qiskit 是一个开源 SDK,任何人都可以与它合作和互动。它以拥有全球最大的量子计算社区而闻名,社区成员来自不同背景和地区,大家共同合作。到 2020 年,Qiskit 已经有 15,000 名科学家和开发者在该领域使用 Qiskit 工具工作,超过 300,000 人使用这些资源学习量子计算。2021 年,涉及 Qiskit 实现的研究文章达到了 157 篇。今天,社区仍在不断壮大,全球范围内有认证用户和倡导者(quantumcomputingreport.com/)。

早期,Qiskit 的包名称采用了经典元素(Terra、Ignis、Aer、Metal 和 Aqua)作为命名依据。这个惯例已经被放弃,取而代之的是更具描述性的 Qiskit 包名称。Terra 和 Aer 保留了原名,而其他的则已被弃用并替换。例如,Aqua 已被更高级的应用模块替代,Ignis 则被 Qiskit Experiments 取代。Qiskit Metal 更侧重于电路设计,因此对那些寻求基于超导电路设计量子计算芯片的人具有非常特定的吸引力。

Qiskit Terra 包含了最相关的功能。在 Qiskit 生态系统中,Terra 是最大的包,拥有最全面的量子计算工具集;许多其他包与其交互。将 Terra 视为 Qiskit 的核心,对于商业领域最有趣的部分可能是它所提供的高级应用,这些应用包含了四个不同的产品,这些产品曾经组成了一个单一的包(Qiskit Aqua)。每个应用包都专注于量子计算在现实世界中具有显著影响的一个领域,具体如下:

  • Qiskit Nature,专注于量子模拟

  • Qiskit Machine Learning,提供了与量子机器学习相关的各种应用工具

  • Qiskit Finance,旨在帮助研究人员发现并扩展量子金融解决方案

  • Qiskit Optimization,提供探索优化问题的工具,例如旅行商问题或背包问题

第四章第五章第六章 深入探讨了这些解决方案,主要聚焦于 Qiskit 在金融领域的应用,鉴于其有趣的模块可以开发接下来章节中涵盖的一些话题。此外,第九章 重点介绍了 Qiskit Terra 和 Qiskit Experiments 在误差缓解中的一些基本用法。Qiskit Machine Learning 也将被提及并引用。

PennyLane

PennyLane 提供了一种强大且新颖的方法来编程量子计算机 (Bergholm et al., 2018)。它将传统的机器学习库与量子硬件和模拟器相结合;因此,用户可以像训练神经网络一样训练量子计算机。这个用于 Python 的软件开发工具包(SDK)由 Xanadu 于 2018 年发布,并通过设备无关的开源策略将最广泛使用的量子计算系统与顶级机器学习工具结合起来。使用 TensorFlow、PyTorch 或 NumPy 的数据科学家(包括机器学习研究人员)会很快适应 PennyLane 的工作环境。

如前所述,PennyLane 提供了一个基于 Python 的简洁用户界面,兼容任何基于门的量子计算平台(如 Qiskit),包括量子比特和连续变量设计。

用户创建一个量子函数电路并将其与设备耦合,构成一个 QNode,如图 2.12所示。PennyLane 及其方法的主要优势之一是,设备中执行的所有计算都会被记录,这意味着几乎无需计算就可以直接请求梯度。这就是为什么它与 TensorFlow 或 PyTorch 一起被列为工具,因为这些自动微分功能使它们在机器学习社区中取得了成功。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_012.jpg

图 2.12 – PennyLane 基本核心结构

在处理 QML 的特定需求时,如第四章第六章所示,我们将看到 PennyLane 如何轻松解决那些从技术角度看起来可能复杂的技术。此外,得益于 PennyLane,实验层面的实现变得更加容易。

Cirq

另一个 Python 框架是 Cirq,由 Google 于 2018 年发布(github.com/quantumlib/Cirq)。它可以编排、执行并评估量子计算机程序的结果。它是为拥有几百个量子比特(NISQ)和几千个量子门的量子计算机构建的。目前,Cirq 的 1.0 版本已发布,自推出以来已有超过 3000 个提交。

一个围绕 Cirq 发展的库社区,促进了量子计算领域的许多研究。这些库包括以下内容:

  • TensorFlow Quantum:一个用于研究 QML 的工具。

  • OpenFermion:一个开源工具,用于化学模拟中的量子计算。

  • Pytket:一个基于 Python 的量子电路优化与操作工具。

  • Mitiq:一个开源库,用于误差预防策略。由非营利组织 Unitary Fund 开发。

  • Qsim:一个高性能的状态矢量仿真器,使用 AVX/FMA 向量化指令创建。包括 GPU 加速作为选项。Qsimcirq 是 Cirq 接口,用于访问 qsim。

此外,Cirq 是 Google 量子生态系统的一个组成部分(图 2.13),可以与之前的 SDK(如 PennyLane)及其他云服务(如 Microsoft Azure Quantum)进行集成。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_013.jpg

图 2.13 – Cirq 量子生态系统

当没有量子处理器可用时,可以使用 Google 量子虚拟机进行 Cirq 测试,这是一种 Colab 笔记本,用于模拟 Google 量子处理器(目前为 Weber 或 Rainbow)。如果需要更强的仿真能力,只需简单地更新 Google 量子虚拟机,使其在 Google Cloud 中运行。

量子开发工具包(QDK)

QDK 由微软于 2017 年推出,包含了量子软件开发入门的基础元素(微软,2017)。这些元素包括以下内容:

  • 使用.NET 或 Python 进行 QC 仿真的 API

  • 由微软开发的量子编程语言,称为 Q#

  • 使用命令行工具进行量子应用程序的开发和仿真工具

市场上的这一 SDK 和其他 SDK 最近已经趋于一致,因此 QDK 目前允许使用 Cirq 和 Qiskit 构建和运行 QC 应用程序。

这个工具包旨在帮助程序员学习如何编程量子计算机。不需要事先了解量子物理知识。QDK 是一个开源框架,包含一套文档、教程、库、示例算法以及一个社区(图 2.14)。如前所述,QDK 支持多种开发平台,包括 Windows、Linux 和 macOS,以及 Python 等编程语言。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_014.jpg

图 2.14 – QDK 和 Microsoft Azure Quantum 工作流

日益壮大的微软量子生态系统使各领域的解决问题者,无论技能水平如何,都能够探索量子开发领域,以解决具有变革性的现实问题。

量子云

除了编程语言,量子程序的广泛研究和商业应用还需要一个基本元素——云访问(Gong 等,2021)。这些云解决方案直接与量子电路和芯片连接,用于最终的量子算法测试和实验。

云访问使机构和个人能够推进他们的量子计算探索。无论技术如何发展并变得流行,企业和大学现在都可以在云上实验量子计算。这个过程始于 2016 年,当时 IBM 将量子计算机连接到云,并启用了基本的基于云的量子应用程序的开发和执行(Castelvecchi, 2017)。到 2022 年,至少有 13 家知名公司提供了量子计算机的在线访问:

  • Amazon Braket (AWS)

  • Leap (D-Wave)

  • IBM Q Experience (IBM)

  • Google Quantum AI (Google)

  • Xanadu Quantum Cloud (Xanadu)

  • Azure Quantum (Microsoft)

  • Forest (Rigetti)

  • Quantum Inspire (Qutech)

  • Forge (QC Ware)

  • AQT

  • Quantinuum

  • 阿里云

  • Oxford Quantum Circuits

量子云服务还使用户、量子仿真器和模拟器之间能够直接连接。此外,一些供应商还提供支持不同编程语言、工具和文档的服务,帮助用户更高效地构建 QC 应用程序。

接下来的章节将深入回顾该领域中最重要的服务,以及它们如何运作和发展。

IBM Quantum

如前所述,IBM 于 2016 年推出了其 QC 云平台。IBM Quantum Experience拥有一个 5 量子比特的量子处理器和一个模拟器。任何人都可以免费访问 7 量子比特和 5 量子比特的量子机器以及云模拟器。此外,IBM 平台中的许多功能,如 IBM Quantum Composer、Qiskit 示例和学习材料、以及 IBM Quantum Lab,允许用户通过 Jupyter Notebooks 创建、探索和运行量子应用程序。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_015.jpg

图 2.15 – IBM Quantum 路线图

IBM 的量子技术发展路线图看起来相当激进,但同时也很具体,因为该公司迄今为止已经完成了每一个预定步骤。到 2025 年,IBM 预计将在一个名为 Kookaburra 的新型 4,158 比特机器上实现多个量子处理单元(QPU)的互联。如果需要更高数量的量子比特(超出免费层级的机器),也有两个可能的方案:

  • 按需付费:通过信用卡按运行时间秒数支付,访问 27 比特的 Falcon R5 处理器

  • 高级计划:访问 127 比特的 Eagle 处理器,并通过定制协议作为 IBM 量子网络成员进行支付

IBM 面临的另一个重要挑战是增加其机器的量子体积。量子体积是指处理器能够正确执行的最大随机两比特门电路的平方。当处理器能够在 2-置信区间内,三分之二以上的时间内计算出重输出(电路中最可能的输出)时,认为成功达成。如果一个处理器可以利用 8 个量子比特操作一个包含八个时间步长门的电路,那么它的量子体积就是 256——我们将 2 的量子比特数次方计算出来。

亚马逊 Braket

亚马逊网络服务AWS)于 2019 年推出了 Amazon Braket(Patterson, 2019)。Amazon Braket 是一个量子云平台即服务PaaS),与五家基于硬件的量子计算公司合作提供:D-Wave、IonQ、Rigetti、OQC 和 Xanadu。Amazon Braket 不仅通过 D-Wave 提供量子退火服务,还通过不同类型的硬件技术提供对通用量子计算机的访问;这些技术包括陷阱离子(IonQ)、超导(Rigetti 和 OQC)和光子(Xanadu)技术。根据五个标准,每种技术都有其优缺点:良好表征和可扩展的量子比特、量子比特初始化、延长的相干时间、通用的门集以及对单个量子比特的量化。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_016.jpg

图 2.16 – AWS 量子路线图

总体来说,亚马逊 Braket 提供了一套基于 Python 环境的完整服务,支持构建、测试、运行和分析量子算法。使用 Braket,用户可以访问通用量子计算机、模拟器、混合作业和管理的笔记本。基于门的量子计算机可以通过量子处理单元QPU)或 D-Wave 提供的量子退火器来使用。此外,用户还可以使用可用的 SDK 来构建和实现他们的量子算法。状态矢量 1SV1)、密度矩阵 1DM1)和张量网络 1TN1)模拟器可以同时用于运行和测试量子算法,并减轻噪声对算法性能的影响(图 2.16)。

为了测试混合算法,AWS 将其基于经典 EC2 的计算资源(作业实例)与 Braket 量子处理单元 (QPUs) 或量子电路模拟器结合使用。用户还可以访问笔记本来测试量子算法、共享代码并可视化结果 (aws.amazon.com/braket/pricing/)。

亚马逊 Braket 提供了多种量子计算微处理器的访问,价格合理。量子算法的效率可以在不同系统上进行测试,然后在更高效的系统上开发相应的应用案例。

微软量子

自 2019 年以来,微软已为研究人员、企业和开发者提供了云端量子计算机的访问权限(Kanamori 等,2020)。该公司为这一生态系统的繁荣与持续创造了一个动态环境,为企业、研究员和开发者提供空间,以便他们能够生产、测试和部署量子算法。特别是,Azure 云平台促进了对由 1QBit、Quantinuum、QCL 和 Pasqal 等公司(但不限于这些公司)提供的多个平台的访问(图 2.17)。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_02_017.jpg

图 2.17 – 微软量子生态系统

微软的量子服务分为三个层级:商业、研究员和开发者。通过其企业加速计划,该公司通过优化求解器和量子硬件为行业提供便捷访问。包括 NASA 和福特在内的知名组织已经通过云计算探索量子计算,旨在开发调度问题和车辆追踪的解决方案。同时,借助 Cirq、Qiskit 和 Q# 等模块,研究员和开发者现在可以参与新算法的开发。

摘要

  • 基础的量子计算算法已经展示了这种新计算范式的潜在优势,前提是有一套特定的硬件可以利用物理方法的优势。

  • 在解决与机器学习、优化和仿真相关的问题时,有各种各样有趣的量子和混合量子-经典算法选项可供选择。大多数都有文档和开源代码,旨在降低新用户的学习曲线。

  • 量子计算机已经成为现实,因为任何需要的人都可以访问它们,并开始进行研究和探索潜在的解决方案。如果有商业需求,多种云服务提供对多种量子技术的访问,用户可以并行探索这些技术,同时具备运行量子模拟器的高计算能力。

参考文献

  • Abbas, A., Sutter, D., Zoufal, C., Lucchi, A., Figalli, A., & Woerner, S. (2021). 量子神经网络的力量。《自然计算科学》2021 年第 1 卷第 6 期,1(6),403–409. doi: 10.1038/s43588-021-00084-1

  • Ablayev, F., Ablayev, M., Huang, J. Z., Khadiev, K., Salikhova, N., & Wu, D. (2020). 量子方法在机器学习问题中的应用,第 I 部分:量子工具。大数据挖掘与分析, 3(1), 41–55. doi: 10.26599/BDMA.2019.9020016

  • Albash, T., & Lidar, D. A. (2018). 惰性量子计算。现代物理学评论, 90(1), 015002. doi: 10.1103/REVMODPHYS.90.015002/FIGURES/11/MEDIUM

  • Álvarez, G. A., Danieli, E. P., Levstein, P. R., & Pastawski, H. M. (2008). 量子并行性作为集体自旋动力学计算的工具。物理评论快报, 101(12), 120503. doi: 10.1103/PHYSREVLETT.101.120503/FIGURES/3/MEDIUM

  • Arute, F., Arya, K., Babbush, R., Bacon, D., Bardin, J. C., Barends, R., Biswas, R., Boixo, S., Brandao, F. G. S. L., Buell, D. A., Burkett, B., Chen, Y., Chen, Z., Chiaro, B., Collins, R., Courtney, W., Dunsworth, A., Farhi, E., Foxen, B., … Martinis, J. M. (2019). 使用可编程超导处理器实现量子霸权。自然, 574(7779), 505–510. doi: 10.1038/s41586-019-1666-5

  • Bayerstadler, A., Becquin, G., Binder, J., Botter, T., Ehm, H., Ehmer, T., Erdmann, M., Gaus, N., Harbach, P., Hess, M., Klepsch, J., Leib, M., Luber, S., Luckow, A., Mansky, M., Mauerer, W., Neukart, F., Niedermeier, C., Palackal, L., … Winter, F. (2021). 行业量子计算应用。欧洲物理学杂志量子技术, 8(1), 25. doi: 10.1140/EPJQT/S40507-021-00114-X

  • Bergholm, V., Izaac, J., Schuld, M., Gogolin, C., Ahmed, S., Ajith, V., Alam, M. S., Alonso-Linaje, G., AkashNarayanan, B., Asadi, A., Arrazola, J. M., Azad, U., Banning, S., Blank, C., Bromley, T. R., Cordier, B. A., Ceroni, J., Delgado, A., Di Matteo, O., … Killoran, N. (2018). PennyLane: 自动微分的混合量子-经典计算。 doi: 10.48550/arxiv.1811.04968

  • *Bharti, K., Cervera-Lierta, A., Kyaw, T. H., Haug, T., Alperin-Lea, S., Anand, A., Degroote, M., Heimonen, H., Kottmann, J. S., Menke, T., Mok, W.-K., Sim, S., Kwek, L.-C., & Aspuru-Guzik, A. (2021). 噪声中等规模量子(NISQ)算法。现代物理学评论, 94(1).* doi: 10.1103/RevModPhys.94.015004

  • Bittel, L., & Kliesch, M. (2021). 训练变分量子算法是 NP 难的。物理评论快报, 127(12), 120502. doi: 10.1103/PHYSREVLETT.127.120502/FIGURES/1/MEDIUM

  • Campagne-Ibarcq, P., Eickbusch, A., Touzard, S., Zalys-Geller, E., Frattini, N. E., Sivak, V. V., Reinhold, P., Puri, S., Shankar, S., Schoelkopf, R. J., Frunzio, L., Mirrahimi, M., & Devoret, M. H. (2020). 量子误差校正:在振荡器的格点状态中编码的量子比特。自然, 584(7821), 368–372. doi: 10.1038/s41586-020-2603-3

  • Carena, M., Lamm, H., Li, Y.-Y., & Liu, W. (2022). 量子模拟规范理论的改进哈密顿量。物理评论快报, 129(5), 051601. doi: 10.1103/PhysRevLett.129.051601

  • Castelvecchi, D. (2017). IBM 的量子云计算机正式商用。 自然, 543(7644)。

  • Cerezo, M., Arrasmith, A., Babbush, R., Benjamin, S. C., Endo, S., Fujii, K., McClean, J. R., Mitarai, K., Yuan, X., Cincio, L., & Coles, P. J. (2021). 变分量子算法。自然物理学评论 2021 3:9, 3(9), 625–644. doi: 10.1038/s42254-021-00348-9

  • Choi, J., & Kim, J. (2019). 量子近似优化算法(QAOA)教程:基础与应用。ICTC 2019 - 第十届国际信息通信技术融合会议:ICT 融合引领自主未来, 138–142. doi: 10.1109/ICTC46691.2019.8939749

  • Chong, F. T., Franklin, D., & Martonosi, M. (2017). 面向现实量子硬件的编程语言与编译器设计。自然 2017 549:7671, 549(7671), 180–187. doi: 10.1038/nature23459

  • Chow, J. M., Gambetta, J. M., Córcoles, A. D., Merkel, S. T., Smolin, J. A., Rigetti, C., Poletto, S., Keefe, G. A., Rothwell, M. B., Rozen, J. R., Ketchen, M. B., & Steffen, M. (2012). 接近容错门限的通用量子门集,使用超导量子比特。物理评论快报, 109(6), 060501. doi: 10.1103/PHYSREVLETT.109.060501/FIGURES/4/MEDIUM

  • Deb, A., Dueck, G. W., & Wille, R. (2021). 探索替代量子计算架构的潜在好处。IEEE 集成电路与系统计算机辅助设计学报, 40(9), 1825–1835. doi: 10.1109/TCAD.2020.3032072

  • Deutsch, D., & Jozsa, R. (1992). 通过量子计算快速解决问题。伦敦皇家学会学报。数学与物理科学系列, 439(1907), 553–558. doi: 10.1098/RSPA.1992.0167

  • Egger, D. J., Gambella, C., Marecek, J., McFaddin, S., Mevissen, M., Raymond, R., Simonetto, A., Woerner, S., & Yndurain, E. (2021). 金融领域的量子计算:现状与未来展望。IEEE 量子工程学报, 1, 1–24. doi: 10.1109/TQE.2020.3030314

  • *Endo, S., Cai, Z., Benjamin, S. C., & Yuan, X. (2021). 混合量子-经典算法与量子误差缓解。Https://Doi.Org/10.7566/JPSJ.90.032001, 90(3).* doi: 10.7566/JPSJ.90.032001

  • *Fedorov, A. K., Gisin, N., Beloussov, S. M., & Lvovsky, A. I. (2022). 量子优势门槛下的量子计算:一次实用的回顾。* doi: 10.48550/arxiv.2203.17181

  • Ganguly, S., & Cambier, T. (2021). 使用 Silq 编程进行量子计算:使用新型高级量子计算编程语言快速入门。PACKT PUBLISHING LIMITED.

  • Gilyén, A., Song, Z., & Tang, E. (2022). 一种改进的量子启发式算法用于线性回归。量子, 6, 754. doi: 10.22331/q-2022-06-30-754

  • Gong, C., Dong, Z., Gani, A., & Qi, H. (2021). 基于受信服务器的量子云计算中的量子 k-means 算法。量子信息处理, 20(4), 1–22. doi: 10.1007/S11128-021-03071-7/FIGURES/16

  • Grover, L. K. (1996). 一种快速的量子数据库搜索算法. 《年度 ACM 计算理论研讨会论文集》F129452, 212–219. doi: 10.1145/237814.237866

  • Heim, B., Soeken, M., Marshall, S., Granade, C., Roetteler, M., Geller, A., Troyer, M., & Svore, K. (2020). 量子编程语言. 《自然物理评论》2020 2:12, 2(12), 709–722. doi: 10.1038/S42254-020-00245-7

  • Kanamori, Y., & Yoo, S.-M. (2020). 量子计算:原理与应用. 《国际技术与信息管理期刊》29(2). 取自 scholarworks.lib.csusb.edu/jitim/vol29/iss2/3

  • Kaoudi, Z., Quiané-Ruiz, J.-A., Thirumuruganathan, S., Chawla, S., & Agrawal, D. (2017). 基于成本的梯度下降优化器. 第 2017 年 ACM 国际数据管理会议论文集. doi: 10.1145/3035918

  • *Kellerer, Hans 等. “带固定成本和最小交易批量的投资组合选择.” 《运筹学年刊》99 (*2000): 287-304.

  • Knill, E. (1996). 量子伪代码的约定. 取自 www.osti.gov/biblio/366453

  • Li, W., & Deng, D. L. (2021). 量子分类器的最新进展. 《科学中国物理学、力学与天文学》2021 65:2, 65(2), 1–23. doi: 10.1007/S11433-021-1793-6

  • Li, Z., Dai, J., Pan, S., Zhang, W., & Hu, J. (2020). Deutsch-Jozsa 电路的合成与 IBM Q 的验证. 《国际理论物理期刊》59(6), 1668–1678. doi: 10.1007/S10773-020-04434-Z/FIGURES/11

  • Martín-Guerrero, J. D., & Lamata, L. (2022). 量子机器学习:教程. 《神经计算》470, 457–461. doi: 10.1016/J.NEUCOM.2021.02.102

  • Mccaskey, A., Nguyen, T., Santana, A., Claudino, D., Kharazi, T., & Finkel, H. (2021). 扩展 C++以支持异构量子-经典计算. 《ACM 量子计算学报》2(2), 1–36. doi: 10.1145/3462670

  • Mengoni, R., & Di Pierro, A. (2019). 量子机器学习中的核方法. 《量子机器智能》2019 1:3, 1(3), 65–71. doi: 10.1007/S42484-019-00007-4

  • Meyer, D. (2015). 支持向量机 * libsvm 接口在 e1071 包中的应用. 取自 www.csie.ntu.edu.tw/~cjlin/papers/ijcnn.ps.gz

  • 微软公司. (2017). 开始量子开发之旅. 开始量子开发之旅. 取自 www.microsoft.com/en-us/quantum/development-kit

  • Milanov, E. (2009). RSA 算法. 取自 sites.math.washington.edu/~morrow/336_09/papers/Yevgeny.pdf

  • Mitarai, K., Negoro, M., Kitagawa, M., & Fujii, K. (2018). 量子电路学习. 《物理评论 A》98(3), 032309. doi: 10.1103/PHYSREVA.98.032309/FIGURES/6/MEDIUM

  • Montanaro, A. (2016). 量子算法:概述. 《npj 量子信息》2016 2:1, 2(1), 1–8. doi: 10.1038/npjqi.2015.23

  • Ömer, B. (2002). 程序化量子编程。AIP 会议论文集,627(1),276. doi: 10.1063/1.1503695

  • Park, D. K., Blank, C., & Petruccione, F. (2020). 基于量子核的二元分类器理论。物理快报 A,384(21),126422. doi: 10.1016/J.PHYSLETA.2020.126422

  • Patterson, S. (2019). 学习 AWS 无服务器计算:AWS Lambda、Amazon API Gateway 及 Amazon Web Services 服务的初学者指南。 Packt 出版。

  • Schuld, M., & Petruccione, F. (2018). 使用量子计算机的监督学习。Springer 国际出版。 doi: 10.1007/978-3-319-96424-9

  • Shor, P. W. (1994). 量子计算算法:离散对数与因式分解。会议录 - IEEE 计算机科学基础年会,FOCS,124–134. doi: 10.1109/SFCS.1994.365700

  • Skorohod, A. V. (2012). 希尔伯特空间中的积分(Springer 科学出版社)。Springer 柏林海德堡。

  • Wang, D., Higgott, O., & Brierley, S. (2019). 加速变分量子本征求解器。物理评论快报,122(14),140504. doi: 10.1103/PHYSREVLETT.122.140504/FIGURES/3/MEDIUM

  • Yung, M. H. (2019). 量子霸权:一些基本概念。国家科学评论,6(1),22–23. doi: 10.1093/NSR/NWY072

第三章:量子金融领域

量子计算在解决各个领域的众多挑战方面具有巨大的潜力,金融行业也不例外。凭借其强大的计算能力,量子计算能够显著提升股票交易所、银行和技术分析师的效率和能力,通过实现更复杂的仿真和优化模型。许多大型银行已经开始探索量子技术,旨在解决如欺诈检测、信用卡发放可解释性、期权定价和资产压力测试等问题。

本章深入探讨了金融服务在社会中的作用,并考察了它们面临的关键挑战,这些挑战可能通过量子计算得到解决。本章介绍了不同类型的金融机构,并突出了金融服务领域中的关键问题。此外,本章还概述了为创建一个能够促进量子计算在金融中应用的工作环境所需的准备工作,确保技术要求和账户得到妥善设立。通过理解量子计算在金融领域的潜在影响,相关方可以更好地为未来做好准备,迎接这项技术在解决复杂问题和推动创新中的关键作用。

在本章中,我们将探讨理解金融服务领域的各个重要话题:

  • 金融机构类型介绍

  • 金融服务中的关键问题

此外,本章还将提供有关为后续章节中将呈现的实际练习准备工作环境的指导。这包括确保技术要求得到满足,账户正确设置,从而实现无缝的学习体验。通过涵盖这些基本话题,我们旨在为理解金融服务领域及量子计算等新兴技术在解决其最紧迫挑战方面的潜在影响提供全面的基础。

金融机构类型介绍

金融行业对一个国家经济的健康和增长至关重要。这个行业负责为企业和零售消费者提供基本的金融服务。如图 3.1所示,金融领域是一个多元化的生态系统,涵盖了银行、投资公司、保险公司、房地产经纪人、消费融资公司、抵押贷款机构和房地产投资信托REITs)。这些组织共同为经济的稳定和扩展作出贡献。

除了提供贷款和抵押贷款外,金融行业还在向个人和企业提供保险服务方面发挥着至关重要的作用。这确保了个人和商业资产能够抵御不可预见的风险,促进了经济中的安全感和稳定性。金融行业提供的就业机会广泛,数百万人在行业的各个职位上工作。从初级岗位到高层管理职务,这个行业为拥有不同技能和兴趣的个人提供了多样化的职业发展路径。此外,金融行业在帮助个人建立和维持退休基金方面起着关键作用,提供长期的财务保障和安心感。许多世界上最知名的银行,如摩根大通(JPMorgan Chase)、美国银行(Bank of America)和高盛(Goldman Sachs),是金融行业的关键参与者,它们的表现对标准普尔 500 指数具有重要影响。这些机构以及该行业的其他机构的成功,体现了一个强大而繁荣的经济。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_03_001.jpg

图 3.1 – 金融机构类型

零售银行

零售银行充当存款人和借款人之间的中介。它们促进资金流动,确保为有信用需求的人提供资金,同时为存款提供安全存储和利息。这些银行在经济中发挥着关键作用,促进资金流通,支持企业和个人的成长。此外,零售银行还提供各种金融服务,如汇款、信用卡和投资产品。零售银行的金融稳定性对于保持健康的经济至关重要。通过谨慎管理风险并遵守监管要求,它们可以保护存款人的资金,并为借款人维持可靠的信用来源。零售银行是一个竞争激烈的行业,银行们不断争夺存款和客户。因此,它们必须不断创新,开发新产品,以保持对客户群体的吸引力和相关性。

投资银行

投资银行在帮助公司进入金融市场并筹集资本方面起着至关重要的作用。一个显著的方法是通过促成首次公开募股IPO),使公司能够上市并向投资者提供股票。除了筹资服务外,投资银行还向主要机构提供主经纪业务和证券融资。这些服务使大规模客户能够以更高的效率和灵活性进入金融市场。投资银行的收入主要来自咨询和承销费用。这些费用作为对其专业知识和帮助客户应对复杂金融交易的补偿。此外,投资银行还通过金融市场交易赚取收入。通过参与各种交易活动,他们能够利用市场波动并从金融市场的动态性中获利。

投资管理人

投资管理人服务于个人和机构客户,涵盖了共同基金、ETF 和对冲基金的管理者。共同基金和 ETF 管理人向零售和机构客户提供预设服务,通过基于总资产的管理费来创造收入。对冲基金主要面向机构和富裕个人,“对冲基金”这一术语包括了替代资产管理策略,如私募股权、风险投资和商品交易 顾问CTAs)。

政府机构

投资管理人向个人和机构客户提供投资服务,如共同基金、ETF 和对冲基金管理。共同基金和 ETF 管理人提供针对不同类型投资者需求的预设投资解决方案。为了创造收入,共同基金和 ETF 管理人收取基于管理资产总额计算的资产管理费。这笔费用是为了补偿他们为客户提供的专业知识和服务。另一方面,对冲基金服务于机构和高净值个人,提供包括私募股权、风险投资和商品交易咨询等替代资产管理服务。对冲基金通过基于业绩的费用来创造收入,这些费用按所产生利润的百分比计算。投资管理人根据客户的特定需求提供定制化的投资解决方案。他们通过基于资产或业绩的费用赚取收入,具体取决于基金的类型及其客户。

交易所/清算所

股票市场交易所作为公司交易股票的平台。为了能够交易,股票必须在交易所上市。购买和销售订单会被整理在订单簿中,交易发生在订单匹配时。电子交易所每天可以执行数百万笔交易,而清算所则结算账户并管理风险,包括现金结算的衍生品交易。总而言之,股票市场交易所和清算所共同合作,为公司和投资者提供一个安全高效的交易环境。

支付处理器

支付处理器对于促进各方之间的安全金融交易至关重要。它们充当中介,管理买卖双方之间的资金交换。支付处理器采用先进的安全措施来保护金融数据并防止欺诈。它们为企业提供定制的支付解决方案,包括移动支付和国际支付选项。支付处理器使全球交易成为可能,帮助企业扩展并优化支付流程。

保险提供商

保险公司向个人提供寿险、健康险、车辆险和房屋保险,并向企业提供海上保险、数据泄露保险和工人赔偿保险。保险的目的是将财务损失的风险从投保人转移到保险公司,换取保费。保险单为个人和机构提供安全感和心理安慰。寿险支持投保人在其去世时的受益人,而健康险则涵盖医疗费用。车辆险和房屋险则保护投保人财产损失或损坏。对于企业而言,保险对于减轻因各种事件导致的财务损失风险至关重要。保险行业不断发展,以确保个人和机构能够获得必要的保障,保护其财务利益。

以下部分将讨论金融机构在为客户服务时面临的挑战。

金融服务中的关键问题

金融服务可以分为银行、金融服务和保险。银行必须管理客户期望,保持贷款质量,并防止客户流失,而金融市场参与者必须定期进行压力测试,以避免未来的麻烦。金融服务必须与时俱进,跟上技术进步,以满足客户不断变化的需求。保险公司必须正确迅速地向真实客户支付赔偿金,遵守监管合规要求,并投资于强有力的欺诈检测和预防措施。克服这些挑战需要持续的技术投资、员工培训,并承诺为客户提供高质量的服务。

银行业务通过商业银行和投资银行为客户提供存款和贷款服务。它们必须管理客户的期望,并在利率波动的动态环境中防止客户流失。另一方面,向有良好信用记录的合格客户提供贷款,对于保持贷款质量和避免未来危机至关重要。同样,金融市场参与者必须定期对其资产进行压力测试,以预测并避免因市场条件不确定而导致的未来问题。对于保险行业而言,及时且准确地向真正的客户支付理赔金额被定义为成功的关键指标。

银行金融市场保险
货币当局大宗商品健康保险
零售银行股票交易所财产与意外保险
商业银行债券市场寿险与年金
投资银行货币市场再保险
非银行金融机构衍生品

图 3.2 – 金融服务行业的细分

接下来的章节将列出金融机构面临的问题,稍后的书中我们将讨论一些由技术推动的解决方案,如量子计算,可能在初期阶段提供优势的案例。

资产管理

资产管理在这一过程中扮演着至关重要的角色,因为它涉及到规划和知识,旨在减少与一组资产相关的风险和成本。风险是金融互动中的一个重要驱动因素,像 2008 年金融危机这样的事件凸显了对银行和保险公司进行压力测试的重要性,以防止系统性市场危机的发生。投资者旨在在预期回报和风险之间找到平衡,分散投资组合是实现这一平衡的一种方式。然而,无法预见的事件仍然可能发生,监管机构和金融实体必须保持警惕,以控制金融领域的风险。尽管监管机构已加强与金融实体的互动,以防止此类事件在未来发生,但人类行为和金融市场的复杂性仍然是一个挑战。总体而言,管理资产和风险在金融领域是一个至关重要的考虑因素,因为它影响着投资回报的潜力以及整个系统的稳定性。虽然压力测试和监管控制有助于减轻风险,但持续的警惕和准备仍然是防止系统性市场危机发生的必要条件。

风险分析

评估与资产相关的风险至关重要,特别是在处理货币市场基金MMFs)时。短期利率和行业特定的评估等因素可能会影响这些基金的波动性。此外,消费者行为和短期利率的波动也会对投资组合管理产生显著影响。

为了对货币市场基金(MMF)的健康状况进行彻底评估,监管机构提供了指导方针,概述了需考虑的极端情境和风险。这为理解这些基金的全球状况提供了坚实基础。例如,《货币市场基金条例》(MMFR)第 28 条第 7 款要求由欧洲证券和市场管理局ESMA)提供压力测试指南,确保所有 MMF 在考虑的情境中具有同质性。检查最新的 ESMA 报告揭示了在压力测试中突出的风险,涵盖了流动性水平、信用和利率风险、赎回水平以及宏观经济冲击等方面的影响。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_03_003.jpg

图 3.3 – 来源于 ESMA 压力测试指南的资产流动性风险影响公式

评估这些因素的主要驱动因素是净资产值NAV),定义为投资基金资产的净值,减去其负债后,再除以剩余股份的数量。通过将 NAV 投射到各种潜在的未来情境中,监管机构可以评估,例如,流动性风险对投资基金资产的影响。这个过程需要一系列全面的指标,这不可避免地给所需技术带来了压力,以涵盖所有必要情境并向监管机构提交详细报告。

虽然监管机构提供了模拟压力净资产值(NAV)的校准条件,但实际产生准确模拟的方法在很大程度上由从业人员自行决定。他们必须确定如何根据其资产的特定参数化评估潜在的价值波动。一种方法是通过统计评估历史数据,识别未来趋势和波动模式,考虑过去的危机和突发事件作为潜在的(尽管不太可能的)选项。探索所有这些未来情境需要采用诸如蒙特卡罗模拟等方法,这是一种在此领域广泛采用的技术。

在接下来的第四章中,我们将深入探讨这些情境的模拟以及监管报告所需的参数化和校准过程。此外,我们还将研究量子计算机如何潜在地增强对未来净资产值(NAV)分配的评估,并在不同情境中建立效率前沿。通过利用量子计算机叠加不同选项的能力并同时评估多个情境,量子计算机可以显著加速这些高强度压力测试所需的并行计算,从而在金融风险管理中发挥无可替代的作用。

投资与投资组合

金融服务的任务是管理投资组合,以在不妥协风险的前提下最大化实体和客户的收入。这一微妙的平衡需要在投资组合优化方面的专业知识,而这通常会消耗这些机构大量的 IT 资源。除了压力测试之外,生成一组平衡预期收益和容忍风险的选项还涉及评估可能的无限选择,这是一个复杂且要求极高的工作。资产定价对于压力测试和监管报告至关重要,同时也是预测潜在市场情景和做出明智投资决策的关键。尽管蒙特卡罗模拟已被广泛应用,但历史数据的可用性以及预测和多元时间序列的进展,促使了机器学习ML)在生成和评估特定市场中相关值未来情景的应用大幅增长。

金融行业包括各种类型的银行和银行活动,其中投资银行被视为商业银行的一个专业子集。投资银行主要服务于实体而非个人,管理着一系列复杂程度不同的资产。它们的收入主要来自于所管理活动的利润,这使得它们与商业银行和零售银行的核心服务有所区别,后者专注于为大众和大型机构提供存款、贷款以及信贷生成。传统上,投资银行家依靠经验和市场接触来确定交易价格。然而,数据和技术的可用性使得投资活动得以在更大规模上进行,且结果更具统计学依据,减少了人为偏差。因此,近年来投资银行一直是技术进步的早期采纳者,拥抱新的信息范式、云计算转型、大数据存储和处理,以及如人工智能AI)和机器学习(ML)等前沿技术,用于优化商业流程和产生更好的洞察。

投资者的一项关键任务是识别最有效的资产配置方案,在给定预算内最大化预期回报。未来趋势的不确定性以及某些情景下可能出现的负回报(损失)要求在风险的概念下管理这些可能性。在第五章中,我们将系统地探讨这一问题,但重要的是要理解,资产选择的驱动因素有两个主要概念:回报和风险。投资专业人士的专业知识在权衡这两个因素的取舍中发挥着重要作用。评估风险,也就是资产波动性,对于优化资产组合至关重要。虽然有许多复杂的技术可以用来确定风险,但遍历一个实体可能面临的潜在情景既费时又计算量大。人工智能和机器学习可以提供启发式方法,在这个复杂的潜在组合环境中逼近解决方案。无监督学习等技术可以基于不同的盈利模式对生成的组合进行分割,为组合分析提供一种快速的方法。

使用监督学习技术(如 DeepMind 所采用的技术)因其能够从数据中推导出成功的策略,甚至是自生成的数据,并为特定任务提供可操作的建议而日益受到关注。这种自动化使得高频交易成为可能,能够捕捉市场中的微小变化,可能会超越人工驱动的活动。然而,这项技术也伴随其自身的风险,因为高度自动化的系统如果不加以控制,可能在毫秒之间引发全球性危机。这突显了在利用技术力量的同时,理解其潜在后果的关键平衡。

个人画像和数据驱动的服务

大规模数据集的出现以及用户与机构之间不断发展的互动渠道彻底改变了银行业,为改善这些互动的个人画像和个性化服务铺平了道路。人类行为和商业流程都已通过数字化互动发生了变化,从而提供了更好的策划和定制服务。例如,投资银行在协助公司满足资本需求方面发挥着关键作用,充当公司与投资者之间的中介角色。它们帮助客户确定债券发行的数量和时机,以及评估市场需求。

机器学习为投资银行提供了有前景的进展,使其能够通过提供数据驱动的选项和有价值的市场洞察来增强客户体验。机器学习帮助客户最大化交易价值,同时最小化潜在的财务损失。机器与人类的结合证明比单独依赖任何一方更为强大,计算机辅助方法在传统方法中的优势和潜在风险已日益显现。根据德勤的报告,人工智能可以贯穿并购M&A)生命周期,提供深入的尽职调查,辅助谈判并促进并购后的整合。

银行内部的信用卡评估过程也经常使用人工智能(AI)和机器学习(ML)模型。在零售和企业银行中,定制化用户体验对于减少流失率并为客户提供有价值的产品和服务推荐至关重要。AI/ML 模型通过数据实现详细的用户画像,使信息能够有针对性地传递给客户。

随着金融机构越来越多地采用技术,在制定战略决策时,考虑机会和局限性至关重要。关键问题包括投资银行是否应更多依赖数据而非经验或监管理解,以及科技公司和银行是否应共享数据,以便在信息化经济中从机器学习(ML)中受益。同时,必须解决有偏见的机器学习模型可能导致信用卡尽职调查不足和歧视性贷款行为的问题。

使用数据驱动决策的公司必须确保对自动化结果负责,并且确保采取适当的控制措施,以确保在整个过程中做出无偏且符合伦理的决策。不充分或有偏的决策不仅可能损害这些智能技术所应用的业务流程,还可能损害未能对其客户互动进行充分监管的机构的声誉。

技术正在不断进步,提供公平性和偏见评估的工具,从可解释的人工智能(AI)向伦理人工智能(AI)发展。这是一个复杂的问题,因为伦理标准在不同国家、文化区域,甚至在具有不同宗教背景的个体之间可能存在差异。量子机器学习(Quantum ML)是科学界正在探索的一个领域,旨在提供改进的人群划分和信息复杂度降低方法,而不引入偏见。诸如概率量子聚类和量子特征选择等技术正在出现,以增强机器学习工具箱,更高效且公平地处理大规模高维数据集。

客户识别与客户留存

传统银行面临来自创新型初创企业和金融科技公司持续的竞争,这些公司利用人工智能和机器学习提供高效、快速的解决方案。这些新兴企业因其创新和透明的产品与服务而著称,正在改变金融格局。传统银行则在严格的监管、挑剔的客户和缺乏产品差异化的困境中挣扎,这些因素限制了它们的盈利能力。为了在这个不断发展的市场中取得成功,银行必须优先考虑建立和维护客户信任。客户服务对于保持客户至关重要,但传统银行往往在通过实体基础设施和客户服务人员提供卓越服务方面遇到困难。人工智能为银行业提供了显著提升客户服务的潜力,它能够提供可扩展性、个性化、质量、一体化体验和广泛的信息访问。人工智能可以以更低的运营成本实现这些优势,既能取悦客户,又能增加支出与产品收入之间的利润差距。

信任是金融行业的核心要素,许多金融机构至今仍在应对由 2008 年金融危机引发的信任危机。这种信任缺失妨碍了金融公司获取新客户的能力,并可能导致客户获取成本上升。客户与金融服务提供商之间的强大关系对于长期成功至关重要。客户生命周期价值CLV)的概念在这一关系中占据核心地位。客户在金融机构的停留时间越长,他们的 CLV 就越高。当客户经历负面体验时,他们更可能离开,从而降低 CLV 并导致获取成本的损失。然而,优质的客户服务可以提高客户保持率,阻止客户寻求替代方案,并最终提高 CLV。满意的客户更有可能推荐他人使用其金融服务提供商的服务,从而降低客户获取成本并增加利润。

在数字化时代,平衡客户保持与准确识别有价值客户的能力对于金融机构至关重要。必须实施客户画像和精准营销策略,以吸引大多数客户群体。然而,系统性地执行这些策略可能会带来挑战,银行必须做好应对准备。总之,金融行业的数字化为传统银行带来了机遇和挑战,它们在努力适应不断变化的环境时,必须找到合适的应对方式。通过利用人工智能(AI)和机器学习(ML),银行能够提升客户服务,建立信任,并增强客户体验。然而,银行也必须应对客户画像和精准营销的潜在风险,确保制定公平、无偏、有效的客户保持和客户获取策略。

信息差距

一个机构作为一个复杂的系统运作,客户与核心银行流程之间有多个层次的互动。客户在联系一个组织的联络中心时,通常会遇到延迟,因为客服代表需要时间收集有关客户及其产品或服务的相关信息。客户互动的复杂性、他们的满意度、投诉历史以及基于客户生命周期价值(CLV)、信用评分或一般银行政策的整体策略,对于呼叫代理来说,在流畅的对话中综合这些信息是具有挑战性的。事实上,缺乏同理心和互动能力的呼叫代理可能会导致客户对其银行机构的不满。

持续的数字化革命使客户能够通过数字渠道直接访问和管理他们的服务,如网站、应用程序和家庭助手。银行流程的数字化和客户互动的数字化改变了银行业务的进行方式,并促进了更智能的决策制定。自然语言互动和对个体需求与询问的理解已成为可能,同时还可以通过行为分析来衡量客户的满意度。随着人工智能(AI)和机器学习(ML)技术的广泛应用,银行现在可以提供个性化且高效的客户体验。这些技术不仅增强了客户互动,还为银行高层提供了有价值的见解。全面的 360 度客户视图使决策者能够评估特定客户或群体,从而确保做出以客户需求和满意度为优先的明智决策。

此外,银行业的数字化转型扩展了交叉销售和增销的潜力。通过分析客户数据和偏好,银行现在可以提供量身定制的产品和服务推荐,从而加强客户关系并增加整体收入。尽管数字化带来了好处,但金融机构在与客户互动时仍必须保持人性化的接触。随着技术的进步,银行必须在利用数字渠道和保持同理心、个人化的客户关系之间找到平衡。确保客户感到被重视和理解应始终是首要任务,即使在机构采用创新解决方案的同时。

银行业务流程和客户互动的数字化已经彻底改变了行业,提供了更智能决策、个性化体验和提升客户满意度的机会。随着金融机构继续采用这些数字技术,它们也必须优先考虑保持与客户的强大同理心联系,以确保长期成功和银行关系中的信任。

定制化

在今天竞争激烈的市场中,服务个性化对于取悦客户至关重要。认识到每个个体都是独特的,标准化的方法和程序无法提供量身定制的解决方案。能够处理各种流程和操作的人工智能工具,提供了一种在不牺牲效率的情况下交付定制化体验的方式。因此,人工智能在可扩展性、个性化和成本效益之间找到了平衡,使其成为大型组织维持竞争优势的理想解决方案。

客户获取需要高销售量和多个接触点,通常需要增加基础设施和人力资源。扩展实体网点和雇佣更多的客户服务代表可能会增加成本,同时也可能导致不同地点之间公司政策执行的不一致。然而,本地化的专业知识和个性化的互动仍然是客户满意度的关键组成部分。过于笼统的人工智能系统可能会破坏成本效益自动化与客户满意度之间的微妙平衡,突显了量身定制解决方案的必要性。

在银行业开发和实施人工智能或机器学习解决方案需要相当大的努力,以确保与现有流程的无缝集成。必须分析大量的交易、客户互动、产品生命周期和快速变化的市场活动,以识别模式并充分利用这些先进技术。此外,在从这些系统中策划和提炼知识时,融入公平和无偏模型交付的方法至关重要。

人工智能应用的一个例子是使用面部识别技术简化客户注册和身份验证过程。这项技术在智能银行趋势中获得了广泛应用,但在处理肤色较深的个体时出现了几起偏见案例。这种歧视性做法可能会显著损害金融机构的声誉,因此解决人工智能系统中的潜在偏见变得至关重要。

个性化是满足客户期望并保持银行业竞争优势的关键。人工智能为提供量身定制的体验提供了强大的解决方案,同时保持效率和成本效益。然而,金融机构必须仔细考虑人工智能实施的潜在陷阱,如偏见和公司政策的不一致执行,以确保与现有银行流程的成功整合。随着金融行业不断接受人工智能和机器学习技术,优先考虑这些先进工具带来的好处和潜在风险至关重要。通过在个性化、可扩展性和公平性之间找到平衡,银行可以利用人工智能提供卓越的客户体验、建立信任,并确保在不断发展的市场中实现长期成功。

欺诈检测

除了客户生命周期价值(CLV)定制化的效果外,许多企业面临的一个关键问题是识别并采取反欺诈措施的能力。这是一个关键问题,因为它会破坏企业的活动,带来风险,而客户本应是企业活动的资产。

鉴于能够对客户群进行细分和画像,显然可以使用 AI 或 ML 技术来实现这一目的。它可以识别欺诈者,预测尚未表现出该行为的现有客户的模式,并限制这些潜在未来行为可能对企业业务活动造成的损害。

这也是一个敏感性问题,因为我们的模型可能会将某个客户标记为欺诈行为者,而这仅仅是与该行为发生概率相关的预测。这就要求在训练和评估欺诈检测模型时采用最佳实践,因为模型的敏感性和特异性需要针对正确的使用进行调整。幸运的是,在一般情况下,违约者是少数,这也意味着在评估客户群体中的这一情况时,企业可能可用的数据中发现的证据较少。

在讨论了一些最佳实践和执行此类评估的关键点之后,我们将在第六章中看到,QML 模型如何帮助扩大可用于执行此任务的模型范围,并且在某些情况下,由于量子神经网络在文献中表现出的表达能力,我们可能在经典方法上拥有优势,尽管这种优势可能是微小的,但它对业务可能产生实质性的影响。

总结

金融机构涵盖了从零售银行和投资银行到保险公司等广泛领域,在促进交易和风险管理方面扮演着不可或缺的角色。资产管理作为一项关键职能,通常采用压力测试和监管控制来评估和减轻与资金市场基金等资产相关的风险,这一过程在未来可能通过量子计算得到加速和增强。资产组合优化作为金融服务的另一个基础方面,将预期收益与相关风险进行平衡,并日益利用人工智能(AI)和机器学习(ML)等先进技术。随着这些技术在投资领域的日益重要,彻底理解这些自动化技术的影响变得至关重要。金融机构采用 AI 和 ML 不仅旨在提升客户体验和优化业务运营,还力图保持伦理标准和问责制。这一技术进步还带来了来自金融科技初创企业的挑战,这些企业利用这些技术,从而强调传统银行需要不断建立客户信任并改善服务交付。客户互动渠道的持续数字化转型促进了智能决策的形成,并使得银行流程能够实现自然语言交互,从而提高客户满意度。同时,AI 和 ML 模型的应用必须在追求个性化和效率的同时,注重公平性和无偏性,以保障机构声誉。最后,AI 和 ML 可以作为有效工具,帮助检测客户群体中的潜在欺诈行为,并制定适当的对策,这要求遵循最佳实践并进行谨慎评估。

在下一章中,将使用经典和量子算法来确定衍生品定价。

进一步阅读

本章中简要介绍的部分主题背后有着丰富的文献资料。金融服务已经存在一段时间,许多资源可以供那些初涉此领域并希望了解我们在金融量子计算专门材料中所涉及的主题的读者深入学习。

有关衍生品定价、资产组合优化和欺诈检测的问题和技术将在各自的章节中参考具体文献。此外,下一章还将深入探讨计算金融中使用的技术。

对于那些希望更好理解银行业复杂生态系统及其运作方式的读者,关于金融市场的一些有趣参考文献包括 Pagano(1993 年)和 Bond 等人(2012 年)的出版物。

对于关注金融市场中的伦理和公平问题的人来说,Shefrin & Statman (1993) 的论文可能会有所帮助。如果您的兴趣与人工智能和机器学习领域中的伦理挑战相关,并且全球企业都有应用,您可能会对 Jobin 等人(2019)的研究感兴趣。

关于风险评估指南、压力测试指南及一般概况,我们强烈建议浏览 ESMA 网站(www.esma.europa.eu/)以及美国政府问责局网站(www.gao.gov/)。这些指南和建议较为通用,鉴于它们监管的市场规模,可能具有一般性用途,但我们建议您也查询当地主管机关的信息。

关于之前提到的本书未涉及但可能对您感兴趣的主题,我们想特别强调高频交易系统和推荐系统的相关性,这些系统如今可以在许多金融机构中进一步实现自动化。两者都是非常活跃的研究领域,但我们希望指出两项推荐,供那些对这些话题感兴趣的人参考。

Zibriczky (2016) 提供了一篇温和的入门文章,回顾了本章中呈现的、用于金融案例的不同类型推荐系统的相关实例。关于高频交易的参考文献有很多,因其普及性,Cartea 等人(2015)则提供了一本很好的合集,介绍并理解这些技术的基本原理。

尽管这些技术可能与该领域相关且有趣,但它们在量子领域中并未能提供与经典技术相对应的良好替代方案。尽管如此,量子计算每天都带来新的理念和应用,硬件提供商也在不断改进他们的产品,增加更多应用的容量,因此保持对该领域进展的关注非常重要。

参考文献

Bond, P., Edmans, A., & Goldstein, I. (2012). The real effects of financial markets. Annu. Rev. Financ. Econ., 4(1), 339-360.

Cartea, Á., Jaimungal, S., & Penalva, J. (2015). Algorithmic and High-Frequency Trading. Cambridge University Press.

Jobin, A., Ienca, M., & Vayena, E. (2019). The global landscape of AI ethics guidelines. Nature Machine Intelligence, 1(9), 389-399.

Pagano, M. (1993). Financial markets and growth: An overview. European economic review, 37(2-3), 613-622.

Shefrin, H. & Statman, M. (1993). Ethics, fairness, and efficiency in financial markets. Financial Analysts Journal, 49(6), 21-29.

*Zibriczky, D. (2016). Recommender systems meet finance: a literature review. In Proc. 2nd Int. Workshop Personalization Recommender Syst (*pp. 1-10).

第二部分:量子计算在金融领域的高级应用

本节探讨了量子机器学习QML)在多种金融领域中的作用。首先,分析了 QML 如何简化衍生品估值这一复杂任务。接着,研究了 QML 在重新定义投资组合管理中的潜力,这一过程涉及审慎的金融决策。随后,分析转向信用风险领域,QML 有助于更精确地识别潜在的违约者。最后,强调了这些量子技术在实际环境中应用的意义。

本部分包含以下章节:

  • 第四章*,衍生品估值*

  • 第五章*,投资组合估值*

  • 第六章*,信用风险分析*

  • 第七章*,量子云中的实现*

第四章:衍生品估值

衍生品定价是量化金融中最重要的方面之一。衍生品合约的总市场价值为 12.4 万亿美元(2021 年 12 月底场外衍生品统计数据 —— bis.org),使其成为最有利可图且最具挑战性的模拟与优化问题之一。尽管衍生品定价的许多方面可以通过经典计算来进行,但当需要进行多次计算时,基于门的量子计算机可以作为一种高效资源,因为它们能够并行处理并处理多个资产。本章探讨了衍生品定价的理论方面,并通过经典计算和基于门的量子计算机考察了其实时应用。

本章讨论了从普通人角度解释期权定价的必要性。期权定价的各个方面将以易于理解的方式进行描述。不同的案例研究和轶事将被融入,以使解释更加全面和详细。第一部分涵盖了衍生品定价的理论方面,同时也介绍了过渡到更复杂的量子机器学习QML)模型的实际方面。

在后续部分,我们将看到一个使用经典计算和量子计算实现期权定价的演示示例。我们将通过经典的蒙特卡洛模拟方法推导出一个普通期权的估值。随后,一个包含代码片段的全面案例研究将帮助你理解如何在量子计算上实现衍生品定价的数学建模。

本章将涵盖以下主题:

  • 衍生品定价——理论方面

  • 衍生品估值的经典蒙特卡洛模拟实现

  • 衍生品估值的量子计算算法

衍生品定价——理论方面

学习衍生品定价所涉及的因素至关重要。深入了解金融产品定价对于做出明智的投资决策至关重要,无论你是在市场的买方还是卖方。毕竟,了解一个产品的属性如何相互作用以产生价值,对于决定提供或竞标一个金融产品是必要的。理解金融资产的价格至关重要。资本资产定价模型及其基于贴现现金流的变体帮助确定金融资产的价值。然而,与传统资产如股票和债券不同,衍生品有其挑战,但也具有一些出乎意料的简单特性。在接下来的部分,我们将讨论货币的时间价值这一重要概念,这为证券定价奠定了基础。

货币的时间价值

金钱的价值随着时间波动。这具体意味着什么呢?假设你可以选择现在拿到 100 美元,或者一年后拿到 100 美元,你会选择哪一个?大多数人可能会选择尽快拿到 100 美元(也就是今天)。现金流越远离现在,它的价值就越低。类似的方法可以用来比较不同时间点现金流的价值。假设我们希望一年后得到 100 美元,而不是两年后。数学上,风险无关的利率是金钱价值随时间变化的原因。资金获得得越快,所能获得的利息就越快。通过计算现金流的现值并进行比较,我们可以比较在不同日期得到的不同金额的价值。

案例研究一

时间价值是金融学中的一个关键概念,它指的是今天的金钱比未来相同金额的金钱更有价值,因为它具有赚取回报的潜力。这个概念在许多金融决策中都非常重要,包括投资、贷款和其他交易。在本文中,我们将探讨一个时间价值的例子,背景是一个折现价格的未来案例,假设三年后有一笔 450 美元的现金流,折现率为 10%。

假设折现率为 10%,可以使用以下公式计算三年后 450 美元现金流的现值:

PV = FV * (1 + r) ^ n

其中 r 代表折现率,n 代表期数,PV 和 FV 分别表示现值和未来值。

使用这个公式,我们可以计算出三年后 450 美元现金流的现值,计算方法如下:

PV = 450 美元 * (1 + 0.1) ^ 3

PV = 300.30 美元

这意味着,在 10%的折现率下,三年后 450 美元的现值为 300.30 美元。换句话说,如果我们将在三年后收到 450 美元,并且想知道今天这笔现金流的价值,我们将把它折算回今天的现值 300.30 美元。

时间价值理论也可以应用于投资。例如,假设我们今天投资 1000 美元于一个承诺三年年回报率为 10%的基金。使用公式计算该笔一次性投资的未来价值,我们可以计算出这项投资的未来价值如下:

FV = PV × (1 + r) ^ n

FV = 1000 美元 × (1 + 0.1) ^ 3

FV = 1331 美元

如果我们今天以 10%的年回报率投资 1000 美元,三年后的投资价值将为 1331 美元。

因此,货币的时间价值是金融中的一个基本概念,在许多金融决策中起着至关重要的作用。无论是计算未来现金流的现值,还是计算投资的未来价值,理解货币的时间价值对于做出明智的金融决策和有效管理风险至关重要。通过运用本文讨论的公式和概念,投资者可以做出更好的金融决策,达成财务目标。以下部分将讨论证券定价的一个基本概念。

证券定价

证券定价是指确定股票、债券、期权及其他投资产品等金融工具的价值。证券的价格反映了市场上对该证券的供求关系,受多种因素的影响,包括公司业绩、经济状况和投资者情绪。

一般而言,证券的价格是通过市场中买卖双方的互动来决定的。当买方多于卖方时,证券价格会上涨;而当卖方多于买方时,价格则会下跌。

有几种方法用于确定证券的价格,包括以下几种:

  • 市场定价:这是最常见的证券定价方法,通过证券的当前市场价值来确定其价格。市场定价通常适用于公开交易的证券,这些证券的价格通过在交易所的竞标和交易来确定。

  • 基本面分析:该方法通过分析公司财务报表和其他相关信息来确定其内在价值。基本面分析考虑收入、利润、资产、负债和增长潜力等因素,来判断证券是被低估还是高估。

  • 技术分析:该方法通过分析价格和交易量数据,识别可以用来预测未来价格走势的模式和趋势。技术分析通常与基本面分析结合使用,以做出投资决策。

  • 期权定价模型:这些模型使用数学公式来确定期权合约的公允价值,考虑的因素包括标的资产的价格、到期时间以及标的资产的波动性。

除了这些方法外,市场参与者在确定证券价格时,还会考虑其他因素,如利率、通货膨胀、地缘政治事件和市场情绪。

案例研究二

证券定价是对股票、债券和其他证券等金融资产的定价过程。市场需求、经济状况和公司业绩都会影响证券定价。我们来看一个关于证券定价的例子,假设一家公司 ABC 发行了一只面值为$1,000,票面利率为 5%的债券,每年支付利息,期限为十年。

第一步 – 确定市场利率

市场利率是投资者期望从类似证券中获得的回报率。假设与 ABC 公司债券特征相似的债券的市场利率为 6%。

第二步 – 计算债券的现值

使用 6%的市场利率,我们可以通过以下公式计算债券的现值:

PV =  C _ (1 + r) n  +  FV _ (1 + r) n

对于 ABC 公司的债券,年利息支付为$50($1,000 面值的 5%),债券的期限为 10 年。使用这些数值和 6%的市场利率,我们可以计算债券的现值如下:

PV =  $50 _ (1 + 0.06) 1  +  $50 _ (1 + 0.06) 2  + … +  $50 _ (1 + 0.06) 10  +  $1,000 _ (1 + 0.06) 10

PV =  $50 _ 1.06  +  $50 _ 1.236  + … +  $50 _ 1.791  + $385.54

PV = $850.31

第三步 – 确定债券的市场价格

债券的市场价格是债券预期现金流的现值。在本例中,ABC 公司债券的市场价格为$850.31,这是年利息支付和面值按 6%的市场利率折现后的现值。

第四步 – 将市场价格与面值进行比较

如果市场价格低于面值,则债券以折扣价格出售;如果市场价格高于面值,则债券以溢价出售。在本例中,ABC 公司债券的市场价格低于面值$1,000,这意味着该债券以折扣价出售。

因此,证券定价是一个复杂的过程,涉及分析影响金融资产价值的各种因素。通过理解证券定价的原理并使用适当的估值方法,投资者可以做出明智的买卖决策,最大化回报并管理风险。接下来的部分将讨论衍生品定价的过程和方法。

衍生品定价

衍生品定价是金融投资组合管理中的一个重要方面。在广泛的金融工具领域中,衍生品顾名思义,从其所代表的资产中衍生出价值。这些资产或证券可能由股票、债券、商品或货币表示。衍生品定价涉及确定这些工具的公允价值,可用于交易、对冲或投机目的。

影响衍生品定价的因素

有几个因素可能会影响特定衍生品的价格。相关因素包括标的资产的价格、到期时间、标的资产的波动性和利率。例如,如果标的资产的价格上升,那么该资产的看涨期权的价格也会增加,而看跌期权的价格则会下降。同样,如果到期时间增加,期权的价格也会增加。标的资产的波动性也是定价衍生品的重要因素,因为更高的波动性意味着资产有更大的可能性朝着预期的方向波动。最后,利率也会影响衍生品的价格,因为它会影响借贷成本和持有标的资产的机会成本。

衍生品定价的方法

定价衍生品的方法有几种,包括布莱克-斯科尔斯模型、二项式期权定价模型和蒙特卡罗模拟。布莱克-斯科尔斯模型是一个用于定价欧式期权的数学模型,它假设标的资产的价格遵循对数正态分布。二项式期权定价模型是一个离散时间模型,它使用树状结构表示标的资产价格的可能结果。蒙特卡罗模拟是一个随机模型,它通过随机抽样模拟标的资产的价格路径,并计算衍生品的期望值。

衍生品定价所涉及的风险

衍生品定价涉及多种风险,包括市场风险、信用风险和操作风险。市场风险源于标的资产价格的变化,这可能影响衍生品的价值。信用风险则是当一方未能履行其对另一方的义务时,可能导致违约。操作风险源于衍生品交易、结算或会计过程中的错误,这可能导致财务损失。

衍生品定价是金融投资组合管理中的一个关键方面,因为它允许投资者对冲风险、预测市场波动并制定定制化的投资策略。定价衍生品的方法有多种,包括布莱克-斯科尔斯模型、二项式期权定价模型和蒙特卡罗模拟。然而,衍生品定价也涉及多种风险,包括市场风险、信用风险和操作风险。因此,彻底理解这些风险并采取适当的风险管理策略,以将其对金融投资组合的影响降到最低,至关重要。

案例研究三

证券定价的一个例子是股票期权的定价。股票期权是一种衍生工具,持有者在没有义务的情况下,拥有在特定时间内以合同约定的价格(即执行价格)买入或卖出特定数量股票的权利。正如前面所提到的,股票价格可能会受到多个因素的影响。

例如,假设我们考虑 XYZ 公司 100 股认购期权,执行价格为 50 美元,三个月后到期。如果 XYZ 公司当前的市场价格为 55 美元,则该期权的内在价值为每股 5 美元(市场价格与执行价格的差额)。然而,期权的价格还会受到诸如到期时间、股票波动性和利率等因素的影响。

假设股票的波动性较高,表明股价有更大的波动可能,而利率较低,借款成本较低。在这种情况下,期权的价格会较高,因为股票价格朝着期望方向波动的可能性增大,期权的价值也随之增加。相反,如果股票的波动性较低而利率较高,期权的价格会较低,因为股票价格朝着期望方向波动的可能性较低,借款成本较高。总体而言,证券定价(如期权)涉及评估多个因素,并使用各种定价模型来确定公允价值。定价过程帮助投资者做出明智的投资决策,并有效管理风险。

证券定价过程包括多个步骤,以下是其中的一些:

  1. 识别证券:定价证券的第一步是识别所定价的具体证券。这可能是股票、债券、期权或其他金融工具。

  2. 收集信息:收集关于证券的所有相关信息,包括当前市场价格、历史价格趋势、可能影响其价值的新闻或事件,以及任何相关的风险。

  3. 确定定价因素:证券的价格受多种因素的影响,包括供需关系、利率、经济状况和市场情绪。识别可能影响证券价格的最相关因素。

  4. 选择定价模型:有多种定价模型用于确定证券的公允价值,包括折现现金流DCF)模型、股息折现模型DDM)以及用于期权的布莱克-舒尔斯模型。根据所定价证券的类型和可用信息,选择最合适的模型。

  5. 计算价格:一旦选择了定价模型,就使用相关的定价因素和模型所需的假设来计算证券的公允价值。这可能涉及复杂的数学计算,特别是对于期权和其他衍生品。

  6. 评估结果:评估定价模型的结果,确保计算出的价格合理,并与市场条件和其他可用信息一致。

  7. 定期更新定价:证券定价是一个持续的过程,价格可能会根据新信息和市场条件迅速变化。定期更新定价模型,并在需要时重新计算证券的价格,以确保投资组合保持最新,并准确反映证券的价值。

这表明,证券定价是一个复杂的过程,涉及多个步骤,包括识别证券、收集信息、确定定价因素、选择定价模型、计算价格、评估结果和定期更新定价。通过遵循这些步骤,投资者可以做出明智的投资决策,并有效管理风险。

衍生品定价 – 理论

Black-Scholes 模型广泛用于定价衍生品,如期权。Fischer Black 和 Myron Scholes 在 1973 年提出了这一公式,并且它已经成为现代金融的基石。该模型考虑了影响期权价值的多个因素,包括基础资产价格、期权的行使价格、到期时间、波动率和无风险利率。让我们考虑一个例子,使用 Black-Scholes 模型为股票的看涨期权定价。

假设 XYZ 股票的看涨期权行使价格为 50 美元,将在六个月后到期。当前股票价格为 52 美元,股票的波动率为 20%,而无风险利率为 3%。

第一步 – 计算 d1 和 d2 的值

d 1 = [ln S _ K + (r + σ 2 _ 2 )t ] ____________ (σ √ _ t )

d 2 = d 1 − σ √ _ t

其中,S 为当前股票价格,K 为期权的行使价格,r 为无风险利率,σ为股票的波动率,t 为到期时间(单位:年)。

使用给定的值,我们可以按如下方式计算 d1 和 d2:

d 1 = [ln 52 _ 50 + (0.03 + 0.2 2 _ 2 )0.5 ] ___________ (0.2 √ _ 0.5 ) = 0.

d 2 = 0.5601 − 0.2 √ _ 0.5 = 0.4187

第二步 – 计算期权价格

使用以下公式,我们可以计算出看涨期权的理论价格:

C = S × N(d 1) − K e −rt N( d 2)

其中 C 是看涨期权的理论价格,S 为当前股票价格,K 为期权的行使价格,r 为无风险利率,t 为到期时间(单位:年),N()为标准正态分布的累积分布函数。

使用给定的值,我们可以按如下方式计算出看涨期权的理论价格:

C = 52 × N(0.5601) − 50 e^−0.03*0.5 N(0.4187) = $4.42

第三步 – 分析结果

计算出的看涨期权理论价格为$4.42,这意味着投资者可以以$4.42 的价格购买期权,并在六个月内有权以$50 的价格购买 XYZ 股票。如果股票价格超过$54.42(执行价格加期权价格),投资者可以行使期权并获利。另一方面,如果股票价格低于执行价格,投资者可以让期权到期,仅损失购买期权时支付的权利金。

因此,布莱克-斯科尔斯模型是定价衍生品(如期权)的重要工具。通过考虑影响期权价值的各种因素,投资者可以做出明智的买卖决策,以管理风险并最大化回报。然而,需要注意的是,该模型存在一些限制和假设,例如假设波动率恒定且不存在交易成本,而这些假设在现实情况下可能并不总是成立。

布莱克-斯科尔斯-默顿(BSM)模型

BSM 模型被广泛认为是现代金融学中最重要的突破之一,其广泛应用使期权交易变得更加高效,并且让投资者更易参与。

BSM 模型使用六个变量来确定期权的公允价值。这些变量包括波动率、类型、股价、执行价格、时间和无风险利率。波动率指的是标的资产价格的波动幅度,而类型则指期权是看涨期权还是看跌期权。看涨期权是指买入权,而看跌期权则指卖出权。股价和执行价格分别指当前市场价格和可用于买卖标的资产的预定价格。时间指期权到期前的剩余时间。无风险利率是指无风险投资(如政府债券)的理论回报率。

BSM 模型常用于根据这六个变量来确定期权的公允价值。为了说明 BSM 模型,我们以一个例子为例:假设一位投资者持有一个执行价格为$100 的看涨期权,该期权将在六个月后到期。我们假设标的资产的当前市场价格为$110,无风险利率为 3%,且标的资产的波动率为 20%。

使用 BSM 模型,我们可以计算出看涨期权的公允价值。使用 BSM 模型计算看涨期权公允价值的公式如下:

C = S × N(d1) − K e^−rt N(d2)

其中 C 是看涨期权的公允价值,S 是标的资产的当前市场价格,K 是期权的执行价格,r 是无风险利率,t 是到期时间,N(d1)和 N(d2)是累积分布的标准正态函数。

将公式应用到给定的例子中,我们得到:

d1 =  [ln 110 _ 100 + (0.03 + 0.2 2 _ 2 )0.5 ]  _________________  (0.2 √ _ 0.5 )  = 0.9568

d2 = 0.9568 − 0.2 √ _ 0.5  = 0.8154

N(d1) = 0.831

N(d2) = 0.7926

C = 110 × 0.831 − 100 × e −0.03×0.5 × 0.7926 = 13.29 美元

因此,看涨期权的公平价值为 13.29 美元。这意味着,如果投资者以该价格出售期权,根据 BSM 模型,这将是一个公平的价格。

BSM 模型是一个广泛使用的公式,允许投资者根据六个变量来确定期权的公平价值——波动率、类型、股价、行使价格、时间和无风险利率。该模型通过提高定价效率和透明度,彻底改变了期权市场。这里展示的例子说明了 BSM 模型的应用,并突显了它在现代金融中的重要性。

假设

BSM 模型是一个广泛使用的期权定价模型,假设了几个因素。这些假设对确定标的资产的公平价值至关重要,无论是看跌期权还是看涨期权。以下是 BSM 模型的一些重要假设:

  • 有效市场:该模型假设市场是有效的,意味着所有可用信息会立即反映在资产的价格中。

  • 没有股息:该模型假设标的资产在期权生命周期内不支付股息。

  • 没有交易成本:该模型假设购买或出售标的资产或期权时没有交易成本。

  • 没有套利机会:该模型假设不存在套利机会,即无法通过同时买入和卖出标的资产与期权来实现无风险盈利。

  • 对数正态分布:该模型假设标的资产的价格遵循对数正态分布,即价格变化与当前价格及随机变量成比例。

  • 恒定波动率:该模型假设标的资产的波动率在期权的生命周期内是恒定的。

这些假设可能是错误的,但它们提供了一个有用的框架,帮助理解影响期权价格的因素。

限制

BSM 模型是最广泛使用的期权定价模型之一。然而,尽管它很受欢迎,该模型有几个局限性,使其在某些期权和市场条件下不太适用。BSM 模型的一些局限性包括:

  • 假设连续交易:BSM 模型假设标的资产的交易是连续的,这意味着股价可以通过无数小幅变化来调整。实际上,交易并非连续,股价可能因新闻事件、市场冲击和其他因素而突然发生大幅变化。

  • 不考虑市场摩擦:BSM 模型假设没有交易成本、税费或其他市场摩擦影响基础资产的价格。实际上,这些摩擦可能会显著影响期权的价值。

  • 假设波动率恒定:BSM 模型假设波动率在期权的生命周期内是恒定的。实际上,波动率可能会有很大的变化,并在短期内发生显著变化。

  • 对特定期权的适用性有限:BSM 模型最适合用于定价欧式期权,这种期权只能在到期时行使。该模型对定价美式期权(可以在到期前行使)及其他复杂期权的适用性较差。

  • 对特定市场条件的适用性有限:BSM 模型假设资产和市场上的行为分布是特定的。这限制了它在正常情况下的应用,不能涵盖所有类型的分布,从现实中观察到的偏态分布到正态分布。

  • 采用风险中性方法:BSM 模型使用风险中性方法来定价期权,假设投资者对风险无偏好,期权的预期收益等于无风险利率。这个假设可能并不适用,特别是在高风险或流动性差的期权中。

尽管存在这些局限性,BSM 模型仍然是期权定价的重要工具,自 1973 年推出以来,已经被交易员、投资者和学者广泛使用。然而,必须认识到该模型的局限性,并在特定的市场条件和期权类型下恰当地使用它。这些局限性可以通过计算模型来克服。

计算模型

BSM 模型是一种流行的数学公式,用于计算欧式期权的价格。然而,传统的 BSM 模型存在一些局限性,例如假设波动率恒定和风险中性定价,这可能导致定价预测不准确。近年来,机器学习算法已被应用于改进 BSM 模型,并提高其预测能力。在这一小节中,我们将探讨使用机器学习算法实现 BSM 模型的过程、其优势以及局限性。

BSM 模型假设以下条件:

  • 基础资产的价格表现为一种随机行为,由一个称为几何布朗运动的随机过程来描述

  • 基础资产的回报率波动率在期权生命周期内是恒定的

  • 无风险利率是已知且恒定的

  • 期权只能在到期日行使

要使用机器学习算法实现 BSM 模型,您可以使用历史数据来训练模型并学习过去的市场行为。然后,模型可以使用这些学习到的信息来预测未来的价格。机器学习算法,如神经网络和决策树,可以帮助克服传统 BSM 模型的局限性,方法如下:

  • 考虑资产收益的非恒定波动性

  • 实时融入新市场数据以更新定价预测

  • 考虑资产收益的非正态分布,并将偏度和峰度纳入定价计算

使用机器学习算法增强 BSM 模型有几个好处,如下所示:

  • 提高期权定价预测的准确性

  • 在建模复杂金融工具时的灵活性增加

  • 更快的定价计算,使得交易决策更加及时

然而,使用机器学习算法与 BSM 模型结合也存在一些局限性,如下所示:

  • 增加了复杂性,并且需要专业的技术专长

  • 使用历史数据可能导致模型过拟合,从而导致定价预测不准确

  • 需要大量高质量的数据来有效训练模型

尽管存在这些局限性,使用机器学习算法实现 BSM 模型仍然是一个有前景的金融工具定价方法。实时融入新市场数据并考虑非恒定波动性可以提高准确性,帮助交易者做出更明智的决策。通过使用机器学习算法实现 BSM 模型,显著推动了金融建模的发展。通过融入新数据并考虑非恒定波动性,这一方法可以提高定价预测的准确性,并允许做出更为知情的交易决策。然而,必须认识到这种方法的局限性,并与其他金融模型和分析技术一起使用。

机器学习

在衍生品定价中,机器学习使用复杂的算法从大量的历史交易数据中预测未来衍生品价格。通过建模市场动态并识别模式,它提供比传统模型更准确的价格预测。这不仅减少了金融风险,还优化了交易策略。此外,它还为市场行为提供了见解,帮助开发更具韧性的金融系统。

几何布朗运动

我们必须在估算衍生品价格之前对基础股票进行建模,基于其价值。几何布朗运动GBM),也叫做维纳过程,是常用来建模布朗运动随机过程的方法,用于驱动资产未来的价值。它有助于生成资产价格在未来可能采取的轨迹。

如果一个随机过程(在这里定义为时间依赖函数 S(t))可以表示为以下 SDE,则称其为遵循 GBM:

d St = μ St dt + σ St d Wt

其中:

  • St – 时间 t 时的股票价格

  • dSt – 从时间 t 开始的股价变化

  • μ – 漂移项

  • σ – 波动率项

  • dt – 时间变化

  • dWt – 布朗运动

Wt 表示属于维纳过程或布朗运动,μ 是百分比漂移,σ 是百分比波动率。根据伊藤引理(参考文献),可以推导出以下解析解:

S(t) = S 0 exp((r − 1 / 2 σ²)t + σ √t z)

其中 S 0 是初始股指水平,t 是到期时间,股票将在该时间受到影响,r 是表示无风险短期利率的常数,σ 是常数波动率(通常计算为股票的标准差),z 是正态分布的随机变量。因此,可以很容易地估算某一股票在时间 t 的 S(t)。

GBM 的一个关键特性是资产的投影分布遵循对数正态分布。鉴于我们之前所见,我们期望值较低时会有一定的偏态,这一点非常方便。

通过为 z i i ∈ 1, … , I 设置 I 个随机数,并计算每个样本的相关 S i(t),我们可以生成上述未来价格分布。让我们创建一个假设案例来证明这一点:


import numpy as np
from scipy.stats import norm
t = 1.0 # year
K = 105 # Strike price
r = 0.05 # Riskless short rate
sigma = 0.25 # Volatility (stdev)
S0 = 100 # Present price

设置这些参数后,我们可以简单地为未来股票价格在预测时间 t 编写代码:


I = 1000 # Samples
z = np.random.standard_normal(I) # z_i values
ST = S0 * np.exp((r - 0.5 * sigma ** 2) * t + sigma * np.sqrt(t) * z)

将这些数字的轨迹绘制出来是很有趣的,这样我们就知道它们来自哪里。我们将在一年后的未来放置轨迹:


months = 12 # months in a year
dt = t/months
S = np.zeros((months+1, I))
S[0] = S0
for ti in range(1, months+1):
    Z = np.random.normal(size=I)
    S[ti] = S[ti-1]*np.exp((r-0.5*sigma**2)*dt+sigma*np.sqrt(dt)*Z)

这个迭代过程将基于每个前一时间步(t-1)的值,创建足够的未来情景样本,投影到目标时间 T。最终代码是之前描述的随机过程公式的编码表示:


import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.style.use('seaborn-v0_8')
plt.figure(figsize=(10, 6))
for si in S.T:
    plt.plot(range(len(si)), si)
plt.xlabel("Months", fontsize=14)
plt.ylabel("Option price", fontsize=14)
plt.grid()
plt.title(f"{I} trajectories", fontsize=16)
plt.show()

这应该会生成类似于以下的图表:

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_001.jpg

图 4.1 – 为给定资产价格和 12 个月投影生成的 GBM 轨迹(由之前的代码生成的图像)

它可能看起来很混乱,但实际上是我们之前描述的基础随机过程的表现。我们可以看到所有轨迹都从同一点(今天的价格)开始,并根据先前描述的方程式沿不同方向发展,随着时间的推移,范围逐渐扩大。如果我们在时间 T(在我们的案例中是 1 年)绘制分布图,我们可以看到潜在的演变符合之前解释的标准,通过展示价格分布,我们能够对某些特定轨迹的可能性做出假设,其中一些轨迹比其他的更有可能。


plt.figure(figsize=(10, 6))
plt.hist(S[-1], 100, density=True, facecolor='b', alpha=0.75)
plt.xlabel("Option price at time t", fontsize=14)
plt.ylabel("Probabilities", fontsize=14)
plt.grid()
plt.title(f"Price distribution at time t", fontsize=16)
plt.show()

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_002.jpg

图 4.2 – 价格分布

这个分布将驱动与股票期权的看涨和看跌价格相关的所有计算。同时,它偏向于较低价值的投注,而不是较高的估值,后者虽然合理但不太可能发生。

量子计算

正如我们在前一节中看到的,为了估算股权的未来价格,需要对潜在的未来价格进行多次迭代计算。然而,如果我们能找到一种方法,将这些潜在的分布加载到量子态中,并使用量子设备进行评估,会怎样呢?以下小节将深入探讨如何使用现有的直接加载解决方案(如 Qiskit 功能和使用 PennyLane 的对抗训练)将这些未来价格分布加载到量子态中。由于 PennyLane 采用可微编程方法(类似于经典机器学习领域中的 TensorFlow 或 PyTorch),它可能更适合机器学习任务。

Qiskit 中的实现

第二章中所讨论的,Qiskit 是最成熟的量子计算框架之一,拥有更高级的模块,可以轻松将特定应用转化为量子领域。这也适用于 Qiskit Finance,我们将在将之前的练习转化为量子方法时深入探讨。

正如我们已经知道的,经典数据必须转换为量子态,才能在量子设备上进行操作。在价格估值的情况下,这意味着将我们的目标分布表示为量子态。因此,我们应该构建一个如下所示的量子态:

| ψ⟩ n = ∑ 0 2 n−1 √ _ p i  |i⟩ n,

其中,p**ᵢ是与截断分布相关的概率,而 i 是我们离散箱之间的映射,代表目标分布的每个值范围。

量子硬件可能面临一些挑战,这是最早影响到我们的一个方面。我们需要将分布截断成离散的箱子,因为根据我们想要达到的数值精度,可能的价格会落入无限多个箱子。因此,|i⟩将与足够精确的值范围相关联,以便编码与该范围相关的概率。对于 i 个量子比特的截断,安排如下:

{0, … , 2 n − 1} ∈ i ⟶  high − low _ 2 n − 1  × i + low

通过设定我们算法的量子比特数量,我们也限制了响应分辨率:


n     qubits = 5

然后,我们需要将目标分布嵌入之前解释的量子态中:


# Price scaling
scale = 100
S = 0.067077 * scale # initial spot price (scaled)
import numpy as np
# parameters for considered random distribution
vol = 0.6  # volatility of 60%
r = 0.02  # annual interest rate of 2%
T = 40 / 365  # 40 days to maturity
# resulting parameters for log-normal distribution
mu = (r - 0.5 * vol**2) * T + np.log(S)
sigma = vol * np.sqrt(T)
mean = np.exp(mu + sigma**2 / 2)
variance = (np.exp(sigma**2) - 1) * np.exp(2 * mu + sigma**2)
stddev = np.sqrt(variance)
# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.
low = np.maximum(0, mean - 3 * stddev)
high = scale

现在截断的目标分布已经准备好,我们必须生成一个编码量子态的电路。这是一个可以管理的任务,虽然需要一些时间来学习如何正确完成它。幸运的是,Qiskit Finance 可以为我们提供帮助,它已经提供了这个功能:


from qiskit_finance.circuit.library import LogNormalDistribution
dist_circ = LogNormalDistribution(num_qubits, mu=mu, sigma=stddev**2, bounds=(low, high))

我们刚刚创建的这个电路编码了我们资产的分布。如果我们愿意,可以打印出来,但在我们工作层面上,它看起来将像一个大盒子:


dist_circ.draw('mpl', fold=120)

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_003.jpg

图 4.3 – 上述代码生成的逻辑电路,将目标分布封装到量子状态中

然而,如果我们查看它所编码的分布,我们可以检查它是否符合我们的预期:


import matplotlib.pyplot as plt
# plot probability distribution
x = dist_circ.values / scale
y = dist_circ.probabilities
plt.bar(x, y, width=0.2)
plt.xticks(x, rotation=90)
plt.xlabel("Option price at time $t$", size=15)
plt.ylabel("Probability ($\%$)", size=15)
plt.show()

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_004.jpg

图 4.4 – 由图 4.3 中的前一个电路生成的离散化分布

这个目标分布展示了我们在将问题编码到量子状态时可能遇到的一个额外限制。由于它们编码了我们概率分布的区间表示,因此我们可能决定的截断方式可能会切断每个区间两端的某些值。因此,必须进行重要的初步评估,以正确描述我们希望拟合到量子状态中的分布。

现在,目标分布已加载,接下来只需在量子领域中评估看涨和看跌期权。为此,我们可能需要编码一个线性分段函数,根据概率(作为我们*|i>*的状态幅度编码)来进行价格计算。它能够为每个区间估算这些价格,同时利用量子态提供的并行性:

F|x⟩|0⟩ = √(1 − f(x)) |x⟩|0⟩ + √(f(x)) |x⟩|1⟩

对于函数 f:{0,…,2^n-1} →[0,1],它映射期权函数,x 为 n 量子比特状态,映射期权价格区间。这个编码的函数将标记分布中的价格区间,正的概率幅度与其可能性相关联:


from qiskit.circuit.library import LinearAmplitudeFunction
# set the strike price (low << strike << high)
strike = S*1.05
# and function parameters
slopes = [0, 1]
offsets = [0, 0]

这将是我们的调用目标函数:


call_option = LinearAmplitudeFunction(
    nqubits,
    slopes,
    offsets,
    domain=(low, high),
    image=(0, high - strike),
    breakpoints=[low, strike],
    rescaling_factor=0.05)

我们可以通过将这个幅度估计模块添加到我们之前的电路中,来构建一个欧式看涨期权电路。这主要由 Qiskit 提供,得益于其高级模块:


from qiskit import QuantumCircuit
total_qubits = call_option     .num_qubits
european_call = QuantumCircuit(total_qubits)
european_call.append(dist_circ, range(num_qubits))
european_call.append(call_option     , range(total_qubits))
# draw the circuit
european_call.draw('mpl')

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_005.jpg

图 4.5 – 概率分布生成模块§,后接线性幅度函数模块(f)

首先,模块§将把我们加载到量子状态中的价格分布作为第二个模块(F),如前面的图示所示,评估它们的潜在结果。由于在前面的图中 F 模块后已经对幅度进行了编码,最后一步是从量子状态中提取出经典值,即我们股票价格落入未来定价不同区间的概率。量子幅度估计QAE)存在不同的方法;这种技术可以让你提取给定量子状态下的幅度。严格来说,我们可以将其表述为估计状态ψ的幅度a的能力,定义如下:

a = |⟨ψ | ψ⟩|²

它通常被用作经典蒙特卡罗模拟的量子对应方法。在这里,我们将使用一种经过验证的迭代 QAE 变体,与其他方法相比,该变体具有更好的错误率:


from qiskit import Aer
from qiskit.utils import QuantumInstance
from qiskit.algorithms import IterativeAmplitudeEstimation, EstimationProblem
# set target precision and confidence level
epsilon = 0.01
alpha = 0.05
qi = QuantumInstance(Aer.get_backend("aer_simulator"), shots=100)
problem = EstimationProblem(
    state_preparation=european_call,
    objective_qubits=[num_qubits],
    post_processing=call_option     .post_processing,
)
# construct amplitude estimation
ae = IterativeAmplitudeEstimation(epsilon, alpha=alpha, quantum_instance=qi)
result = ae.estimate(problem)
conf_int = np.array(result.confidence_interval_processed)
print("Estimated value:    \t%.4f" % (result.estimation_processed / scale))
print("Confidence interval:\t[%.4f, %.4f]" % tuple(conf_int/scale))
We would obtain the following prompt then:
Estimated value:     0.0714
Confidence interval: [-0.0267, 0.1695]

鉴于整个过程相当系统化,Qiskit 已经将所有这些步骤整合到一段代码中,因此我们无需担心每个具体步骤:


from qiskit_finance.applications.estimation import EuropeanCallPricing
european_call_pricing = EuropeanCallPricing(
    num_state_qubits=num_qubits,
    strike_price=strike     ,
    rescaling_factor=0.05,
    bounds=(low, high),
    uncertainty_model=dist_circ)

使用 qGAN 进行价格分布加载

到目前为止,我们已经基于先前讨论的统计模型对给定股票的不确定性模型进行了编码,但我们能否利用数据中的经验知识,而不是使用统计知识呢?我们已从 Binance 获取信息,以了解市场行为。我们希望我们的模型能够利用每个选项并非在孤立的环境中运行这一事实,而是依赖于其余股票的演变。

当数据可用时,机器学习技术可以大展拳脚,特别是生成模型。经过训练的模型可以从分布中创建样本。

在我们的特定情况下,我们希望获得一个生成器模型 G,使得:

G θ| ψ⟩ n = ∑ 0 2 n−1 √ _ p i |i⟩ n,

其中,p i 的平方根表示 |i⟩ 量子箱的测量概率幅度。在这种情况下,我们将根据通过学习过程从市场数据中提取的数据样本,创建相同的量子状态,这个量子状态编码了未来价格的离散化可能值,G 会根据该过程进行迭代,从而映射出前述方程。

生成对抗网络 (GANs) 在真实图像和视频生成方面取得了成功,正如你可能通过媒体中深伪技术的成功而了解到的。然而,GANs 还可以在许多其他领域中得到应用,从表格数据到时间序列数据,这在金融领域是相当常见的。它们的量子版本由 Zoufal 等人在 2019 年提出。该方法基于对立的两个模型,一个是量子生成器,一个是经典判别器(经典神经网络),这两个模型通过相对立的目标进行训练,以最终达到纳什均衡。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_006.jpg

图 4.6 – qGAN 中使用的两个模型的图示,量子生成器 G 和经典判别器 D,如 Zoufal 等人所示。

从从 Binance 加载的数据集中,我们可以选择要使用的股票,并从中选择一个子集:


import pandas as pd
dataset = pd.read_csv("../../data/binance_data.csv")
# Lets pivot so that the date is the index and each assets presents its closing price
pivoted = dataset.pivot(index="Closing time", columns="Asset", values="Close")
assets = ["BNBBTC","ETHBTC","LTCBTC"]

正如我们已经知道的,必须将数据的离散化和截断版本传递给量子设备,以将我们的数据适配到量子领域:


     import numpy as np
# We convert the Dataframe into a numpy array
training_data = pivoted[assets].to_numpy()
# Define minimal and maximal values for the training data
bounds_min = np.percentile(training_data, 5, axis=0)
bounds_max = np.percentile(training_data, 95, axis=0)
bounds = []
for i, _ in enumerate(bounds_min):
    bounds.append([bounds_min[i], bounds_max[i]])

我们需要将样本映射到离散值。这意味着根据我们选择的量子比特分辨率,每个样本将需要像之前一样放入一个离散的区间。选择一个 3 量子比特表示意味着我们的数据应该适应 2³ = 8 个区间。这一点需要考虑,因为它会影响模型的分辨率:


from qiskit_machine_learning.datasets.dataset_helper import discretize_and_truncate
data_dim = [3, 3, 3]
# Pre-processing, i.e., discretization of the data (gridding)
(training_data, grid_data, grid_elements, prob_data) = discretize_and_truncate(
    training_data,
    np.asarray(bounds),
    data_dim,
    return_data_grid_elements=True,
    return_prob=True,
    prob_non_zero=True,
)

我们可以绘制三个资产的离散分布,以了解哪些分布我们能够有效地编码到我们的量子资源中:


import matplotlib.pyplot as plt
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(18, 6))
ax1.hist(training_data[:, 0], bins=20)
ax1.set_title(f"BNBBTC")
ax1.set_xlabel("Values")
ax1.set_ylabel("Counts")
ax2.hist(training_data[:, 1], bins=20)
ax2.set_title("ETHBTC")
ax2.set_xlabel("Values")
ax2.set_ylabel("Counts")
ax3.hist(training_data[:, 2], bins=20)
ax3.set_title("LTCBTC")
ax3.set_xlabel("Values")
ax3.set_ylabel("Counts")

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_007.jpg

图 4.7 – 三只目标股票的离散化分布

Zoufal 等人提出的原始论文中,使用了一个特定的参数化量子电路作为生成器电路,该电路使用每个量子比特参数化的Y旋转序列和一个环状纠缠所有量子比特的 CZ 门周期(称为纠缠块)。我们将尝试在 PennyLane 中模仿类似的方法:


import pennylane as qml
def generator(weights, wires, repetitions):
    # Initial superposition for all possible states
    for i in range(wires):
        qml.Hadamard(wires=i)
    k = 0 # carrying index
    for i in range(wires):
        qml.RY(weights[k], wires=i)
        k += 1
    # Repetition blocks
    for _ in range(repetitions):
        # Entangling block
        for i in range(wires-1):
            qml.CZ(wires=[i, i+1])
        # Last CZ turning to zero
        qml.CZ(wires=[wires-1, 0])
        # RY rotations
        for i in range(wires):
            qml.RY(weights[k], wires=i)
            k += 1
    return qml.probs(wires=range(qubits))

这样我们可以轻松地使用这个设置来进行不同的重复实验和数据维度的探索:


import torch
qubits = np.sum(data_dim)
dev = qml.device("default.qubit", wires=qubits)
# Also some parameters
layers = 1
params = [np.random.uniform(np.pi) for i in range(qubits + layers*qubits)]
gen_circuit = qml.QNode(generator, dev, interface='torch', diff_method='best')
drawer = qml.draw_mpl(gen_circuit)
print(drawer(params, qubits, layers))

输出电路应该像图 4.8中那样。尽管在 Ansatz 中没有显示详细视图,但该电路是由提供给生成器函数的权重或参数进行参数化的。为了知道哪些参数会输出我们期望的分布,我们需要通过遵循 第二章中描述的 Ansatz 训练技术来找到它们。GAN 提供了一种不同的方法来调整这些参数,与判别器作为生成器训练的成本函数相对立。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_008.jpg

图 4.8 – 由 Hadamard 门、参数化的 Y 旋转和最近邻耦合的 CZ 门周期组成的生成器 Ansatz

GAN 需要一个与判别器相对立的部分,判别器尝试评估样本是否来自真实数据集,还是来自生成器伪造的数据,如图 4.8所示。对于这个判别器,将定义一个简单的神经网络,其二进制输出应该确定样本的来源:


import torch.nn as nn
class Discriminator(nn.Module):
    def __init__(self, input_size):
        super(Discriminator, self).__init__()
        self.linear_input = nn.Linear(input_size, 20)
        self.leaky_relu = nn.LeakyReLU(0.2)
        self.linear20 = nn.Linear(20, 1)
        self.sigmoid = nn.Sigmoid()
    def forward(self, input: torch.Tensor) -> torch.Tensor:
        x = self.linear_input(input)
        x = self.leaky_relu(x)
        x = self.linear20(x)
        x = self.sigmoid(x)
        return x

经典判别器的选择及其层架构可以根据需要变得非常复杂,社区已经付出了巨大努力,旨在为特定任务识别表现最佳的量子和经典模型设计。

关键在于对抗与训练两个模型(量子模型和经典模型)相关的损失函数。损失是对抗的,因此你可以看到与生成器(G)相关的参数变化如何也被考虑在判别器的损失函数中。

L G(ϕ, θ) = − 1/m ∑ i=1 m log D ψ( g i)

L D(ϕ, θ) = − 1/m ∑ i=1 m log D ψ(x i) + log(1 − D ψ( g i))

在这两种情况下,Adam 优化方法(Kingma 等,2014)将用于训练模型。这是因为两个框架,量子模型的 PennyLane 和经典模型的 PyTorch,都提供了这种方法:


# Generator loss function
gen_loss_fun = nn.BCELoss()
# Discriminator loss function
disc_loss_fun = nn.BCELoss()
# Initialize generator and discriminator
discriminator = Discriminator(len(data_dim))
lr = 0.01  # learning rate
b1 = 0.9  # first momentum parameter
b2 = 0.999  # second momentum parameter
num_epochs = 50  # number of training epochs
     from torch.optim import Adam
# optimizer for the generator
optimizer_gen = qml.AdamOptimizer(stepsize=lr, beta1=b1, beta2=b2)
# optimizer for the discriminator
optimizer_disc = Adam(discriminator.parameters(), lr=lr, betas=(b1, b2))
from torch.utils.data import DataLoader
# Define the training batch size
batch_size = 300
dataloader = DataLoader(training_data, batch_size=batch_size, shuffle=True, drop_last=True)
# Generator loss list
generator_loss_values = []
# Discriminator loss list
discriminator_loss_values = []

一旦所有部分都设置完毕,接下来就只是迭代的问题,寻找 G 和 D 模型之间的纳什均衡:


for epoch in range(num_epochs):
    generator_loss_epoch = []
    discriminator_loss_epoch = []
    theta = torch.tensor(params, dtype=torch.float32)
    for i, data in enumerate(dataloader):
        # Adversarial ground truths
        valid = torch.ones(data.size(0), 1)
        fake = torch.zeros(data.size(0), 1)
        # Generate a batch of data points
        fake_samples = []
        for _ in range(len(data)):
            probabilities = gen_circuit(theta, qubits, layers)
            gen_data = grid_elements[torch.argmax(probabilities)]
            fake_samples.append(gen_data)
        # Train Discriminator
        optimizer_disc.zero_grad()
        # Loss measures discriminator's ability to distinguish real from generated samples
        inputs = data.to(torch.float32)
        real_out = discriminator(inputs)
        real_loss = disc_loss_fun(real_out, valid)
        fake_input = torch.tensor(fake_samples, dtype=torch.float32)
        fake_out = discriminator(fake_input)
        fake_loss = disc_loss_fun(fake_out, fake)
        discriminator_loss = (real_loss + fake_loss) / 2
        discriminator_loss.backward(retain_graph=True)
        optimizer_disc.step()
        # Loss measures generator's ability to prepare good data samples
        fake_input = torch.tensor(fake_samples, dtype=torch.float32)
        fake_out = discriminator(fake_input)
        generator_loss = gen_loss_fun(fake_out, valid)
        returns, prev_cost = optimizer_gen.step_and_cost(gen_circuit, params, qubits, layers)
        params = returns[0]
        generator_loss_epoch.append(generator_loss.item())
        discriminator_loss_epoch.append(discriminator_loss.item())
    generator_loss_values.append(np.mean(generator_loss_epoch))
    discriminator_loss_values.append(np.mean(discriminator_loss_epoch))

通过绘制两个损失函数的演变(分别附加到generator_loss_valuesdiscriminator_loss_values数组中),我们可以看到两个模型如何相互适应,以便生成器最终成为我们能实现的最佳合成数据生成器版本。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_04_009.jpg

图 4.9 – 在训练两个模型的过程中,损失演变,最终在迭代结束时达到均衡点

通过此方法,我们获得了一个 P 块,如在使用 Qiskit 手动加载分布时所示,但它已经经过训练以模拟价格分布,正如我们用于训练生成器的历史数据集所展示的那样。因此,通过将这个训练过的生成器作为概率并附加线性幅度函数和 QAE 块,我们可以创建一个完全数据驱动的量子股票定价方法。执行这一任务将需要大量的代码块和不同的框架,因此实现的技术复杂性可能非常高,但我们强烈推荐逐步了解这三个块,以理解如何实现不同框架之间的接口(PennyLane 用于可训练的参数化量子电路,Qiskit Finance 用于避免重新实现已提供的功能)。

总结

在本章中,我们探讨了一个复杂的用例,用于预测未来,预测市场将如何发展,股票价格将如何变化,等等,这无疑是一个非平凡的任务。我们展示了如何将传统统计学中广泛使用的技术应用于量子领域。这带来了一些好处,但也由于其当前的状态和设备本身的局限性,提出了我们需要绕过的其他障碍。

在基于门的量子设备上编码概率分布会导致一些分辨率损失。概率分布可能需要被截断,且数值范围将被渲染为与未来期权价格可能落入的相同离散区间。这一限制在未来当更大的设备问世时可能会发生变化,从而允许更大的分布被编码。然而,这确实是我们在采用这些技术时需要牢记的一个限制。

当然,也有其好处,因为量子设备能够原生并行化许多计算,而这些计算通常是顺序执行的,或者需要大型经典设备来快速完成。得益于 QML 设置,尤其是 qGANs,我们甚至可以构建一台机器来执行这种基于资产过去演变的分布编码,虽然它可能不完全准确,但至少是基于证据的。到目前为止,在本节中我们使用了模拟器,以简化使用真实设备的复杂性,正如我们将在后续章节中解释的那样。处理设备特性也可能相当具有挑战性,并且会为我们在这里展示的复杂过程增添更多复杂性。尽管我们将讨论一些更适合当前量子设备状态的用例,但鉴于其作为一个快速发展的领域,以及在金融行业的相关性,我们必须关注文献中向更好的价格预测的进展。确实有一些非常重要的研究计划,可能会在不久的将来为我们带来突破。

进一步阅读

本章中我们讨论的一个重要部分与量子计算中的一些基础算法有关。Grover 算法(Jozsa 1999)和 QAE(Rao 等,2020)不仅是金融用例的关键算法,也是与量子算法相关的众多应用的重要竞争者。

QML 的相关性日益增加,因为它允许利用现有数据来创建量子算法通常所需的嵌入或动态。第六章将更详细地探讨这些技术。然而,对于那些已经了解经典生成模型(如 GANs、变分自编码器和神经网络等)的人来说,有大量文献可以帮助其适应量子领域(Lloyd 和 Weedbrook, 2018)。有关 QNNs 如何在金融应用中发挥作用的新方法(Tapia 等,2022),或如何处理价格预测的不同视角,文献中不断有新的研究成果出现(Singh 2021)。

从更实际的角度来看,尽管理解这些算法的基本设计和实现至关重要,但越来越高层次的抽象工具,如 Qiskit Finance 或机器学习,将提升你尝试和测试一些前沿发现的能力,从而加速从研究到企业创新的过渡(Moguel 等,2020)。

参考文献

  • Glasserman, P. (2004). 金融工程中的蒙特卡洛方法(第 53 卷,第 xiv±596 页)。纽约:Springer。

  • Jozsa, R. (1999). 在 Grover 算法中的搜索。arXiv 预印本 quant-ph/9901021。

  • Kingma, D. P., & Ba, J. (2014). Adam: 一种随机优化方法。arXiv 预印本 arXiv:1412.6980。

  • Lloyd, S., & Weedbrook, C. (2018). 量子生成对抗学习。物理评论快报, 121(4), 040502。

  • MacBeth, J. D., & Merville, L. J. (1979). 对 Black-Scholes 看涨期权定价模型的实证检验。金融学杂志, 34(5), 1173-1186.

  • *Moguel, E., Berrocal, J., García-Alonso, J., & Murillo, J. M. (2020 年 10 月). 量子软件工程的路线图:应用经典经验教训。在 Q-SET@ QCE (*第 5-13 页).

  • Singh, P. (2021). FQTSFM:一种模糊量子时间序列预测模型。信息科学, 566, 57-79.

  • Stojkoski, V., Sandev, T., Basnarkov, L., Kocarev, L., & Metzler, R. (2020). 广义几何布朗运动:理论及其在期权定价中的应用。熵, 22(12), 1432.

  • Tapia, E. P., Scarpa, G., & Pozas-Kerstjens, A. (2022). 使用单量子比特量子神经网络进行欺诈检测。arXiv 预印本 arXiv:2211.13191.

  • Rao, P., Yu, K., Lim, H., Jin, D., & Choi, D. (2020 年 8 月). IBM 量子设备上的量子幅度估计算法。在量子通信与量子成像第十八卷 (第 11507 卷,第 49-60 页). SPIE.

  • Ross, S. M., Kelly, J. J., Sullivan, R. J., Perry, W. J., Mercer, D., Davis, R. M., … & Bristow, V. L. (1996). 随机过程 (第 2 卷)。纽约:Wiley.

  • Zoufal, C., Lucchi, A., & Woerner, S. (2019). 用于学习和加载随机分布的量子生成对抗网络。npj 量子信息, 5(1), 103.

第五章:投资组合管理

根据全球行业分类标准GICS),全球资产管理行业在 2020 年底的管理资产总额AUM)约为 91.7 万亿美元,由 84,000 家公司管理。这些资产包括投资公司、养老金基金、保险公司以及其他国际金融机构管理的 AUM。资产管理者通常使用投资组合管理技术来管理这些资产。Investopedia 对投资组合管理的定义如下:

投资组合管理是选择和监督投资组合的艺术与科学,目的是为投资者的利益实现特定的投资目标。

本章将探讨利用机器学习技术和量子算法进行投资组合管理的艺术。内容分为五个部分:

  • 财务投资组合管理

  • 财务投资组合多样化

  • 财务投资组合模拟

  • 使用传统机器学习算法的投资组合管理

  • 量子算法投资组合管理实施

让我们从定义财务投资组合开始,理解投资组合管理的必要性。

财务投资组合管理

财务投资组合是指个人或实体为了获得投资回报而投资于的一系列资产,包括股票、债券和其他证券。创建一个多样化的财务投资组合对于投资者来说至关重要,旨在最大程度地减少风险并实现回报最大化。财务投资组合需要进行细致分析、市场研究和风险评估。

创建财务投资组合的一个关键方面是多样化。多样化是指投资于不同类型的证券,以分散风险。这一策略旨在减少任何负面事件对投资组合整体表现的影响。例如,如果一个投资组合完全投资于某一只股票或行业,那么如果该公司或行业面临挑战,可能会遭受显著损失。然而,包含股票、债券和其他证券的多样化投资组合可以帮助缓解此类风险。另一个在构建财务投资组合时需要考虑的重要因素是风险承受能力。风险承受能力是指个人应对市场波动和风险的能力。在投资证券之前,评估你的风险承受能力至关重要。高风险投资可能提供更高的回报,但只适合那些能够承受潜在损失的投资者。

投资者在创建财务投资组合时还应考虑他们的投资目标。投资目标是指投资者希望通过投资实现的目标,例如长期增长、收入生成或资本保值。投资者的投资目标将影响他们选择哪些证券纳入投资组合。资产配置是构建财务投资组合的另一个关键方面。资产配置指的是将投资组合中的资金分配到不同的资产类别中,如股票、债券和现金。这个过程旨在平衡不同投资的风险和回报。例如,股票可能提供较高的回报,但伴随较高的风险,而债券可能提供较低的回报,但风险较低。

此外,投资者需要定期审查并重新平衡他们的投资组合。投资利润目标和可容忍的风险迫使我们定期检查投资配置,以确保其一致性。一个没有定期审查的投资组合可能随着时间推移变得失衡,导致更高的风险或较低的回报。构建财务投资组合对于希望通过投资获得回报的投资者至关重要。多样化、风险承受能力、投资目标、资产配置和投资组合审查是投资者在构建财务投资组合时需要考虑的关键因素。通过关注这些因素,投资者可以创建一个与其投资目标和风险承受能力相匹配的多样化投资组合。

财务投资组合多样化

财务投资组合多样化对于希望最小化风险并最大化回报的投资者至关重要。多样化投资涉及将资金投入各种资产,包括股票、债券和其他证券,以分散不同市场、行业和资产类别的风险。财务投资组合多样化的主要好处之一是风险降低。通过投资于各种资产,投资者可以避免将所有资金集中在一个篮子里的风险。如果某个资产类别或行业表现不佳,其他资产类别可能表现良好,从而帮助抵消损失。例如,如果一个投资组合中大量投资于股票,并且股市发生崩盘,投资组合的价值可能会显著下降。然而,如果该投资组合还包括债券、商品和房地产,股票价值的下跌可能会被其他资产类别的收益所抵消。

财务投资组合多样化的另一个好处是潜在回报。投资于一系列资产可以从不同市场和行业中获得潜在回报。例如,股票可能提供更高的回报,但伴随更高的风险。另一方面,债券可能提供较低的回报,但风险也较低。通过多样化投资组合,投资者可以捕捉到不同资产类别的潜在回报,同时降低风险。

在进行财务投资组合多元化时,投资者应考虑多个因素,包括他们的投资目标、风险容忍度和时间范围。投资目标指的是投资者希望通过投资实现的目标,例如长期增长、收入生成或资本保值。风险容忍度指的是投资者能够承受的风险水平。时间范围指的是投资者计划持有其投资的时间。投资者通过考虑这些因素,可以创建一个与其目标、风险容忍度和时间范围相匹配的多元化投资组合。

通过将投资分配到不同的资产类别,投资者可以降低投资组合的整体风险,同时仍能捕捉到潜在的回报。财务投资组合多元化是那些希望最小化风险并最大化回报的投资者的关键策略。投资组合多元化涉及投资于各种资产,包括股票、债券和其他证券,以将风险分散到不同的市场、行业和资产类别。投资者通过考虑他们的投资目标、风险容忍度、时间范围和资产配置,可以创建一个与其目标相符并减少整体风险的多元化投资组合。下一小节将讨论资产配置及其必要性和重要性。

财务资产配置

财务资产配置是投资组合管理的关键组成部分,它涉及将投资分配到不同的资产类别,以实现所需的风险和回报水平。资产配置是那些希望构建多元化投资组合并最小化风险的投资者的重要策略。财务资产配置的一个关键好处是风险减少。通过将投资分散到不同的资产类别,投资者可以降低与任何特定资产类别或投资相关的风险。例如,如果一个投资者将所有资金都投入一只股票,那么他们将面临该股票的风险。然而,投资于股票、债券和其他资产的组合,可以将风险分散到不同的资产类别,从而减少重大亏损的可能性。

财务资产配置的另一个好处是潜在的更高回报。不同的资产类别具有不同的风险水平和回报潜力。例如,股票相比债券提供更高的回报潜力,但也伴随更高的风险。通过将投资分配到不同的资产类别,投资者可以在最小化风险的同时,受益于多种资产类别的潜在回报。

在进行投资组合资产配置时,投资者必须考虑其投资目标、时间期限和风险承受能力。投资目标因投资者而异,可能包括产生收入、增长资本或保值财富等目标。时间期限是指投资者计划持有投资的时间。通常,较长的时间期限允许更高的风险承受能力,并可能带来更高的回报。风险承受能力是指投资者在追求更高回报时,愿意承担的风险程度。

投资者可以将投资配置到多种不同的资产类别中,包括股票、债券、现金和另类投资。股票代表公司所有权,具有资本增值和分红的潜力。债券则代表债务,提供固定收益支付。现金是一种低风险、低回报的资产,可以为投资组合提供流动性和稳定性。另类投资包括房地产、商品和私募股权。

投资组合的最佳资产配置将取决于投资者的目标、时间期限和风险承受能力。年轻的投资者通常拥有较长的时间期限,可能更愿意承受更高的风险,并将更多的资金配置到股票上。而年长的投资者由于时间期限较短,并且对收入和资本保值的需求较大,可能会将更多的资金配置到债券和现金上。因此,金融资产配置是投资组合管理的一个关键组成部分,它使投资者能够在不同的资产类别之间分散投资、降低风险,同时潜在地提高回报。在确定最佳资产配置时,投资者必须考虑他们的投资目标、时间期限和风险承受能力。通过将投资分配到股票、债券、现金和另类投资的组合中,投资者可以建立一个与其目标一致的、良好分散的投资组合,帮助他们实现财务成功。接下来的小节将讨论金融风险承受能力在金融投资组合优化中的重要性。

金融风险承受能力

财务风险承受能力是指投资者为追求潜在回报而愿意承担的风险。对于任何希望投资自己资金的人来说,这是一个重要的概念。多种因素会影响个人的财务风险承受能力。年龄、收入、净资产和投资目标是其中的重要因素。一般来说,年轻的投资者可能更愿意承担风险,因为他们有更长的时间来弥补亏损。高收入和高净资产的个人可能也有较高的风险承受能力,因为他们拥有更多的资源来吸收潜在的损失。投资目标也是决定风险承受能力的关键因素。拥有长期目标(如退休)的投资者可能更愿意承担风险,追求更高的回报。相比之下,拥有短期目标(如为购房首付储蓄)的投资者则可能更重视资本保值,而非潜在回报。

了解自己的财务风险承受能力很重要,因为它有助于投资者做出明智的投资决策。承担过多风险的投资者可能会经历重大损失,这可能影响他们的财务健康。另一方面,过于规避风险的投资者可能会错失那些能够帮助他们实现财务目标的潜在回报。投资者可以使用多种策略来管理风险,并使其投资与风险承受能力相匹配。分散投资是最重要的策略之一。通过将投资分散到不同的资产类别,投资者可以降低某一特定投资的风险。这些类型的投资提供了股票或债券的多元化投资组合,有助于降低风险。另一种策略是通过资产配置来管理风险。资产配置涉及在不同的资产类别之间分配投资,以实现期望的风险和回报水平。通过将投资分配到股票、债券和其他资产的组合中,投资者可以从多个资产类别的潜在回报中获益,同时最小化风险。

最后,投资者定期审查资产配置以确保其满足需求非常重要。随着投资者的情况变化,他们的风险承受能力也可能发生变化。定期的投资组合审查有助于确保投资者的投资组合与其风险承受能力和投资目标保持一致。财务风险承受能力是投资者必须理解的重要概念。年龄、收入、净资产和投资目标等因素都可能影响个人的风险承受能力。投资者需要了解自己的风险承受能力,以做出明智的投资决策。分散投资、低成本指数基金、资产配置和定期投资组合审查等策略有助于投资者管理风险,并使其投资与风险承受能力和目标保持一致。因此,以下小节将讨论如何优化财务投资组合,以使风险承受能力和投资目标相匹配。

财务投资组合优化

财务投资组合优化通过选择最优的投资组合,最大化投资者的回报,同时最小化风险。这个过程包括确定投资者的投资目标、风险承受能力和约束条件,然后制定一个优化的投资策略来实现这些目标。本小节将讨论财务投资组合优化的关键原则、它对投资者的好处以及优化财务投资组合所使用的工具。

财务投资组合优化的关键原则之一是多元化。通过将投资分散到不同的资产类别,投资者可以降低与任何特定投资相关的风险。这是因为不同的资产类别具有不同的风险收益特征。例如,股票通常被认为比债券风险更大,但它们也提供更高回报的潜力。通过将投资分散到具有不同风险收益特征的资产类别中,投资者可以实现更高效的投资,从而最小化风险并最大化潜在回报。财务投资组合优化的另一个原则是资产配置。资产配置涉及将投资分配到不同的资产类别,以实现所需的风险和回报水平。通过将投资分配到股票、债券和其他资产的组合中,投资者可以在最小化风险的同时,享受多个资产类别的潜在回报。资产配置的目标是实现一个最大化回报并最小化风险的最优投资组合。

财务投资组合优化有多个好处。首先,它帮助投资者在最小化风险的同时实现投资目标。这一点非常重要,因为投资风险可能会对投资者的财务状况产生重大影响。通过优化投资组合,投资者可以在最小化重大损失风险的同时实现他们的投资目标。其次,财务投资组合优化可以帮助投资者实现比通过传统投资方式更高的回报。这是因为优化允许投资者在最小化风险的同时,利用多个资产类别的潜在回报。

有多个工具用于优化财务投资组合。其中最常用的工具之一是现代投资组合理论MPT)。MPT 是一个数学框架,利用统计分析来优化投资组合。该框架假设投资者是风险厌恶型的,旨在最大化给定风险水平下的回报。MPT 考虑了不同资产类别之间的相关性,以及每个资产类别的预期回报和波动性。另一个用于优化财务投资组合的工具是蒙特卡洛模拟。蒙特卡洛模拟涉及统计建模,模拟不同投资策略的潜在结果。这使得投资者能够测试不同的投资情景,找出最适合其投资目标、风险承受能力和约束条件的最佳投资组合。

财务投资组合优化对于希望在最小化风险的同时实现投资目标的投资者至关重要。它涉及识别投资者的投资目标、风险承受能力和约束条件,然后制定一个优化的投资策略,以实现这些目标。财务投资组合优化的关键原则包括多样化和资产配置。财务投资组合优化的好处包括在最小化风险的同时实现投资目标,并有可能获得更高的回报。最后,优化财务投资组合时使用了多种工具,包括现代投资组合理论和蒙特卡洛模拟。以下小节讨论了用于优化财务投资组合的 MPT。

MPT

MPT 是一个框架,帮助投资者建立高效的投资组合,以最大化给定风险水平下的预期回报。该理论由哈里·马科维茨(Harry Markowitz)在 1950 年代提出,MPT 通过引入多样化和有效前沿的概念,彻底改变了金融领域。MPT 的核心思想是,分散投资对于建立一个良好构建的投资组合至关重要。根据 MPT 的理论,投资者不应将所有资金投入一个篮子,因为单一资产或证券的表现容易受到波动的影响,这可能导致重大损失。通过在多个资产之间进行平衡投资,你可以确保没有任何潜在因素会让投资归零。

MPT 中的一个关键概念是有效前沿。风险和利润水平会揭示出多个投资选择配置的可能性。有效前沿在风险与回报的权衡中划出一条线,表示每个潜在投资组合的选项,如在图 5.1中所示的二维图形。通过不同方式平衡和加权资产,热衷的投资者能够发现这一前沿,从而使得构成这一权衡的组合清晰可见,并可以基于这些组合做出决策。

因此,理解有效前沿是理解给定资产集最大能力的关键概念,因为它们的配置将基于现代投资组合理论所建立的框架找到利润极限。

有效前沿

如前所述,有效前沿是一个表征,它让我们理解一组资产在给定预期回报和与这些资产相关的分散化风险容忍度下的最大能力。

如果你在二维图表上绘制所有潜在的配置,其中每个投资组合的预期收益率在y轴上,标准差(风险的度量)在x轴上,你会观察到出现了一个特定的形状,而不是潜在的随机分布图。效率极限出现时,你会发现极端的资产选择,在这个极限下,能够在最大化回报的同时实现风险最小化。

位于有效前沿上的投资组合被称为“有效的”,因为它们提供了最高的收益。位于有效前沿右侧的投资组合被认为是“低效的”,因为有更好的选择,这些选择在预期利润相同的情况下显示出更低的风险。因此,这些是可以改进的选择,而不是有效的选择。

以下是有效前沿在图表上绘制后的一个示例:

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_001.jpg

图 5.1 – 有效前沿

图 5.1所示,有效前沿是一条从左到右上升的曲线,投资组合以红色点标示在上面。根据之前的定义,效率前沿上的有效投资组合将在曲线的边缘上,蓝线所画的地方,表示没有更好的选择。

示例

以下是如何使用现代投资组合理论(MPT)构建投资组合的示例。

假设一位投资者有 100,000 美元用于投资,并考虑两种资产——股票和债券。股票的预期年回报率为 10%,债券的预期年回报率为 5%。投资者还获得了关于这些资产标准差的以下信息:

  • 股票:20%

  • 债券:8%

投资者希望构建一个在可接受的风险水平下提供最大利润的投资组合。根据现代投资组合理论,投资者应通过投资股票和债券来分散投资组合。通过构建有效前沿,可以确定风险和回报的最佳平衡。

为了做到这一点,投资者可以在图表上绘制每种资产的预期收益率和标准差。然后,投资者可以通过组合这两种资产的不同比例并计算每种组合的预期收益率和标准差,从而绘制有效前沿。有效前沿将展示出投资者可以以高概率满足初步设定的要求的资产选择。

例如,如果投资者将 50%的资金投资于股票,50%投资于债券,则该投资组合的预期收益率为 7.5%(即两个资产预期收益的中间值),而标准差为 14%(两个资产标准差的加权平均)。该投资组合将位于高效前沿上。

投资者可以通过选择高效前沿上与其期望的风险水平相对应的点来决定最优的投资组合。例如,如果投资者愿意承受更多的风险,他们可能会选择一个具有更高预期收益和更高标准差的投资组合。另一方面,如果投资者风险厌恶,他们可能会选择一个具有较低预期收益和较低标准差的投资组合。以下部分通过案例研究展示了 MPT 的实施。

案例研究

假设一位名为 Sarah 的投资者正在考虑两种潜在投资——股票和债券。股票的预期收益较高,但风险也较大;而债券的预期收益较低,但风险也较小。Sarah 尝试决定如何在这两种投资之间分配她的资金,以在最大化收益的同时最小化风险。

Sarah 决定使用现代投资组合理论(MPT)来帮助她优化她的投资组合。她首先构建了一个网格,展示了每种可能的两种投资组合的预期收益和标准差(风险的度量)。该网格如下所示:

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_002.jpg

图 5.2 – 高效前沿

基于图 5.2中所示的网格,Sarah 可以看到,预期收益最高的投资组合是 100%投资于股票,但它也具有最高的风险水平。另一方面,风险水平最低的投资组合是 100%投资于债券,但它也具有最低的预期收益。

Sarah 决定使用高效前沿来帮助她识别风险和收益之间的最佳平衡。她将每个投资组合的预期收益和标准差绘制在图表上,并且高效前沿显示给 Sarah,基于高效前沿,最优的投资组合是大约 60%投资于股票,40%投资于债券。

Sarah 决定以这种方式分配她的资金,并定期重新平衡她的投资组合,以确保它符合她的投资标准。通过使用 MPT 和高效前沿,Sarah 能够优化她的投资组合,实现风险和收益之间的最佳平衡。后续小节将讨论财务投资组合模拟在实施投资组合优化中的作用。

财务投资组合模拟

财务投资组合模拟是投资者用来评估其投资组合表现、预测未来走势并做出明智投资决策的工具。它涉及创建投资者投资组合的模型,并测试不同的情景,以确定最佳的投资策略。近年来,投资组合模拟变得越来越流行,因为它为投资者提供了一种具有成本效益的方式来评估其风险承受能力并最大化回报。本小节将探讨财务投资组合模拟的概念、其优势以及如何利用它优化投资决策。

财务投资组合模拟的一个重大优势是它能够帮助投资者清晰地理解自己的风险承受能力。通过模拟不同的情景,投资者可以确定其投资组合对市场波动的敏感性,并相应地调整投资策略。领先投资公司投资主管 David McEwen 曾这样评论风险承受能力:

不了解自己风险承受能力的投资者可能会承担比自己能承受的更多或更少的风险,这可能会对其投资组合产生负面影响。

因此,财务投资组合模拟是一个有价值的工具,能够帮助投资者根据风险承受能力做出明智的投资决策。财务投资组合模拟的另一个好处是它能够预测投资者的投资组合在不同市场条件下的表现。在市场波动时期,这尤其有用,因为投资者可能会急于做出投资决策。通过模拟不同的情景,投资者可以看到其投资组合在不同市场条件下的表现,从而增强他们的投资决策信心。

投资者必须理解自己的投资目标和风险承受能力,才能利用财务投资组合模拟优化投资决策。这包括确定投资目标、实现这些目标的时间范围以及愿意承担的风险水平。一旦这些因素确定,投资者可以使用投资组合模拟来测试不同的投资情景,并确定最佳的投资策略。例如,拥有长期投资期限的投资者可能愿意在其投资组合中承担比短期投资期限的投资者更多的风险。通过模拟不同的情景,投资者可以确定投资组合的最佳资产配置,以实现其投资目标,同时最小化风险。

因此,财务投资组合模拟是投资者优化投资决策的有价值工具。它能让投资者清楚了解自己的风险承受能力,预测投资组合在不同市场条件下的表现,并基于投资目标做出明智的决策。通过模拟不同的投资情境,投资者可以确定投资组合的最佳资产配置,确保在实现投资目标的同时最小化风险。随着金融市场的不断变化,财务投资组合模拟将继续为那些寻求最大化回报并管理风险的投资者提供重要支持。接下来的段落将介绍财务投资组合模拟技术所使用的方法。

财务投资组合模拟技术

财务投资组合模拟是投资者评估和管理其投资组合风险的重要工具。通过使用不同的技术,投资者可以模拟各种情境,确定市场波动的潜在影响,并做出明智的投资决策。本文将讨论财务投资组合模拟中常用的三种技术——蒙特卡洛模拟、压力测试和敏感性分析。

蒙特卡洛模拟是一种统计技术,用于建模和分析复杂系统的行为,比如财务投资组合。它通过多次模拟不同的输入,生成各种潜在的结果。这些输入可能包括利率、通货膨胀率和市场回报等变量。蒙特卡洛模拟输出的是潜在投资回报的概率分布,这可以帮助投资者做出有关风险和回报的明智决策。正如投资专家雷·达里奥曾说过:

如果你能模拟一千次某种情境,你大概能非常清楚地预测事情的发展。

压力测试是另一种用于财务投资组合模拟的技术。它通过模拟极端情境,如经济衰退或市场崩盘,来确定这些情境对投资组合的潜在影响。通过进行压力测试,投资者可以识别出投资组合的潜在弱点,并调整策略以降低风险。投资组合经理约翰·雷肯塔勒对压力测试曾这样说:

压力测试至关重要,因为它能显示出你的投资组合在哪些方面存在脆弱性。就像进行火灾演习,帮助你在紧急情况下做好准备。

敏感性分析是一种用于确定特定变量变化如何影响投资组合表现的技术。它涉及识别关键变量,如利率或通货膨胀率,并分析这些变量变化如何影响投资组合的表现。通过进行敏感性分析,投资者可以识别哪些变量对投资组合的表现影响最大,并相应调整投资策略。理财顾问丽莎·基尔欣鲍尔指出:

敏感性分析有助于投资者理解不同变量如何相互作用,以及一个变量的变化如何影响整个投资组合。

财务投资组合模拟对于投资者管理风险和做出明智投资决策至关重要。通过使用如蒙特卡洛模拟、压力测试和敏感性分析等技术,投资者可以模拟各种情景并识别投资组合中的潜在弱点。因此,投资者可以做出明智的决策,优化投资组合的表现并最大限度地减少风险。以下小节讨论了实施压力测试的概念和方法。

压力测试

压力测试是一种评估金融机构、系统或投资组合对潜在不利事件或冲击的韧性过程。它通过模拟极端情境并衡量对投资组合、系统或机构财务健康的影响来进行。压力测试是风险管理中的一个重要工具,帮助金融机构识别潜在的弱点并为可能的风险做好准备。压力测试的目的是评估突发事件对投资组合、机构或系统的影响。例如,压力测试可能会模拟重大经济衰退、大规模市场抛售或地缘政治危机的影响。这些情景的设计足够严峻,可以测试投资组合、机构或系统的韧性,同时又足够现实,以提供有意义的洞察。

压力测试涉及一系列技术,包括以下内容:

情景分析:这种技术涉及识别潜在情景并模拟其对投资组合、机构或系统的影响。这些情景的设计通常极端,可能包括一系列不利事件,如利率急剧上升或资产价格大幅下跌。

敏感性分析:这种技术涉及改变一个或多个输入参数,以评估对输出的影响。例如,敏感性分析可能涉及将利率提高一个特定的百分比,并评估对投资组合回报的影响。

反向压力测试:这种技术涉及识别能够导致重大损失或对机构、系统或投资组合造成严重影响的压力水平。反向压力测试有助于识别关键脆弱性,并为制定适当的风险缓解策略提供依据。

国际货币基金组织的一份报告中提到了关于压力测试的以下内容:

压力测试已经成为监管机构和监督者评估金融系统及个别机构韧性的重要工具。它在识别潜在脆弱性、量化风险和测试缓解策略的有效性方面发挥了不可或缺的作用。

因此,压力测试是风险管理中的重要工具,能够帮助金融机构识别潜在脆弱性并为潜在风险做准备。使用情景分析、敏感性分析和反向压力测试能够提供对突发事件对投资组合、机构或系统金融健康影响的洞察。随着金融环境的不断变化,压力测试将继续是确保金融系统稳定性的关键工具。下节将讨论在金融投资组合模拟中使用的其他技术。

蒙特卡洛模拟

蒙特卡洛模拟是一种在金融投资组合模拟中常用的技术,用于模拟金融资产的行为并估计投资组合的潜在风险和回报。这种技术通过生成多个市场行为的随机场景,模拟在给定时间范围内投资组合的表现。在本小节中,我们将探讨蒙特卡洛模拟作为金融投资组合模拟工具的各个方面。

蒙特卡洛模拟的一个关键优势是,它能够让投资者为他们的投资组合生成一系列可能的结果,而不仅仅依赖于单一的预测。通过进行多次模拟,投资者可以更好地了解与其投资组合相关的风险,并相应地调整投资策略。这在处理涉及广泛资产的复杂投资组合时尤为重要。

蒙特卡洛模拟技术包括以下步骤:

  1. 定义投资组合:蒙特卡洛模拟的第一步是定义待分析的投资组合。这包括指定各个资产、它们的预期回报以及它们之间的相关性。

  2. 定义概率分布:下一步是为投资组合中的每个资产定义概率分布。这涉及到为每个资产指定回报的均值和标准差,以及其他相关的统计参数。

  3. 生成随机情景:一旦投资组合和概率分布已被定义,蒙特卡洛模拟便会生成许多随机的市场行为情景。这些情景基于先前步骤中指定的概率分布进行生成。

  4. 模拟投资组合表现:对于每一个随机情景,蒙特卡洛模拟根据第一步中指定的资产权重和相关性计算投资组合的回报。这会生成一系列可能的投资组合回报分布。

  5. 分析结果:最后,蒙特卡洛模拟提供一系列统计数据,可用于分析模拟结果,例如投资组合的期望值、收益的标准差以及实现特定收益水平的概率。

蒙特卡洛模拟是金融投资组合模拟的强大工具,能为投资者提供一系列可能的结果,并帮助他们更好地理解与投资相关的风险。这一技术使投资者能够做出更明智的决策,并调整其投资策略,以最大化回报,同时最小化风险暴露。

假设一个投资者想要评估一个包含股票、债券和现金混合的特定投资组合的风险与回报。该投资组合包括 60%的股票、30%的债券和 10%的现金。为了评估这个投资组合的表现,投资者可以使用蒙特卡洛模拟,过程包括以下步骤:

确定投资组合中每种资产类别的历史回报和波动性。例如,假设历史数据表明,股票的年回报率为 10%,波动率为 20%。相比之下,债券的年回报率为 5%,波动率为 10%,现金的回报率为 2%,且没有波动性。

生成随机数字以模拟每种资产类别在未来的表现。蒙特卡洛模拟基于历史数据随机生成一组可能的未来结果。

根据每种资产类别的模拟结果计算整体投资组合的回报。例如,如果模拟结果显示股票的回报为 12%,债券为 4%,现金为 2%,则整体投资组合的回报为 8.4%。

重复进行多次模拟,以生成一系列可能的结果。蒙特卡洛模拟允许投资者对一系列可能的结果进行建模,并评估每种结果的概率。

基于可能结果的范围评估投资组合的风险和回报。这一步骤包括根据模拟结果计算投资组合的期望回报和标准差。投资者可以利用这些信息做出有关投资策略的明智决策。

戴维·布斯(David Booth),一家知名投资公司的创始人兼执行主席,指出以下内容:

蒙特卡罗模拟可以帮助投资者更好地理解其投资策略的潜在结果,并做出更有根据的决策。它使投资者能够评估各种因素对投资组合表现的影响,并为应对意外的市场条件做好更充分的准备。

蒙特卡罗模拟是金融投资组合模拟中一个有价值的工具,可以帮助投资者优化其投资策略并降低风险。

投资组合优化的金融建模

计算机算法和模型在金融投资组合模拟中变得越来越重要,而蒙特卡罗模拟是这些算法和模型常用的一种技术。以下是蒙特卡罗模拟如何通过计算机算法和模型应用于金融投资组合模拟的一个示例:

算法或模型根据历史数据和对未来市场条件的假设,生成可能影响投资组合的多种情景。

对于每个情景,算法或模型会根据投资组合中包含的资产及其历史相关性,计算该投资组合的预期回报和风险。

算法或模型利用这些预期回报和风险来计算投资组合的预期值、波动性,以及各种结果(如盈利或亏损)的概率。

通过重复这一过程成千上万次,甚至数百万次,算法或模型会创建一个潜在投资组合结果的分布,这个分布可以用来估计投资组合在不同市场条件下的风险和回报特性。

然后,可以分析这个分布,以识别投资组合中的潜在弱点或机会,并优化投资组合的资产配置或风险管理策略。

根据大卫·鲁珀特教授的说法,他是该领域的著名专家,蒙特卡罗模拟是一个强大的工具,用于建模复杂的系统,包括金融投资组合:

蒙特卡罗模拟使我们能够处理非常高维、非常复杂的模型,而这些模型在其他情况下无法通过解析方法求解。它还允许我们进行敏感性分析,观察当我们改变输入时,模型输出如何变化,从而识别出最重要的变量和风险源。

利用蒙特卡罗模拟和其他先进技术,计算机算法和模型可以帮助投资者在复杂且快速变化的金融环境中做出更加明智的决策,并更有效地管理他们的投资组合。

优化算法

优化算法被用于金融投资组合优化,以选择最适合给定投资者偏好和约束条件的投资组合。以下是一些常用的优化算法:

  • 线性规划:一种数学技术,用于优化线性目标函数,且满足线性约束。线性规划在投资组合优化中被用来确定最优的投资组合配置。

  • 二次规划:一种优化二次目标函数并满足线性约束的数学技术。二次规划在投资组合优化中用于确定最优投资组合,考虑收益分布的高阶矩,如波动率和偏度。

  • 遗传算法:一种受自然选择启发的启发式优化技术。遗传算法使用一组候选解,应用基因操作(如变异和交叉)生成新的候选解,并根据适应度函数选择最合适的候选解。

根据现代投资组合理论的奠基人、诺贝尔奖得主哈里·马克维茨博士的说法,

用于优化投资组合的适当数学技术取决于投资者的目标、约束和偏好,以及所考虑证券的特性。

因此,优化算法的选择应根据投资者的具体需求来进行,投资组合应当被优化。

使用传统机器学习算法进行投资组合管理

经典实现

投资组合优化是一个与金融服务和银行业相关的问题,源自于马克维茨于 1952 年发表的开创性论文(onlinelibrary.wiley.com/doi/full/10.1111/j.1540-6261.1952.tb01525.x)。该模型描述了一组资产 x i ∈ X,从中需要选择一个子集以最大化收益,同时最小化未来 𝑡 步时间的风险。在给定的期间内,每个资产都有一个预期回报,并且资产之间的协方差决定了基于分散化的风险量(为了简单起见)。这种分散化的背后思想是,如果我们只投资于那些最高收益的资产,它们如果失败时被同一因素所驱动的风险,比我们进行投资组合多样化时要大。我们将重点关注单次时间步的过程,假设局部最优解是我们投资组合全球最优解的长时间步轨迹的一部分。

那么,为了简单起见,我们先考虑单次时间步的优化。投资是有代价的。一个预算(𝐵)与投资于投资组合配置相关。它由投资每个资产的总成本表示,记为 b i,其中 i 是特定资产的索引。理想情况下,我们的推荐应不超过此条件(∑ b i < B)。因此,这个经典的优化问题通常被提出为:

∑ i=1 n  x i e i− θ∑ i,j=1 n  x i x j c ij

s . t. ∑ i=1 n x i b i ≤ B

其中,x i ∈ {0,1} 是与我们的资产集选择相关的掩码,而 𝜃 是一个拉格朗日算子,用于调节我们希望承担的风险量。我们将此选择二值化,因为它简化了计算。不过,考虑到投资组合的强制性要求,我们仍然可以考虑在模型的三个方面(收益、风险和预算)上做出进一步的投资选择。

我们最小化同样的模型,因为它将更符合我们将要采用的技术方法。因此,最终模型将如下所示:

− ∑ i=1 n x i e i+ θ∑ i,j=1 n x i x j c ij

s . t. ∑ i=1 n x i b i ≤ B

首先,我们将加载数据以构建优化问题:


import json
data = None
with open("binance-data.json", "r") as jsonfile:
    data = json.load(jsonfile)

从加载的数据中,我们可以将计算的收益、协方差和资产成本存储在相应的变量中。我们还将预算设置为 50%:


import numpy as np
returns = data['mu']
covar = data['sigma']
assets = []
costs = []
for row in data['assets']:
    assets.append(row["Asset"])
    costs.append(float(row["Open"]))
# Half the money
budget = np.sum(costs)/0.5

接下来,让我们绘制收益的条形图:


import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(y=returns, x = assets)
plt.show()

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_003.jpg

图 5.3 – 按资产分类的收益

在这里,我们可以观察到,只有 BNBBTC 和 ETHBTC 的收益为正,而 LTCBTC、NEOBTC 和 QTUETH 的收益为负。

我们已经在数据文件中计算了协方差。接下来,让我们绘制协方差图:


f, ax = plt.subplots(figsize=(10, 8))
sns.heatmap(covar, mask=np.zeros_like(covar, dtype=bool), annot=True,
            square=True, ax=ax, xticklabels=assets, yticklabels=assets)
plt.title("Covariance between Equities")
plt.show()

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_004.jpg

图 5.4 – 相关矩阵

前述协方差矩阵显示了不同股票之间的联合变动情况。通过这种方式,我们可以识别出可能由相同因素驱动的股票的方差,并意识到将它们同时纳入同一投资组合的风险。这些值将作为 c ij 系数引入我们的方程。

解决此类优化问题(如前述问题)的一个常见选择是使用优化库,如 CVX 及其 Python 实现(cvxpy),并采用混合整数优化方法,因为我们的问题受到布尔值约束,𝑥 变量可以取的值。此时我们假设问题是凸的,且在选择求解器之前需要验证这一假设,但考虑到涉及的股票数量,这种方法展示了如何使用经典求解器而无需大量编写代码:


import cvxpy as cp
# Our solution variable
x_val = cp.Variable(len(returns), boolean=True)
theta = cp.Parameter(nonneg=True)
ret = np.array(returns)@x_val
risk = cp.quad_form(x_val, covar)
e_costs = np.array(costs)@x_val
# Constraints
cons = [cp.sum(x_val) >= 0, cp.sum(e_costs) <= budget, x_val >= 0]
# Objective function
obj = cp.Minimize(- ret + theta*risk)
# Problem
prob = cp.Problem(obj, cons)

我们使用了 0.03 作为拉格朗日乘数的风险惩罚。CVXPY 可以与多种求解器接口;这些求解器使用的算法有与停止标准和改进解质量相关的参数。没有一个参数设置对所有问题都是完美的。如果你没有从某个求解器中获得满意的结果,可以尝试更改其参数。具体做法取决于特定的求解器。

我们在代码中使用了‘ECOS_BB’求解器:


theta.value = 0.03 # This is related to the risk penalty lagrangian
prob.solve(solver='ECOS_BB')
for i, val in enumerate(np.round(x_val.value,1)):
    if val == 1:
        print(f"Asset {assets[i]} was selected")
    else:
        print(f"Asset {assets[i]} was not selected")

我们得到的该问题的最优值为‘-0.0018521365020072623’。以下是已选择和未选择的资产的一个代码片段。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_005.jpg

图 5.5 – 资产选择

我们可以看到 ETHBTC 和 BNBBTC 被选择了,根据历史回报,这两项资产提供了正回报,而其他资产没有被选中。

现在让我们开始量子实现。我们将查看一个基于退火的实现,使用 D-Wave SDK 和一个基于门的实现,使用 Qiskit。

量子算法投资组合管理实现

量子退火机

量子退火机是专门的机器,能够遵循绝热原理找到给定问题的最小能量解。我们在第二章中提到过一些这样的机器,但现在我们将详细介绍它们如何用来解决像投资组合优化这样的问题。

量子退火机需要一个目标问题,以矩阵形式设置,将变量作为掩码。在我们的投资组合示例中,解决方案将以二进制决策编码,表示是否将资产n包括在我们的最终投资组合中。因此,我们的问题矩阵应反映是否将某个资产包括在解决方案中的影响。

为此,文献中通常发现问题需要以 QUBO(或 Ising)形式呈现。QUBO代表二次无约束二进制优化,意味着考虑二进制变量(0 或 1),只表示两种方式的乘法(X i × X j),所有信息都包含在目标函数中。

因此,我们的 QUBO 问题的规范形式应该如下所示:

x T Qx

其中 Q 是包含所有信息的矩阵。

为了以这种方式构建我们的投资组合,我们需要构建目标函数,以便将资产选择回报、分散风险和预算约束包含在一个单一的方程式中,如下所示:

− ∑ i=1 n x i e i+ θ 1 ∑ i,j=1 n x i x j c ij + θ 2 (∑ i=1 n x i b i − B) 2

这里,ei 表示如果在投资组合中选择第 i 个资产时的预期回报。cij 表示同时选择两个资产的风险,因为它们可能受相同的基础过程驱动,从而增加我们的风险。bi 与获取第 i 个资产的成本相关,所有资产的总和不应超过可用预算(B)。两个θ值表示该项的相关性,意味着如果允许,可以超出初始预算,或者如果我们减少θ1 的值,可以考虑高风险的投资组合。我们可以调节结果,因为它需要是无约束的(QUBO 中的 U),但每次可以根据我们的优先级进行调节。

一旦问题被设定为这种规范形式,你可以轻松地将其提交给量子退火机以获得结果。

D-Wave 实现

D-Wave 不仅是这些机器之一,也是首批市场上可用的量子计算机之一,几乎在 10 年前就已问世。其设备可以作为云服务访问并免费使用(至少每月有几分钟的使用时间)。其在线服务名为 Leap(cloud.dwavesys.com/leap/login),注册后,欢迎页面会显示剩余的计算时间,如下图所示。

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_006.jpg

图 5.6 – Leap 仪表盘

这是可以获取访问令牌的地方,访问令牌将在本地环境准备好后用于连接到服务。

让我们继续并开始构建我们的投资组合问题,并通过 D-Wave 平台解决它。首先,我们必须加载之前的数据,这些数据基于从 Binance 获取的信息:


import json
import numpy as np
data = None
with open("binance-data.json", "r") as jsonfile:
    data = json.load(jsonfile)
returns = data['mu']
covar = data['sigma']

回报率和协方差将用于构成我们的目标问题。此外,还需要定义预算,以限制我们希望选择的资产数量。在本例中,这将被设定为资产总额的 50%:


assets = []
costs = []
for row in data['assets']:
    assets.append(row["Asset"])
    costs.append(float(row["Open"]))
# Half the money
budget = np.sum(costs)/0.5

感谢 PyQUBO 库,我们之前的公式可以轻松地转化为 D-Wave 芯片的编码问题:


from pyqubo import Array, Placeholder, Constraint
num_assets = len(assets)
x = Array.create('x', shape=num_assets, vartype='BINARY')
# Profit generated by each asset individually
H_linear_profit = 0.0
for i in range(num_assets):
    H_linear_profit += Constraint(
        returns[i] * x[i], label='profit({})'.format(i)
    )
# Risk obtained from the covariance matrix
H_quadratic = 0.0
for i in range(num_assets):
    for j in range(i + 1, num_assets):
        H_quadratic += Constraint(
            covar[i][j] * x[i] * x[j], label='risk({}, {})'.format(i, j)
        )
# Constraint (budget)
H_linear_budget = 0.0
for i in range(num_assets):
    H_linear_budget += Constraint(costs[i]*x[i], label='slot({})'.format(i))
# Final shape of the problem
theta1 = Placeholder('theta1')
theta2 = Placeholder('theta2')
H = - H_linear_profit + theta1 * H_quadratic + theta2 * (H_linear_budget - budget)**2
model = H.compile()

该模型服务于不同的目标,因为我们可以调整 theta 参数,使预算或多样化的约束条件变得更加严格或宽松:


# Set the Lagrange multipliers
theta1=0.5
theta2=0.3
feed_dict = {'theta1': theta1, 'theta2' : theta2}
# Transform to QUBO.
qubo, offset = model.to_qubo(feed_dict=feed_dict)
qubo
{('x[4]', 'x[0]'): -8.656820265502894e-06,
 ('x[0]', 'x[0]'): -0.003196217986409817,
 ('x[3]', 'x[1]'): 0.00019183405443636594,('x[1]', 'x[1]'): 9.405658442868104e-05,
 ('x[2]', 'x[1]'): 0.00014597087707179864,
 ('x[1]', 'x[0]'): 0.00023358187881969354,
 ('x[2]', 'x[0]'): 0.0006994880363473856}

这是实际的 Q 矩阵,如前面的方程 1 所示。到目前为止,这只是将我们的目标问题公式化,以便 D-Wave 的退火机器能够处理它。接下来的步骤将把该模型送入退火器,因此我们必须实例化它:


from dwave.system.samplers import DWaveSampler
from dwave.system.composites import FixedEmbeddingComposite
import minorminer
import dimod
# Instanciate Sampler
dwave_sampler = DWaveSampler()

除了 D-Wave 的库之外,还需要额外的库将问题嵌入到我们的目标芯片架构中。这将在第九章中详细讨论,但芯片架构要求我们为问题找到合适的嵌入方式。感谢minorminer库,这只需要几行代码:


# Construct a problem
bqm = dimod.BinaryQuadraticModel(qubo, dimod.BINARY)
# Get the edge list
target_edgelist = dwave_sampler.edgelist
# And source edge list on the BQM quadratic model
source_edgelist = list(bqm.quadratic)
# Find the embeding
embedding = minorminer.find_embedding(source_edgelist, target_edgelist)
sampler = FixedEmbeddingComposite(dwave_sampler, embedding)

一旦问题有了合适的嵌入,我们就可以将其发送到量子机器。我们可以调用采样器,在问题在 D-Wave 芯片上花费一定的时间(即退火时间)后,获得最终结果:


ta = 10 # microseconds
num_reads = 10
response = sampler.sample_qubo(qubo, num_reads=num_reads, annealing_time=ta)
response.first
Sample(sample={'x[0]': 1, 'x[1]': 0, 'x[2]': 1, 'x[3]': 0, 'x[4]': 0}, energy=-0.005097396148791738, num_occurrences=10, chain_break_fraction=0.0)

这是在 10 次运行后找到的最小能量解,退火时间为 10 微秒。此编码显示,根据我们编码信息的顺序(在我们的 BNBBTC 示例中为 ETHBTC),我们的最佳投资组合将包括第一个和第三个资产。

同时,值得注意的是,所有运行结果都显示这是退火时间后(num_ocurrences=10)的最佳解决方案。有时会出现这种情况,因为该解决方案的成功概率较低。当使用基于门的量子设备解决这些问题时,这一点尤为重要。

Qiskit 实现

Qiskit 是我们将使用的框架来尝试解决相同的问题,但我们将使用基于门的量子设备。基于门的设备允许更通用的设置来解决退火问题,但也允许任何其他组件。你可以使用 QML 技术或基于门的算法来解决问题,例如 Shor 算法、Grover 算法等,正如在第二章中讨论的那样。

在这种情况下,Qiskit 已经提供了高层次的金融抽象库,以便我们可以最小化编码要求,而不是从头开始。例如,基于 Binance 数据构建我们的二次问题将需要以下几行:


from qiskit_finance.applications.optimization import PortfolioOptimization
q = 0.5  # set risk factor
budget = len(assets) // 2  # set budget
portfolio = PortfolioOptimization(
    expected_returns=returns, covariances=covar, risk_factor=q, budget=budget
)
qp = portfolio.to_quadratic_program()

最新的方程表示这个二次程序,Qiskit 已经提供了解决它的方法,使用经典的基于 NumPy 的求解器:


from qiskit_optimization.converters import QuadraticProgramToQubo
from qiskit_optimization.algorithms import MinimumEigenOptimizer
from qiskit.algorithms import NumPyMinimumEigensolver
def index_to_selection(i, num_assets):def print_result(result):
…
exact_mes = NumPyMinimumEigensolver()
exact_eigensolver = MinimumEigenOptimizer(exact_mes)
result = exact_eigensolver.solve(qp)
print_result(result)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection  value    probability
---------------------------------------------------
[1 0 1 0 0]  -0.0011  1.0000
[1 1 1 1 1]  9.0971    0.0000
[0 1 1 1 1]  4.0459    0.0000
[1 0 0 0 0]  1.0102    0.0000
[0 1 0 0 0]  1.0108    0.0000
[1 1 0 0 0]  0.0010    0.0000
[0 0 1 0 0]  1.0087    0.0000
[0 1 1 0 0]  -0.0005  0.0000
[1 1 1 0 0]  1.0102    0.0000
[0 0 0 1 0]  1.0122    0.0000
[1 0 0 1 0]  0.0024    0.0000
[0 1 0 1 0]  0.0031    0.0000
[1 1 0 1 0]  1.0138    0.0000

尽管这显示了我们问题的预期解,但在扩展到更大的投资组合配置时,过程可能会很昂贵,因为它探索了潜在解的整个空间。

理想情况下,变分方法应该在探索这些大型解空间时更为高效,考虑到量子计算的特性。当同时处理所有这些选项并将它们演化时,突出最小化我们目标的选项是这些技术的亮点。将我们的二次问题转移到量子设置中需要两个主要步骤:

  • 一个参数化量子电路PQC)或 ansatz

  • 一个优化过程,将调整并找到适合我们 PQC 的参数。

对于第一个例子,量子近似优化算法QAOA)将是我们解决问题的候选算法。这是一种直接继承自退火器处理此类问题的方法,通过设置交替的哈密顿量来处理目标问题和混合器哈密顿量。

PQC 对于给定问题有固定的结构,只需要对其进行重复以进行选择。通过改变重复次数,我们应该能够提高目标状态——我们问题的解的成功概率。然后,我们希望通过变分方法找到一组合适的参数,以最大化这个成功概率。在这种情况下,COBYLA 将是我们选择的优化器,因为它的性能很快。其他选项也应尝试:


from qiskit.algorithms import QAOA
from qiskit.algorithms.optimizers import COBYLA
layers = 2
cobyla = COBYLA()
cobyla.set_options(maxiter=500)
qaoa_mes = QAOA(optimizer=cobyla, reps=layers, quantum_instance=quantum_instance)
qaoa = MinimumEigenOptimizer(qaoa_mes)
result = qaoa.solve(qp)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection  value    probability
---------------------------------------------------
[0 0 0 1 1]  0.0048    0.0783
[0 1 0 1 0]  0.0031    0.0777
[0 1 0 0 1]  0.0031    0.0777
[1 0 0 1 0]  0.0024    0.0775
[1 0 0 0 1]  0.0021    0.0773
[0 0 1 1 0]  0.0009    0.0770
[1 1 0 0 0]  0.0010    0.0770
[0 0 1 0 1]  0.0009    0.0770
[0 1 1 0 0]  -0.0005    0.0765
[1 0 1 0 0]  -0.0011    0.0763

好吧,在我们的第一次尝试中,尽管我们找到了最佳解,但它与其他解在相同的量子状态下竞争。我们必须记住,我们在量子设备上执行的所有操作的结果将生成一个量子状态,理想情况下这个状态应该包含我们的候选解。如果它还有更大的概率振幅,那么当它在测量时坍缩到这些经典状态之一时,它更有可能成功。因此,我们希望找到一个概率比这里显示的更大的结果。

我们可以尝试不同数量的层或重复次数,在问题与混合哈密顿量之间进行实验:


from qiskit.algorithms import QAOA
layers = 5
qaoa_mes = QAOA(optimizer=cobyla, reps=layers, quantum_instance=quantum_instance)
qaoa = MinimumEigenOptimizer(qaoa_mes)
result = qaoa.solve(qp)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection  value    probability
---------------------------------------------------
[0 0 0 1 1]  0.0048    0.0666
[0 1 0 1 0]  0.0031    0.0663
[0 1 0 0 1]  0.0031    0.0661
[1 0 0 1 0]  0.0024    0.0659
[1 0 0 0 1]  0.0021    0.0659
[0 0 1 1 0]  0.0009    0.0656
[0 0 1 0 1]  0.0009    0.0654
[1 1 0 0 0]  0.0010    0.0654
[0 1 1 0 0]  -0.0005    0.0651
[1 0 1 0 0]  -0.0011    0.0647

如果这种方法看起来不合适,我们可以尝试在一般情况下改变优化方法,寻找不同的初始假设组合。

变分量子本征求解器 (VQE) 允许更通用的方法来描述初始假设。例如,下面的示例中使用了 TwoLocal PQC 实现。TwoLocal 电路可以包含多个相同方案的重复,包含不同的、任意选择的操作:


from qiskit.circuit.library import TwoLocal
ansatz = TwoLocal(num_assets, "ry", "cz", reps=3, entanglement="full")
ansatz.decompose().draw('mpl', fold=150)

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_007.jpg

图 5.7 – 由前面代码产生的包含三次 RY 旋转和 CZ 两量子比特门的电路

我们需要找到 theta 参数来解决我们的问题。这时,变分方法就派上用场了——在本例中,重新使用 COBYLA 求解器来找到这些理想的参数:


from qiskit import Aer
from qiskit.algorithms import VQE
from qiskit.algorithms.optimizers import COBYLA
from qiskit.utils import QuantumInstance
from qiskit.utils import algorithm_globals
algorithm_globals.random_seed = 1234
backend = Aer.get_backend("statevector_simulator")
cobyla = COBYLA()
cobyla.set_options(maxiter=500)
quantum_instance = QuantumInstance(backend=backend, seed_simulator=1234, seed_transpiler=1234)
vqe_mes = VQE(ansatz, optimizer=cobyla, quantum_instance=quantum_instance)
vqe = MinimumEigenOptimizer(vqe_mes)
result = vqe.solve(qp)

如前面的代码所示,VQE 需要一个初始假设或 PQC、一个优化器和一个量子实例,即量子电路评估将要执行的设备。在本例中,将使用本地仿真,但我们将在第八章中看到如何利用云计算资源进行这种评估,类似 D-Wave 的情况。在经过一些迭代(最多 500 次)后,我们可以打印出我们的投资组合问题的结果:


print_result(result)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection  value    probability
---------------------------------------------------
[1 1 0 0 0]  0.0010    0.3613
[1 0 0 1 0]  0.0024    0.3463
[0 0 1 1 0]  0.0009    0.1285[1 0 1 0 0]  -0.0011    0.0000

找到的解决方案与我们之前示例中的最优解匹配,但找到它的成功概率不是 1.0,而是接近 0。这意味着,如果仅允许使用这些参数运行一次电路,并在过程结束时测量经典比特串,那么几乎不可能选中这个状态。从经典确定性的角度来看,这可能很难理解。然而,处理量子状态时,可能会出现这类情况,其中最优解是由多个混合级别上的最优和次优选项组成的。

量子科学家的工作将涉及找到一种好的方法,通过改变 PQC、优化方法或全局过程来最大化这些几率。

例如,通过增加 TwoLocal 初始假设的重复次数,我们可以看到这些几率是如何变化的:


ansatz = TwoLocal(num_assets, "ry", "cz", reps=6, entanglement="full")
vqe_mes = VQE(ansatz, optimizer=cobyla, quantum_instance=quantum_instance)
vqe = MinimumEigenOptimizer(vqe_mes)
result = vqe.solve(qp)
Optimal: selection [1\. 0\. 1\. 0\. 0.], value -0.0011
----------------- Full result ---------------------
selection  value    probability
---------------------------------------------------
[0 1 0 0 1]  0.0031    0.6130
[1 0 1 0 0]  -0.0011    0.2030
[0 1 0 1 0]  0.0031    0.0528
[0 1 1 0 0]  -0.0005    0.0435
[1 0 0 1 0]  0.0024    0.0314

这好多了。现在,如果我们运行经过训练的初始假设五次,高概率下,至少会找到一次最优解。我们可以通过简单地组合电路、绑定参数,并对一组运行进行测量来尝试这一点:


from qiskit import QuantumCircuit
from qiskit import Aer, execute
from qiskit.visualization import plot_histogram
qc = QuantumCircuit(num_assets,num_assets)
# VQE Two Local ansatz
qc.compose(ansatz, inplace=True)
# Measures
for i in range(0, num_assets):
    qc.measure(i, i)
pqc = qc.bind_parameters(best_parameters)
# Number of shots to the circuit
nshots = 10
# execute the quantum circuit
backend = Aer.get_backend('qasm_simulator') # the device to run on
result = execute(pqc, backend, shots=nshots).result()
We could then collect the results and check the outcome.
counts  = result.get_counts(pqc)
plot_histogram(counts)

https://github.com/OpenDocCN/freelearn-quant-zh/raw/master/docs/fin-mdl-qcomp/img/B19146_05_008.jpg

图 5.8 – 量子态输出的概率

结论

当扩展到更大的投资组合时,计算最优结果的成本可能会比量子方法更昂贵。然而,正如我们所看到的,即使是量子计算这些大规模组合问题,它们也伴随着对结果完全确定的需求。

需要理解的是,这些技术要求像传统机器学习方法一样,充分理解我们 ansatz(假设方法)最佳架构如何有利于我们。而在许多情况下,这将来自于与不同类型的投资组合和股票组合进行拟合的经验。并非所有资产表现出相似的行为。这将需要探索潜在 ansatz 的广泛扩展、在这些 ansatz 中重复使用方案,以及优化技术,后者需要更少的迭代次数来找到最佳参数。

尽管基于门的量子设备可能提供一种通用的量子计算方法,但不可否认的是,如今,量子退火机提供了能够处理更大投资组合的设备,而无需费力寻找和训练变分方法。

下一章将介绍信用风险分析领域。我们将提供有关该理论的介绍,以及如何通过经典方法和量子方法来解决这一问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值