隐马尔可夫链简介
这篇文章最初发表在 Quants 门户上。
在你希望确定投资回报的情况下,你可能有所有的专业知识来做这件事,但如果没有某些信息(缺失的部分),就不可能得出一个结论性的数字。实际上“假设你有你投资组合中所有资产的所有回报的价值;如果没有每项资产产生回报的比率,我们将无法真实反映特定时间点的投资组合回报,因此我们可能无法提供准确的回报估计。”一个称为隐马尔可夫模型的过程可以用来解释这个问题。
这个过程分为两个部分:一个可观察的部分和一个不可观察的或“隐藏的”部分(van Handel,2008)。然而,从可观察的过程中,我们可以提取关于“隐藏”过程的信息。因此,我们的任务是从观察到的过程中确定未观察到的过程。
隐马尔可夫模型(HMM)有两个定义性质。(I)它假设当时的观察是由某个过程产生的,该过程的状态对观察者是隐藏的,并且(ii)它假设该隐藏过程的状态满足马尔可夫性质。对某些人来说,HMM 可能看起来很复杂,但是一旦理解了什么是马尔可夫模型,它就很容易理解了。我们将研究这两个模型组件,然后考虑有助于构建这些 hmm 的高级技术。
构建隐马尔可夫模型
【隐藏过程】
如果满足以下条件,则称一个过程具有马尔可夫特性:
对于任何一个⊆s,任何一个值 n 和任何一个时间值t1tt2<…<tnt17】tn+1t13】确实如此**
这意味着,要确定流程的下一个状态,可以只考虑流程当前所处的状态,而忽略之前发生的所有事情,因为该信息已经包含在当前状态中。
我们需要一些属性和定义来帮助我们最终理解 HMM 的概念
- 时间同质性:这发生在从 a 到 b 的概率与时间无关的时候,也就是说,你在这个过程中走了多远并不重要;只要这些过程在一个步骤中从 a 移动到 b,整个过程的概率是相同的。当一个过程具有这种性质时,我们说这个过程是时间同质的,如果不是;时间非同质
- 虽然可以处理无限个状态,但在我们的财务环境中,处理有限个不可约的状态就足够了。
- **不可约状态:**经过一定数量的步骤,从任何一个状态转移到另一个状态都是可能的。
这个概率矩阵是这样的:
注意:这些排放概率是这个过程下一步走向的主要驱动力。根据我们的时间同质性假设,我们可以计算出该过程在 t 步后处于状态 j 的概率,假定它开始于 i 我们将矩阵 P 乘以自身 t 次,然后读出PnT17】的ijthT13】元素**
示例:
让我们考虑两个概率转移矩阵,每个矩阵有两个转移状态,一个是时间均匀的,另一个不是。
非时齐情况
然后和
这里改变状态的概率取决于你在时间中的位置。与此过程相反,时间齐次矩阵给出了与时间无关的常数概率。
在这种情况下
快速任务
然后
马尔可夫转移的可视化表示
保持我们的分析简单,让我们研究一个三态过程 S = {1,2,3}
从任何一个状态移动到任何其他状态的概率由概率矩阵 P 给出,概率矩阵 P 由下式给出:
下图给出了这种现象的另一种观点:
根据该图,我们可以在一个转变(时间步长)内移动到任何状态或保持在当前状态。这对于 A 和 C 来说都是正确的,但是一旦进程到达 B,它必须在下一个转换中移动,这是因为停留在 B 的概率是 0。
有了马尔可夫链,我们可以看到,它们会保留未观察到的信息,并最终产生一个更现实的模型,这就是我们首先关注 hmm 的原因。
可观察的过程
隐藏状态是由一些性质决定的,我们可以通过推导这些性质来更好地理解这些隐藏状态的行为。
为了得到这个过程的密度估计值,我们需要解许多方程组。像 Baum-Welch 算法和 Viterbi 算法这样的算法给出了极其精确的估计,但是由于它们的复杂性,我们将暂时避开它们,但是稍后再回到它们。相反,我们将研究卡尔曼滤波器,因为它遵循的过程类似于 HMM 推导中使用的过程,因此它将使我们直观地理解 HMM 是如何产生的。卡尔曼滤波器是一种广泛应用于控制系统和航空电子设备的数学技术,用于从一系列不完整和有噪声的测量中提取信号。
从不同的角度来看,我将首先列出卡尔曼滤波器和 HMM 方法之间的区别。
从上面,我们得到一种感觉,通过卡尔曼滤波器找到估计更简单,但同时,我们观察 HMM 如何将估计提高到一个全新的水平。我画了这个表来演示,如果不是暗示,在尝试寻找 HMM 的估计值之前,首先熟悉卡尔曼滤波器是多么的必要。
卡尔曼滤波
卡尔曼滤波器的关键点
- 这是一种找到过程估计值的方法。过滤来自于减少或“过滤掉”不想要的变量的原始用法。在我们的例子中是估计误差
滤波器估计值
假设我们有两个过程,一个状态过程和一个观察过程,由下面的线性方程组给出:
这里的 A ∗ k {A} *{k} A∗k和 C ∗ k {C}* {k} C∗k可以是矩阵或变量,甚至可以是简单的常量值。
通常假设 v ∗ k + 1 {v} *{k+1} v∗k+1和 w ∗ k + 1 {w}* {k+1} w∗k+1是独立且同分布的高斯或正态分布,具有均值 0 和一些协方差矩阵(理想情况下是对角线,以反映观测值之间的独立性)。
卡尔曼滤波方程的估计值是使用相当先进的方法得出的,这些方法需要对多变量分析有足够的了解。因此,我将在这里给出隐藏过程的期望值和方差的矩方程。
时间更新方程式为
并且测量值更新等式:
第二组方程(*测量值更新)*确定过程的均值和协方差将在哪里给出第一组方程(*时间更新)*的结果。
卡尔曼滤波器增益 ( K k+1 ) 用于反映我们合成的模型相对于一些观察到的(通常是历史的)模型之间的误差项的显著性。如果在 0 和 1 之间的概率的增益很小,这将意味着估计的模型是相对接近现实的,即现实的良好度量。如果这个概率非常大,那么它可能表明我们模型是无效的,需要用统计中可用的许多误差最小化方法进行重新评估。事实是,确定卡尔曼增益与获得期望过程的估计值一样重要。该滤波器增益的推导将在附录中提供。
随机动态规划
埃里克·b·拉伯和他的同事周华以一种简单而令人满意的、有意识的方式剖析了动态编程(DP)是如何运作的。首先,他们将问题(过程)分成子区间。观察到这些“子问题”是相关的,他们建议单独解决子过程,并将答案存储在表中,然后使用记录的答案来回答初始问题。
在任何包含隐藏变量(如 HMMs)的模型中,确定变量序列的任务被称为解码(Read,2011),其目标是从观察到的序列中确定最可能的隐藏状态序列(Blunsom,2004)。维特比算法已经被用来为一个被观察的序列寻找单个最佳状态序列,并且这样做的方式让人不得不佩服。
维特比算法
该算法大致遵循一个四步过程,在该过程的最后,将导出最可能的转换过程。
- 初始化
- 递归
- 结束
一旦训练集中的所有转换都被考虑,代码将提取给定所有先前事件的最可能(最大概率)事件。
- 最优状态序列回溯
回溯允许从递归步骤的结果中找到最佳状态序列(Blunsom,2004)。
有趣的是:给定算法获得最可能序列的能力,没有简单的方法来获得第二好的序列。
工作示例
Bhar 和 Hamori 使用 HMM 分析 G7 国家的股票市场回报,使用月度回报(2004,第 43 页)。当两人意识到美国对其他 G7 国家施加强大的影响,但有趣的是,其他国家对美国的影响并不小或没有时,这种情况就出现了。
假设整个 G7 月度回报的模型由以下形式的双态马尔可夫模型给出
回报被分成波动性高和低的时段。一个国家保持当前状态的估计概率由低波动性时和高波动性时给出。
下表显示了 Bhar 和 Hamori 对七个国家的实证研究结果。给定来自 Baum-Welch 算法和 Viterbi 算法的平滑概率和参数估计,我们有:
这些统计数据不仅仅是为了假设模型;他们的主要目的是提供更多的数据信息,从而帮助决策者有效地制定战略。从该表中获得的一些信息:
- 日本最有可能长时间处于不稳定状态,而美国可能会更快离开不稳定时期。
- 在一个更加不稳定的体制下,意大利可能会获得更多的平均回报
作为练习,读者可以更仔细地观察从数据中可以得出什么样的推论。
参考书目
巴尔和哈莫里(2004 年)。*隐马尔可夫模型。*伦敦:Kluwer 学术出版社。
布伦松,P. (2004 年)。隐马尔可夫模型。
里德,J. (2011 年)。隐马尔可夫模型和动态规划。
范·汉德尔(2008 年)。隐马尔可夫模型:课堂讲稿。
免责声明:本客座博文中提供的观点、意见和信息仅属于作者个人,不代表 QuantInsti 的观点、意见和信息。本文中所做的任何陈述或共享的链接的准确性、完整性和有效性都不能得到保证。我们对任何错误、遗漏或陈述不承担任何责任。与侵犯知识产权相关的任何责任由他们承担。T3】
深度学习和神经网络简介
原文:https://blog.quantinsti.com/introduction-deep-learning-neural-network/
作者:沙古塔·塔西尔达
“人工智能将是谷歌的终极版本。理解网络上一切的终极搜索引擎。Alphabet 首席执行官拉里·佩奇(Larry Page)在 2000 年表示:“它会准确理解你想要什么,并给你正确的东西。”当时我们大多数人都认为谷歌只是一个简单的搜索引擎。今天,人工智能和深度神经网络学习正在使几年前甚至难以想象的事情成为可能!
感谢像机器学习和深度学习这样的领域,它们是人工智能的一部分,我们已经能够在机器内自动化和集成“学习”。
在这篇介绍深度学习的文章中,我们将学习什么是深度学习,以及它如何被用于人工智能领域。
本文关于“深度学习与神经网络导论”的内容如下:
什么是深度学习?
深度学习是一种涉及使用人工深度神经网络的机器学习方法。就像人类的大脑由通过发送和接收信号来处理信息的神经细胞或神经元组成一样,深度神经网络学习由多层相互通信和处理信息的‘神经元’组成。
深度学习中的‘深’指的是网络内部的层数;层数越多,网络越深。
深度神经网络可以处理标记的数据以及未标记的数据,这允许监督和非监督学习。然而,需要大量数据来训练深度神经网络,这可能有助于产生更准确的结果。
这些网络还能够识别输出中的错误或损失,并在不需要人工干预的情况下纠正它们。
深度学习历史
除了介绍深度学习和理解它是什么,我们还将了解它是如何开始的。正如我们现在所知,深度学习网络基本上是具有许多层的深度神经网络。
1943 年,沃尔特·皮茨和沃伦·麦卡洛克创建了第一个神经网络数学模型,展示了人类大脑的思维过程。从这里开始了深度神经网络和深度学习的旅程。
这个旅程可以表示如下:
- 1957——弗兰克·罗森布拉特(Frank Rosenblatt)提交了一篇题为《感知器:一种感知和识别自动机》的论文,该论文由一种使用双层神经网络进行模式识别的算法或方法组成。
- 1965 -阿列克谢·伊瓦赫年科和 V.G .帕拉开发了第一个工作神经网络,阿列克谢·伊瓦赫年科于 1971 年创建了一个 8 层深度神经网络,并在计算机识别系统 Alpha 中进行了演示。这是深度学习的实际介绍。
- 1980 - Kunihiko Fukushima 开发了“ Neocognitron ”,这是一个具有多个卷积层的人工深度神经网络,用于识别视觉模式。
- 1985——特里·塞伊诺夫斯基创建了 NETtalk ,这是一个学习英语单词发音的程序。
- 1989——Yann le Cun,利用卷积深度神经网络,开发了一个可以阅读手写数字的系统。
- 2009 -由于深度学习模型需要大量的标记数据来在监督学习中训练自己,费-李非推出了 ImageNet ,这是一个大型的标记图像数据库。
- 2012——谷歌大脑进行的“猫实验结果出炉。这项实验基于无监督学习,其中深度神经网络与未标记的数据一起工作,以识别猫图像中的模式和特征。然而,它只能正确识别 15%的图像。
- 2014——脸书开发了 DeepFace ,这是一个深度学习系统,可以识别并标记照片中用户的面部。
机器学习和深度学习的区别
深度学习实际上是机器学习的一个子集,因此这两个术语经常被人们混淆。但是,它们的能力不同。这也是为什么在阅读《深度学习导论》的同时,有必要了解机器学习的原因。
机器学习模型缺乏识别错误的机制,在这种情况下,程序员需要介入调整模型,以做出更准确的决策,而深度学习模型可以识别不准确的决策,并在没有人工干预的情况下自行纠正模型。
但要做到这一点,深度学习模型需要大量的数据和信息,不像机器学习模型。
深度神经网络的工作
到目前为止,我们已经了解了深度学习的基础和介绍,现在是时候了解深度神经网络如何工作了。
如前所述,深度神经网络得名于网络中的高层数。现在让我们通过参考下面给出的图表来理解这些层是什么,以及它们如何在深度神经网络中使用,以给出最终输出:
深层神经网络的层数
通过查看该图,我们看到在这个深度神经网络中存在 4 层,即第 1 层、第 2 层、第 3 层和第 4 层。每个深度神经网络由三种类型的层组成,它们是:
**输入层(第 1 层)😗*该层是深度神经网络中的第一层,它提供处理信息所需的输入参数。它只是将这些参数传递给下一层,而不在这一层进行任何计算。
**隐藏层(第 2 层和第 3 层)😗*深度神经网络中的这些层对从前几层接收的输入执行必要的计算,并将结果传递给下一层。为了提高深度神经网络的效率,决定层的数目和每层中神经元的数目是至关重要的。隐藏层数越多,网络越深。
**输出层(第 4 层)😗*深度神经网络中的这一层,在接收到前几层的结果后,给我们最终的输出。
现在我们已经了解了网络中存在的层的类型,让我们了解这些层实际上是如何工作的,并给出输出数据。
每个神经元都连接到下一层中的所有神经元,并且所有这些连接都具有与其相关联的一些权重。但是这些砝码是什么,为什么要用?
深度神经网络中的权重
权重顾名思义,就是用来给某个特征附加一些权重。为了获得所需的输出,某些功能可能比其他功能更重要。
例如,在预测第二天的股票价格时,前几天的收盘价和 SMAs 将被视为比高或低价格更重要的特征,这将影响这些参数的权重。
这些权重用于计算每个神经元的加权和。x1、x2、x3、x4 表示与深度神经网络中的相应连接相关联的权重。
除了权重,每个隐藏层都有一个与之关联的激活函数。
深度神经网络中的激活函数
激活函数基于它们的加权和来决定神经元是否应该被激活。这些也用于通过使用像 sigmoid 和 tanh 这样的函数来引入非线性,从而允许对更复杂的任务进行计算。如果没有激活函数,深度神经网络将充当简单的[线性回归模型](https://quantra.quantinsti.com/course/trading-with-machine-learning-regression target=)。
以下是一些使用的激活功能的示例:
- Tanh: 避免梯度偏差
- 整流线性单元(ReLU): 用于图像处理
- Softmax: 保留离群值的相关性
除此之外,我们还为每一层添加了一个**“偏置”神经元**,以使激活函数能够沿 x 轴向左或向右移动,从而使我们能够更好地拟合激活函数。当输入为绝对零时,作为常数项的偏置项也作为输出。
深度神经网络的处理
该处理开始于使用从输入层接收的输入来计算第一隐藏层中每个神经元的加权和。加权和是输入与每个连接的相应权重的乘积之和。
对应于每一层的激活函数然后作用于这些加权和,以给出最终输出。这个过程也可以称为正向传播。
处理完成后,将预测输出与实际输出进行比较,以确定误差或损失。为了使深度神经网络准确工作,必须最小化该损失函数,以使预测输出尽可能接近实际输出。当我们最初为深度神经网络中的连接选择随机权重时,它们可能不是最佳选择。
因此,为了最小化损失函数,我们需要调整权重和偏差以获得准确的结果。反向传播是用于调整权重和偏差的过程,以便我们获得权重和偏差的最佳值,从而使我们的结果更准确。
深度学习应用
这篇关于“深度学习简介”的博客涵盖了深度学习的定义、差异、历史和应用,并帮助我们了解人工深度神经网络是如何工作的。
现在,我们已经熟悉了深度学习的介绍,我们可以继续前进,获取更多关于它的知识。在下面的课程中,你还可以学习如何使用深度学习和神经网络进行 Python 交易。
你可以在 Quantra 上注册神经网络教程,在这里你可以使用先进的神经网络技术和最新的研究模型,如 LSTM & RNN,来预测市场和寻找交易机会。Keras,使用相关的 python 库。
推荐阅读
- 用于股票价格预测的神经网络的工作
- 训练用于股票价格预测的神经网络
- Python 中的人工神经网络使用 Keras 预测股价走势
- 深度学习——使用 Python 中 TensorFlow 的人工神经网络
- RNN、LSTM 和 GRU 进行交易
免责声明:本文中提供的所有数据和信息仅供参考。QuantInsti 对本文中任何信息的准确性、完整性、现时性、适用性或有效性不做任何陈述,也不对这些信息中的任何错误、遗漏或延迟或因其显示或使用而导致的任何损失、伤害或损害承担任何责任。所有信息均按原样提供。
蒙特卡洛分析简介
原文:https://blog.quantinsti.com/introduction-monte-carlo-analysis/
本文最初发布在 Quants 门户网站上。
安德森等人(1999)将充满神秘色彩的蒙特卡洛定义为通过模拟变量函数的样本均值来逼近期望值的艺术。在斯坦·乌兰姆和约翰·冯·诺依曼(Anderson,1999 年)之间,蒙特卡罗(Monte Carlo)一词曾被用作建造更好的原子弹的随机模拟的一个代号,后来演变成一种用于多种学科的方法,包括物理、金融、力学,甚至用于城镇规划和人口研究等领域。
蒙特卡罗方法与确定性方法非常不同(麦克雷什,2004)。在确定性模型的情况下,在给定解释变量的情况下,因变量的值只能是由数学公式给出的唯一值。这种模型不包含随机成分(Rotelli,2015)。相比之下,蒙特卡罗并不求解显式方程,而是通过模拟单个粒子并记录其平均行为的某些方面(记录)来获得答案(Briesmeister,2000 年)。考虑到蒙特卡罗方法的广泛应用和涉及的问题,我们将这篇文章分成三个部分,以便有一个清晰的理解。
首先,我简要介绍了蒙特卡罗方法的历史,然后以物理学中的一个例子为例强调了它的一些用途,并展示了它在金融中的必要性,最后介绍了统计驱动的重要性抽样。
在以后的著作中,我们将更深入地研究技术方面的东西,给出重要概念的严格定义,然后继续讨论马尔可夫链蒙特卡罗(MCMC ),因为它们在最近的蒙特卡罗计算中起着重要作用。在我的最后一篇文章中,我将结合所有这些方面,形成对称为蒙特卡罗方法的“黑箱”的坚实而全面的理解,重点关注 Metropolis-Hasting 算法,并探索乌兰和冯诺依曼创造的未来可能性。
蒙特卡洛的历史
正如一个苹果落在牛顿的头上点燃了一股新的科学潮流,斯坦·乌兰不得不生病才能发现后来成为大量科学问题答案的东西。尽管乌兰和冯·诺依曼形式化并创造了术语蒙特卡罗,但近似方法的早期证据仍然存在。最引人注目的是布丰的针实验。这个实验如下:
一根长度为 L 的针以随机的方式被扔在一个光滑的桌子上,桌子上划有平行线,平行线之间的距离为 2L。观察者记录指针是否与一条直线相交。从实验中推导出,随着样本的增加,针头越线的概率趋于 1/pi。”(舒斯特,1974)。
1964 年,乌兰躺在病床上,不知道用 52 张牌拼成的坎菲尔德纸牌游戏能否被成功观察到。经过一些思考并使用纯数学方法,他玩了 100 次游戏,记录了所有成功的玩法,赢的比例反映了拿到一手好牌的几率。他获得了他的结果,很快他就提出了大多数数学物理和微分方程的问题,这些问题将从这种实用的计算方法中受益。那年晚些时候,他把这个想法传授给了约翰·冯·诺依曼(埃克哈特,1987),他们开始研究更复杂的计算问题,后来又研究核武器。
蒙特卡洛这个名字的灵感也来自于摩纳哥的轮盘赌游戏,这是一种简单的产生随机数的游戏。另一个有点滑稽的动机是因为乌兰的叔叔喜欢去蒙特卡洛玩轮盘赌,因为这是以他的名义。
蒙特卡罗的应用
如上所述,蒙特卡罗方法可以应用于许多研究领域。最早的应用是由发明人完成的,其中他们使用 MC 方法来解决使用电子数字积分器和计算器(ENIAC)的裂变装置中的中子扩散和倍增问题。这后来发展成为 MCNP。
在物理科学中的应用
蒙特卡罗 N 粒子(MCNP)是一个通用的、连续能量的、广义几何的、依赖于时间的、耦合的中子/光子/电子蒙特卡罗输运程序。它可以用于几种传输模式:仅中子、仅光子、仅电子、中子/光子组合传输,其中光子由中子相互作用产生、中子/光子/电子、光子/电子或电子/光子。
虽然术语可能会令人困惑,但假设对蒙特卡罗方法知之甚少,也没有 MCNP 的经验,朱迪思·f·布里斯米斯特认为,当然,通过实践,即使是新手也可以掌握概念(布里斯米斯特,2000)。
在金融领域的应用
MC 方法已被证明是现代金融中一种有价值且灵活的计算工具。重点关注资产定价:基本证券及其基础状态变量通常被建模为连续时间随机过程。蒙特卡洛方法被用于评估以预期表示的证券价格只是一个时间问题(Boyle,Broadie,& Glasserman,1997)。由于 MC 方法在处理日益复杂的金融工具方面的灵活性,我们可以清楚地看到 MC 方法在衍生产品和其他金融产品定价中的必要性。本文的第三部分提供了一个在金融中使用蒙特卡罗方法的详细例子。
重要性抽样
重要抽样是选择一个好的分布来模拟随机变量(Anderson E. C .,1999)。从直觉上讲,我们必须从重要区域获取样本,以便获得准确的结果。这是通过对样品中的重要区域进行加权来实现的;因此得名重要性抽样。与其名称的重要性相反,抽样本身并不是抽样,而是一种近似方法。现在让我们以直观的方式探索重要性抽样:
假设我们希望对某一因素进行分析,但没有相关数据可供我们进行分析,或者我们现有的数据不能提供足够的结果。然后,我们生成一个符合以下特性的随机样本:
设 g(x)为原始样本分布(如果存在),h(x)为建议样本分布。
- h(x)应该接近与|g(x)| 成正比
- 从 h(x) 中模拟数值应该很容易
- 对于可能实现的任何值 x,计算密度 h(x)应该是容易的。
遵守这些要求可能很难需要足够的时间投入,但在处理上述两个问题时证明是有效的。我选择在这个阶段包括重要性抽样,因为它对以后的讨论更有启发性,尤其是关于蒙特卡罗改进技术。我们会发现重要抽样和马尔可夫链之间有着重要的关系。
我们已经将蒙特卡洛定义为一种广泛使用的近似技术,并了解了它有趣而又有些悸动的历史(悸动是因为这个名字的本质是与炸弹构造联系在一起的)。从冯·诺依曼使用 ENIAC 到现代计算机使用,MC 在数据/过程的模拟和操作中发挥了重要作用,这对我们的生活方式以及如何与世界互动产生了巨大影响。
在本文的下一部分,我们将更深入地探讨 MC 中固有的其他组件,并讨论 Metropolis-Hasting 算法作为蒙特卡罗马尔可夫链过程的一个特例。
马氏链、中心极限定理和 Metropolis-Hastings
在文章的前一部分,我给出了蒙特卡罗的一般概述,并介绍了重要性抽样。现在,我们通过对一些被广泛使用但却被误解或由于其重要性而被普遍忽视的概念给出严格的定义来进行更深入的探讨。此后,我们探讨了 Metropolis-Hastings 算法,它构成了许多马尔可夫链蒙特卡罗方法的基础。
马尔可夫链蒙特卡罗
在普通蒙特卡罗之后不久,洛斯·阿拉莫斯发明了马尔可夫链,他使用计算来获得这种模拟。这些链通常是从各种算法中获得的,其中 Metropolis 算法是最早期的,也是最重要的,因为它为 Metropolis-Hasting 算法等更复杂的算法铺平了道路。由于蒙特卡洛积分从要求的分布中抽取样本,并形成样本平均值以逼近期望值,因此马尔可夫链蒙特卡洛通过长时间运行巧妙构建的马尔可夫链来抽取这些样本(吉尔克斯、理查森、&【施皮格尔哈特】
让我们在此给出一些重要术语和概念的严格定义(一些定义摘自 Geyer C . J:Markov Chain Monte Carlo 简介):
定义
马尔可夫链: 一个序列 X 1 , X 2 , X 3 ,…某集合的随机元素的条件分布若为*Xn+1*给定 X 从这个定义中,我们看到,为了计算下一个随机变量,我们只需要当前的信息,而不需要我们当前所处的位置,从而大大减少了花费在寻找和计算时间上的时间。
可逆性: 一个转移概率分布相对于初始分布是可逆的,如果,马尔可夫链的 X 1 , X 2 , X 3 ,… 对的分布是可交换的。可逆性简化了中心极限定理(CLT)的应用,因为当这个性质成立时,CLT 的条件要简单得多。
平稳性: 一个随机过程(x t : t 在参数空间的一个元素中)是平稳的如果所有的 X t 具有相同的均值、方差和自相关
中心极限定理: 为平稳的、不可约的、可逆的马氏链和 和 以及方差σ 与σ 有限则
其中
为样本估计。我们可以进一步用一种通用的方式解释如下:对于任意随机变量序列 X 1 、 X 2 、 X 3 、… 用 X 1 、 X 2 、 X 3 值得注意的是,各种形式的 CLT 的存在都有其特定的要求
蒙特卡罗估计和中心极限定理
为了使用 CLT 来估计蒙特卡罗误差(这里没有讨论,但同样重要),我们需要方差的一致估计,或者至少是渐近分布已知的方差估计(Geyer,1992)。已经提出了许多方差估计方法,大多数来自时间序列文献,并且适用于任意平稳随机过程,而不仅仅适用于马尔可夫链(Geyer,1992)。我们现在来看一个标准时间序列的方法。
非重叠批量是指
在非重叠批次均值下(批次:为 n 项马尔可夫链保守迭代的子序列 X 1 , X 2 ,…。 X T 同样,中心极限定理将适用于每一批。
批次平均值由给出
这个方差将用于计算我们的中心极限定理。
Metropolis-Hasting 算法
Metropolis-Hastings 算法由以下步骤给出 x【t】
1 生成
2 乘
我们称 p(x,y) 为接受概率。通过执行这个过程,我们得到所谓的大都市加速马尔可夫链 X 1 , X 2 ,…。*XT*同 X T 大致按(x) 分布。(f(x) 是我们可能认为我们理想的样本分布)对于大 T 。(Kroese,Taimre,& Botev,2011 年)。
Metropolis-Hasting 背后的主要目的是模拟一个马尔可夫链,使得这个链的平稳分布与目标分布一致。
尽管 MC 方法通常比传统数值方法更有效,但其实施可能非常困难,且在时间和分析上计算昂贵。黑斯廷斯提出了一个源于 Metropolis 等人(1953)的广义方法。这种采样方法的主要特点是
- 计算依赖于 p(x) 仅通过 p(x’)/p(x)形式的比值,其中 x’和 x 是样本点,不需要因式分解 p(x) 也不需要确定归一化常数
关于 Metropolis-Hastings 有更多的文献,但我们强调的在这一点上已经足够了。理想情况下,我们试图用 Metropolis 这样的算法做的事情是拿出一个尽可能接近现实的样本,从而确保在尽可能现实的设置下测试任何提议的模型。
到目前为止,我们已经收集了足够的理论知识来构建一个可用于投资的策略。在文章的最后一部分,我们将利用 uptil 现在开发的所有概念来评估它们的重要性。
金融应用
在蒙特卡洛领域,存在大量的应用。在这最后一部分,我把所有以前的工作结合在一起,并把我们到目前为止收集的理论付诸实践。
应用 Metropolis-Hastings 算法
从上一节中,我们推出了一种方法,通过这种方法,我们可以使用任意因子生成一个样本,这些因子组合起来可以相当准确地反映现实
为了绝对简单起见,我们将只考虑我们希望建模的一个变量,但该流程适用于资产组合或这些资产的衍生品,只需进行最小的调整。在这里,我们利用动态资产定价来估计均衡,并利用均值回归理论作为我们策略的基础来开发套利机会。我将忽略实际的计算,以便直观地理解这里开发的理论的用法:
- 假设资产 A 具有相当大的波动性,我们希望利用这一观察结果。我们拥有的算法使我们能够模拟我们自己的股票运动,并将其与 A 的运动相匹配。
- 假设布朗运动为我们的 q(x) (建议分布)我们应用 Metropolis-Hastings 算法记录所有观察值。
在这一点上,我们有两种可供选择的方法用于比较:
备选方案 1:由于我们有一个明确的流程,我们可以根据观察到的趋势直接绘制出这个伪趋势,然后根据价格差异做出交易决策。然后,我们构建一个程序,根据两者之间的关系做出买卖决定。
- 当生成的过程高于资产价格时,这将反映买入,因为我们假设价格将缩回到我们的模型中(记住,我们的模型给出了一个平稳分布,这意味着随着时间的推移,价格将收敛到这个稳定状态(Johannes & Polson,2002))
- 对于低于资产价格的生成流程,将执行卖出触发器。
备选方案 2:为了进一步加强我们的决策,我们可以使用基于生成的样本路径的回归模型。通过这样做,我们甚至能够假设资产 A 运动的未来趋势,同时了解和控制当前的价格波动。同样,在第一模型中应用的交易决策也可以使用回归模型作为基准来应用。
这是一个过于简化的模型,只给出了一种可能的用途。布朗运动的使用作为我们的 q 被包括在内,这是基于它的特性来模拟金融运动,并在其计算中包括噪声(Morters & Peres,2008)。此外,虽然从理论上讲,我们没有对 q 进行限制,但重要的是要注意,建议密度的选择通常会影响算法的性能。(约翰内斯&波尔森,2002 年,第 26 页)
障碍选项和重要性抽样
在描述和使用选项时,我们几乎总是考虑普通选项,并假设这同样适用于外来类型。我会走一条稍微不同的路,考虑一个奇特的选择;准确地说是障碍选项。下面的例子是从 Kroese D,P Taime T 和 Botev Z,I 的《蒙特卡洛方法手册》中摘录的:
考虑一个下跌买入期权,有一个受监控的障碍,到期时的收益由给出
其中
用和
来表示 k = 1,2,3,…。期权中出现正收益的情况很少,因此期权价格的计算很大程度上取决于这种情况的出现。因此,估计稳健概率是必要的,重要抽样可能会发挥巨大作用。
此外:为了获得一个好的阳萎抽样密度,我们使用了所谓的交叉熵方法。这其中包括获取一个格式的 pdf
其中 标准正态随机向量ζ的 pdf。可以通过使用被称为“打了就跑”算法的 Metropolis-Hasting 算法的变体来获得所提出的 pdf 的进一步增强。
结论说明和总结
Metropolis-Hastings 方法有一个巨大的应用,我们可能不会在单个博客系列中讨论它,尽管它只是在 20 世纪 90 年代才被普遍接受(Hitchocock,2012)。Metropolis-Hastings 算法的各种修改,包括独立采样器和随机漫步采样器,进一步提供更相关的预测。黑斯廷斯看到了位于大都市中心的马尔可夫链的转移矩阵,将他的目标分布呈现为马尔可夫链的π(x)的不变分布(Hitchocock,2012,第 155 页),如前所述,这一特征重塑了许多学科。
在一天结束时,所有这些练习的全部目的是想出一个接近真实但在我们控制范围内的样本。考虑到这一点,存在许多旨在利用关于模型的已知信息来获得更准确估计值的方差缩减技术(Kroese & Rubinstein,2008)。我们在第二部分中简要地提到了一种这样的技术,即非重叠批处理方法。其他众所周知的可能提供适度方差减少的技术包括使用控制和/或算术随机变量、分层抽样(Kroese & Rubinstein,2008 年)和最受欢迎的重要性抽样。(克罗泽,塔米姆雷,&博特夫,2011 年)
Kroese 等人认为重要抽样是最重要的方差缩减技术之一(2011 年,第 362 页),更重要的是它能够找到罕见事件概率的估计值。与本系列中讨论的大多数主题一样,这里只给出了介绍性材料,在学术文献中可以找到大量采样方法的推导。
对于稳健的结果,包含交叉熵是有益的。交叉熵方法的目的是获得密度,使得该密度和最佳密度(实际)之间的距离尽可能小。加权重要性抽样是与金融市场最相关的一种变化,因为它将更多的权重分配给对过程有重要输入的因素。
综合运用所有这些方法将会大大提高回报,大幅降低风险,并有助于形成稳健的投资策略。
参考书目
- 安德森(1999)。 蒙特卡罗方法和重要性抽样。
- 博伊尔,p .,布罗迪,m .,&格拉斯曼,P. (1997)。证券定价的蒙特卡罗方法。经济与控制学报,1267-1321。
- Briesmeister,J. F. (2000 年)。【MCNP 】-一个通用的蒙特卡罗 N 粒子输运代码。
- 埃克哈特(1987 年)。 斯坦乌兰、约翰·冯·诺依曼和蒙特卡洛法。 从 ScienceMadness.org 获得的。
- 盖耶,C. J. (1992)。实用马尔可夫链蒙特卡罗。统计科学第 7 卷第 4 期,473-483 页。
- 吉尔克斯,W. R .,理查森,s .,&施皮格尔哈特,D. J .(未注明)。介绍马尔可夫链蒙特卡罗。
- 希区柯克博士(2012 年)。大都市加速算法的历史。,254-257 页。
- 约翰尼斯,m .,&波尔森,N. (2002)。 MCMC 金融 e .T5】
- Kroese,D. P .,Tamimre,t .,& Botev,Z. I. (2011 年)。 蒙特卡洛方法手册。 新泽西霍博肯:约翰·威利&父子公司
- Kroese,D. P .,& Rubinstein,R. Y. (2008 年)。 模拟和蒙特卡洛法。 新泽西:约翰·威利&父子公司
- d . kro ese,t . taim re,& Botev,Z. I. (2011 年)。蒙特卡罗方法手册。新泽西:约翰·威利&的儿子们。
- 莫特斯,p .,&佩雷斯,Y. (2008 年)。 布朗运动。
- 麦克雷什博士(2004 年)。 蒙特卡洛模拟和金融。
- 罗泰利,F. (2015 年)。 随机过程。 比勒陀利亚。
- 舒斯特,E. F. (1974)。 布冯的针实验。 美国数学协会。
- 许,,张,张,(2010)。均值风险优化和投资组合选择的蒙特卡罗方法。南汉普顿大学。
免责声明:这篇客座博文中提供的观点、意见和信息仅属于作者个人,并不代表 QuantInsti 的观点、意见和信息。本文中所做的任何陈述或共享的链接的准确性、完整性和有效性都不能得到保证。我们对任何错误、遗漏或陈述不承担任何责任。与侵犯知识产权相关的任何责任由他们承担。
投资组合管理简介
原文:https://blog.quantinsti.com/introduction-portfolio-management/
马里奥·皮萨·培尼亚
对投资组合管理的权威解读,这篇博客是一篇介绍性文章,也是你的指南。它解释了你需要了解的关于投资组合管理的所有知识,比如技术、类型、衍生品等等。
以下是我们在这篇文章中所涵盖的内容:
- 什么是投资组合管理?
- 投资组合管理的定义
- 什么是投资组合管理技术?
- 投资组合管理的类型
- 投资组合管理中的资产类别
- 衍生品和投资组合管理
- 投资组合管理的传统方法
- 衡量投资组合回报的工具
- 投资组合的回报率差异
- 结论
什么是投资组合管理?
投资组合管理是一个非常通用的术语,用来指经理管理资产组合的风格。
在金融市场上,有许多资产可供选择,如股票和公司债券、国库券、商品、货币、指数、期权、房地产投资信托基金等等。因此,有必要应用管理技术来管理可以界定一些关键方面(如风险和预期回报)的资产组合。
不幸的是,我们不可能获得零风险的无限回报,因为一个依赖于另一个,如果我们想增加投资组合的回报,通常会以承担更多风险为代价。
项目组合管理的定义
根据定义,
有效的投资组合被定义为在给定回报下风险最小的投资组合,或者说,在给定风险水平下回报最高的投资组合。
仅在纽约证券交易所,就有超过 2800 家上市公司,而在美国的衍生品市场,芝加哥商业交易所,也有数千种合约可供选择。如果我们也考虑国际市场,选择的数量实在太多了。
因此,无论我们管理的是 10 万美元的资本还是数十亿美元的资本,拥有有助于选择适当工具的工具都是很方便的,或者说,建立一个允许包含指定风险并使回报最大化的投资组合也是一样。也就是说,使用投资组合管理技术。
什么是投资组合管理技术?
投资组合管理技术允许我们,至少不承担不必要的风险,来限制每一项投资和整个投资组合的风险。它有助于尽可能提高绩效,并能够分析和比较使用相同管理风格的其他投资组合。它们也允许我们对未来做一个假设,并回答“如果”这个问题。
虽然投资组合管理不是一门精确的科学,因为它处理的是未来的不确定性,但它允许我们有一个适当的框架来做出投资决策。
投资组合管理的类型
因此,我们认为有必要对管理风格进行分类,例如,可以分为以下几组:
-
被动管理投资组合:通常,被动投资组合的经理认为,实际上不可能获得比市场本身更高的业绩,因此他们只限于跟踪市场。
-
**主动管理投资组合:**这些投资组合经理认为,如果有可能获得比市场更高的回报,因此通过更积极的投资组合管理,理论上他们能够获得 Alpha (Alpha 是相对于市场的超额回报)。出于比较的目的,了解投资组合的贝塔系数也是很有意思的,因为这表明了它与市场的偏差。
-
激进管理型投资组合:他们是有能力发现和利用市场无效性的投资组合经理,他们带着市场偏见进行投机。
还有必要将不同类型的资产分为可管理的类别,为此我们已经提到了一些可能的资产类别,但它们也可以按风险、资本化、国家、部门、价值或增长等进行分类。
面对如此多样的风格和资产,投资组合管理技术使我们能够标准化管理技术,并对业绩和风险进行充分的衡量,从而为每种类型的投资者创建不同的投资组合。
既然任何投资组合都是由资产组成的,那么让我们试着定义一些我们能在投资组合中找到的最常见的资产。
投资组合管理中的资产类别
投资组合的典型组成部分包括:
- 股票或权益
- 结合
- 现金
股票或权益:这些资产被认为是高风险的,因此提供了获得高回报的机会。它们还可以按国家、部门和/或资产价值或增长细分,前者往往提供股息,而后者往往不提供股息,但回报通常高于市场。此外,他们在股东大会上提供权利,因为事实上,股东拥有公司。(有时 A 类和 B 类股票也有例外,后者不提供投票权。)
**债券:**这些资产被认为是低风险的,因此提供适中的回报,好处是从一开始,投资回报就是已知的。这些资产是借给政府和公司的贷款,到期日和固定回报或一定频率的息票支付是预先确定的。它们还可以细分为公司或政府债券、到期日、评级等。
**现金:**我们必须预见到我们投资组合的资金,因为它不会总是 100%投资,有时现金可以用于在货币市场上进行操作,风险可以从很低到很高,这取决于所选择的货币。
衍生品和投资组合管理
另一方面,有些衍生产品,顾名思义,其价值(以及回报)来自基础产品。
一些最著名的衍生品有:
- 期货
- 选择
期货
期货是双方之间的合约,一方在未来某个交割日期买入/卖出资产,另一方卖出/买入该资产。该合同由清算所担保。
到期时,双方都有义务,一方交付货物,不管当前的市场价格如何,另一方有义务接收货物,不管当前的市场价格如何,因为价格是在交易时确定的。
尽管需要明确的是,交易商通常不会在到期日之前保持合约未平仓,因为他们通常持有投机头寸。
期货价格来源于一种基础资产,如股票指数、商品等。
在这里我们可以发现:
- 指数(道琼斯、标准普尔 500、纳斯达克、罗素 2000 等。)
- 贵金属(金、铂等。)
- 工业金属(铜、铅等。)
- 能源(石油、天然气、乙醇等。)
- 农业(大豆、豆类、玉米、小麦等。)
- 软(肉、活牛、橙汁、糖、棉花等。)
请注意,你也可以通过 ETF 投资这些产品,就像投资股票一样,尽管 ETF 值得单独研究。
选项
期权是一种工具,其中一方购买在某一日期以固定价格购买/出售资产的权利,另一方出售该权利,这种操作由清算所保证。期权价格来源于基础资产,如股票、股票指数、商品等。
最后,还有其他不太常见的投资工具,但根据所设计的投资组合,这些工具可能对多样化有吸引力
- 房地产投资信托基金,
- OTC(场外)操作,如
- 认股权证,
- 风险投资公司,以及
- 可以为特定客户创建的特定产品等。
如你所想,这个列表既不完整也不详尽,但是它包含了投资组合管理中最流行的工具。
我们还看到,为了帮助您选择最适合您的管理策略的工具,可以用不同的方式对工具进行分类。
除了种类繁多的可用金融工具外,在决定采用哪种工具时,还必须考虑其他因素,如波动性、流动性、信息可用性和交易成本。
有了所有这些要素,我们显然需要一个框架来促进投资组合管理,帮助我们选择特定时刻的最佳资产,界定要支持的风险水平,以及建立回报目标。
从行业的角度来看,同样重要的是建立标准指标,允许将投资组合的表现与行业的其他表现进行比较。
投资组合管理的传统方法
投资组合由资产组成,投资组合经理负责决定将哪些资产纳入投资组合。为此,有两种传统的方法
- 自下而上的方法
- 自顶向下分析法
自下而上的方法
这种方法根据分析师定义的标准进行资产选择,如市盈率、相对优势、行业等等。这种技术通常被称为选股。
自上而下的方法
在自上而下的方法中,分析师将选择行动的任务划分到过滤器中,从数量上减少了可包含在投资组合中的选项的数量。例如,可以通过分析来决定我们要投资的市场或国家,然后决定投资的行业,最后,根据某种标准(例如相对实力)来挑选股票。
衡量投资组合回报的工具
其他简单而强大的工具用于衡量回报,在这些工具中,我们可以找到:
-
**算术回报:**资产的确切回报可以通过“t”时间的价格减去“t-1”时间的价格加上股息(如果有的话)除以“t-1”时间的价格来衡量。
-
**对数回报:**资产的回报可以用“ln”来衡量,即时间“t”的价格加上股息(如果有)除以“时间-1”的价格。这个度量是聚合的,允许我们简单地通过添加简单的句点来计算任何返回长度。
-
**几何收益率:**或复合几何收益率,计算投资在整个期间的实际增长率。
-
**投资组合回报:**这里有几种方法,因为投资组合可以有简单或复杂的管理,组成投资组合的资产可以提供股息、股份支付、分割、资本流动、杠杆等。尽管我们可以用算术回报来计算给定时期的投资组合表现。我们将取 t 时刻投资组合的初始值,减去 t-1 时刻投资组合的价值,加上股息(如果有),再除以 t-1 时刻投资组合的价值。
-
**相对回报:**了解一个投资组合的表现本身就是一个指标,它只提供了一个关于经理创造回报能力的数据,但如果我们把它与同类的其他回报放在一起看,这个数据就变得更加相关了。例如,如果我们的投资组合由纽约证券交易所的股票组成,我们可以将它的表现与标准普尔 500 指数进行比较,或者我们可以将它与拥有类似特征的投资组合和风格的其他经理的表现进行比较。
投资组合的回报率差异
最后,衡量资产风险的最简单的工具是回报率的方差,它让我们了解相对于平均值的离差,但当然,投资组合中的资产会受到其他需要量化的风险的影响。Markowitz 是最早对风险及其特征进行研究的人之一,他发展了现代投资组合理论,并证明了多样化的好处,尽管他假设收益遵循正态分布,正如我们将看到的,这不是市场的真实行为。
这项研究是我们将在这一系列文章中看到的其他模型的基础,如资本资产定价管理(CAPM) 。
结论
在关于投资组合管理的文章系列中,我们将探讨一些构建投资组合的理论和策略,如资本资产定价管理(CAPM)、 Fama-French 三因素模型或多策略投资组合。
如果我们没有控制投资组合的风险/收益,就不会有管理,我们将在本系列中看到关于风险/收益分析的帖子。
当我们建立投资组合并进行风险/收益分析时,我们可以使用优化技术来帮助我们最大限度地提高性能,如蒙特卡洛分析或 ML 技术。最后,我们将看看 ML 和日内风险投资组合管理技术。
在这门关于量化投资组合管理的课程中,你可以学习如何使用各种量化技术构建投资组合和管理风险。
参考文献
- 投资组合理论和业绩分析
- 拉尔夫·文斯的投资组合数学手册
- 使用资本资产定价和 Fama-French 三因素模型的现代投资组合管理- EPAT 项目
- 计算协方差矩阵和投资组合方差
- 投资组合分析:计算风险和回报
- 使用蒙特卡洛模拟的投资组合优化
- 投资组合分析:绩效测量和评估
- 多策略投资组合:有效结合量化策略
*免责声明:股票市场的所有投资和交易都涉及风险。在金融市场进行交易的任何决定,包括股票或期权或其他金融工具的交易,都是个人决定,只能在彻底研究后做出,包括个人风险和财务评估以及在您认为必要的范围内寻求专业帮助。本文提到的交易策略或相关信息仅供参考。*T3】
价格行动交易简介[网上研讨会]
原文:https://blog.quantinsti.com/introduction-price-action-trading-webinar-18-october-2022/
https://www.youtube.com/embed/j0xjch0L9aw?rel=0
演示幻灯片
//www.slideshare.net/slideshow/embed_code/key/yk1KuulbLcorgQ
Price Action Trading - An Introduction from QuantInsti
关于会议
这节课通过理解价格行为,向你介绍不使用技术指标交易的技巧。它涵盖了几个重要的价格行为交易工具,如供求分析,模式,支点等。
- 价格行为交易的需要
- 价格行为交易的基础
- 价格行为交易工具
- 回溯测试和评估价格行为交易策略
- 价格行为交易自动化
- 互动问答
扬声器
Varun Kumar pot hula(QuantInsti 的量化分析师)
Varun 拥有金融工程硕士学位。他拥有交易员、全球宏观分析师和 algo 交易策略师的工作经验。目前,作为一名量化分析师,他在 QuantInsti 的内容和研究团队工作,他的贡献有助于为算法和量化交易领域的学习者提供服务。
本次活动于:
2022 年 10 月 18 日星期二
东部时间上午 9:30 | IST 时间晚上 7:00 |新加坡时间晚上 9:30
金融学中贝叶斯统计的简明介绍
原文:https://blog.quantinsti.com/introduction-to-bayesian-statistics-in-finance/
由 Vivek Krishnamoorthy
This post is intended to be the first of a multi-part series on Bayesian statistics and methods in quantitative finance. My write up here is a short introductory post that went rogue.
动机
I must confess that when I first encountered the Bayesian approach to inferential statistics in my formal education, it was tough going. The material I read and the teachers who taught me were excellent but it took months before I could fully appreciate them. I spent countless hours trawling through the internet (blogs, websites, online forums, etc.) and other traditional sources (books & academic journals) trying to build a fundamental understanding of this subject. I managed to get there eventually. My aim here is primarily, to help you, the reader, learn from my missteps. This entire series attempts to provide an intuitive feel for Bayesian statistics and its applications without getting too caught up in the scary math. We are dealing with an exciting and challenging subject so I must warn you that it will demand of you both effortful thinking and hard work. My secondary aim is to stave off (at least for a little while) the question asked of me by colleagues, friends and family - “When will you be done writing?” If these posts pique your curiosity to explore further, a lot of good stuff is available both in print and on the web with varying levels of complexity. I will point you to some of these resources in the coming posts.
谁应该读这篇文章?
The main prerequisite for understanding these notes is some exposure to probability theory and statistics. I seek to introduce Bayesian statistics in an accessible way to readers who have some conversance with classical statistical analysis (which is mostly any kind of inferential analysis you may have studied so far unless stated otherwise). I have tried to find a middle ground between scientific rigour where theorems are proved and a purely empirical approach dictated by observations and analysis minus any theorems. I hope that readers are comfortable with some of the concepts I have listed below. If a number of them are unfamiliar to you, I would recommend you acquaint yourself with some of them to profit from the time and effort you invest here. This glossary can give you a once-over if you are looking for something quick and dirty. An overview of these ideas should suffice; you do not need exceptional mathematical sophistication. The ideas will get clearer as you work with them here and elsewhere.
连续和离散随机变量;分配;期望值;方差:概率分布函数(PDF);概率质量函数(PMF);最大似然估计;贝叶斯定理;条件概率;边际概率;伯努利、二项式、正态、高斯、伽玛、贝塔、学生 t 分布;人口;样本;样本均值;样本方差;人口平均数;人口方差;协方差和相关性。
I would urge you to pick up a pencil and paper to work out the derivations or exercises that crop up through this series. I sometimes don’t spell out every step of the way. So it will help you both, fill in any missing details, and sharpen your own understanding of the topic.
本帖意图
In this post, I set the stage for our grand endeavour by providing a gentle introduction to Bayesian statistics, a branch of statistical analysis founded on Bayes’ Theorem. I contextualize it by first covering some ground on the two main schools of thought in statistical analysis viz. the frequentist and the Bayesian. I then proceed to establish how the differences between them impact their respective philosophical styles. Once we do this, I pick an example to get us comfortable with the Bayesian approach to probabilistic problems. I conclude my article with stating Bayes’ Theorem and display its formal use with another example. My presentation of example, theorem, example is by design. This should hopefully help us make the connection between the illustrations and the underlying principles they embody. Let’s get started.
布置背景
Imagine a scenario where a data scientist or an economic researcher has collected data about a phenomenon that she is studying. This data may be collected by observing a number of subjects at a certain point in time (cross-sectional data) or by observing a subject over a number of time periods (time-series data). It could also be a combination of cross-sectional and time-series observations i.e. observing a number of subjects tracked over multiple time periods (panel data). In econometric studies, these subjects are usually individuals, firms, regions, or countries and the time-periods are yearly, quarterly, daily or higher frequencies. In quantitative finance, we typically track the movements of different asset classes through time. A short excursion: The data that econometricians (I use this as a motley term to include quantitative analysts, financial economists, empirical economic/financial researchers and even some data scientists) work with are almost always observational. This is fundamentally different from the data generated via controlled experiments in many of the pure and applied sciences (like medicine, physics, engineering, etc.). Coming back to the main story, a key choice that our researcher would need to make is the approach to statistical inference i.e. using frequentist statistics or Bayesian statistics. This is an important choice point and a good place to tee off on our journey. I now proceed to compare and contrast classical (frequentist) statistics and Bayesian statistics in drawing inferences.
哲学背景
Statistical analysis and the subsequent inferences we draw from it are based on probability theory. The way in which probability is defined and interpreted has created two schools of statistical thought, viz. frequentist statistics and Bayesian statistics. The frequentist worldview (also called the classical or traditional approach) refers to the philosophical approach of Ronald Fisher. It views the probability of an event as the long run frequency of occurrence of that event (hence the name). We would, therefore, measure the probability of that event as the frequency at which it occurs after repeating the experiment ad infinitum. However, this is not always possible in practice. For instance, if we want to compute what the probability of a global recession occurring in the coming year is, we do not have a large sample of data available since we only have reliable economic data for about a century or so. In cases like these, frequentists use theoretical results and techniques to arrive at the probability of occurrence. I’ll elaborate a little more on this as we move along. So in summary, for frequentists, the probability is inextricably tied to the long run frequency of occurrence of events. The Bayesian (named after its discoverer Thomas Bayes) worldview of probability is more visceral. It interprets probability as a subjective opinion i.e. it is a measure of belief or plausibility that we have of an event occurring. We update our opinions (as measured by probability) as and when we receive more information. Simply put, for Bayesian decision makers, the probability is a statement of an individual subjective opinion. While I do highlight the subjective nature quality of our definition here, I must hasten to add that the axioms of probability still need to be satisfied. This philosophy of quantifying our beliefs or opinions as a probability comes quite naturally to us. One of the basic principles of learning is to assimilate the information that arrives from the external environment and update our extant knowledge (what we casually refer to as common sense) with this newly acquired information. This is the kernel of the Bayesian worldview which animates the Bayesian statistics enterprise. This is also how we operate in the real world where we form beliefs (and by extension, assign probabilities) based on what we know. Let’s say we assign a certain probability to a particular candidate winning the elections six months from now. As time passes by, we would continually update our beliefs or opinions (as measured by the probability of the candidate winning) based on news reports, opinion polls, etc. so as to reflect the changing realities. The divide between frequentists and Bayesians is fundamentally one of philosophy which I show has wider ramifications in their differing approaches to statistical analysis.
频率主义者 v/s 的主观概率
One of the enduring controversies in probability theory is about the type of events where probabilities (in the frequentist sense) can be defined. I had briefly alluded to it earlier in a case where the experiment could not be performed repeatedly. As per the frequentist definition, the only situations where probabilities hold any meaning are those where we examine the relative frequency of occurrences of an event as the number of observations tends to infinity i.e. where k is the number of occurrences of the event and n is the number of repetitions of the experiment. This method of assigning probabilities creates two issues. First, even in cases where the experiment is recurrent, it requires us to conduct the experiment an infinite number of times which is impossible. The second is a more serious issue. We are unable to assign probabilities to events which are not the outcomes of repeated experiments. This would not please the Bayesians among us who take a more subjective view of probability. They view probability as a reflection of their uncertainty about the state of the world. The way they see it, probability and uncertainty are tautological. A Bayesian decision maker would assign probabilities to the outcomes of repeated experiments and also to statements about the winner of the next national election (i.e. the outcome of a non-recurrent experiment). I linger on these differences and flesh it out a little more in the following section.
细节决定成败
The frequentist approach has a different take on uncertainty. In this world, uncertainty stems only from the randomness that is implicit in the realizations of any experiment or phenomenon. In other words, the data generated would be random or uncertain, however, the underlying phenomenon studied is fixed but unknown. In contrast, the Bayesian researcher notes from her first principles, an inherent uncertainty in the phenomenon being studied. She expresses this doubt before commencing her study based on her existing knowledge and calls it the prior probability. Once she completes her study of the phenomenon, she incorporates this knowledge (this is data in statistics-speak) to update her own subjective beliefs and calls it the posterior probability. I now depict an illustration to get a flavour of the Bayesian way of thinking. Once we are familiar with this, I conclude our learning for this post with a postulation of Bayes’ Theorem alongside an application in inferential statistics.
例 1
Consider a scenario as shown below:
- 一家手机制造商有三家不同的工厂生产手机。
- 50%的手机来自工厂 1,30%来自工厂 2,其余来自工厂 3。
- 工厂 1 的手机有 10%有缺陷,同样,工厂 2 的手机有 20%有缺陷,工厂 3 的手机有 25%有缺陷。
Suppose we find a defective phone and want to know the likelihood that it came from plant 1. One way to go about solving this is to initially assume there are a total of 100 phones. We can then make the following statements based on what we know.
- 50 部手机将来自工厂 1;其中 10%是次品,所以我们算出有 5 个是次品;∴剩下的 45 个将是无缺陷的。
- 同样,30 部手机来自工厂 2;6 将是有缺陷的,24 将是无缺陷的。
- 并且,20 部手机来自工厂 3;5 会有缺陷, 15 会无缺陷。
We can see that a total of 16 phones are defective out of which 5 are from plant 1. Let us tabulate our results for clarity.
植物 | 生产的手机数量 | 缺陷手机数量 | 无缺陷手机的数量 |
---|---|---|---|
one | Fifty | five | Forty-five |
Two | Thirty | six | Twenty-four |
three | Twenty | five | Fifteen |
∴∴ the likelihood of a defective phone being manufactured in plant 1 is 5/16.
定理
I now use the following notations to frame our problem statement using Bayes’ Theorem. Let AA be the event that the phone is defective, Bi be the event that the phone was manufactured in plant i, and P(⋅) denote the probability. I also use the conventional notation for conditional probability, P(⋅|⋅). Without loss of generality, Bayes’ Theorem for our example can be algebraically expressed as: Our instinctive approach earlier is consistent with the application of Bayes’ theorem as seen above. What makes this theorem so handy is it allows us to invert a conditional probability. I now employ a simple illustration to demonstrate how Bayes’ theorem can be used in an inferential setting.
例 2
Let us suppose a suspect is being tried for a crime in court. In most justice systems, the hypothesis we operate with is that the person being tried is innocent. I now write this in conventional hypothesis testing parlance as: I re-express (2) and (3) here as:
Let us suppose that the evidence is based on the size of the footprints observed at the crime site.If 20% of the population has that foot size, then
As seen, our revised probability numbers are significantly impacted once we incorporate the evidence into our analysis. The probability of his innocence plummets from 1/3 to 1/11 after examining the evidence. Our suspect appears to be on thin ice!
总结
I have sought to convey the key differences between the frequentist and the Bayesian approach to probability theory. I also touched upon Bayes’ Theorem, the fountainhead of Bayesian statistics along with some examples. We still have some distance to go. In my next post, I intend to further ramp up on the inference building exercise in frequentist and Bayesian statistics. Bayesian statistics is an important part of quantitative strategies which are part of an algorithmic trader’s handbook. The Executive Programme in Algorithmic Trading (EPAT) course by QuantInsti® covers training modules like Statistics & Econometrics, Financial Computing & Technology, and Algorithmic & Quantitative Trading that equip you with the required skill sets for applying various trading instruments and platforms to be a successful trader.Disclaimer: All investments and trading in the stock market involve risk. Any decisions to place trades in the financial markets, including trading in stock or options or other financial instruments is a personal decision that should only be made after thorough research, including a personal risk and financial assessment and the engagement of professional assistance to the extent you believe necessary. The trading strategies or related information mentioned in this article is for informational purposes only.
交易导论:发展概念框架
当有人想学习如何交易时,他们从哪里开始?他们应该关注哪些市场?他们应该考虑什么样的交易模式?他们应该在交易中承担多大的风险?
以上都是常见的初题,都是错误的初题。
交易介绍
学习交易是如何从概念框架开始的:理解市场如何和为什么运动,以及它们如何和为什么相互关联。
当科学家进行实验时,他们不会把各种各样的东西往墙上扔,看看有什么东西粘在墙上。他们从一个理论开始——对他们的观察的尝试性解释——然后用这个理论来指导假说的产生和检验。心理学家库尔特·勒温曾经说过:“没有什么比一个好的理论更实际的了”。理论组织思想;它帮助我们专注于重要的事情,剔除无关的事情。
大多数交易者也用他们的理论和概念框架操作。从学习研究中衍生出来的精神分析观点和认知行为方法:这些是理解人及其模式的方法。这就是为什么新交易者和经验丰富的老交易者坐在一起学习逻辑、感觉和方法。
很多时候,交易者开始学习市场,试图学习他们可以交易的模式。如果没有观察和理论的科学基础,这些交易者最终会拿自己的钱去冒险,而没有真正理解他们在做什么,以及如何适应他们市场更大的供求关系。难怪这样的交易者很难保持信心和纪律:如果你不明白为什么要做某事,就很难有信心去做。
新量化交易者的基本能力
新的量化交易者在开始职业生涯时往往很难获得公正的指导,因此这种资源非常宝贵。问题的主题从交易机制和交易系统到市场微观结构和交易生涯。
总的来说,我想强调四个关键的学习领域,这是一个人今天开始量化交易生涯时应该具备的:
宏观经济
你会希望牢牢把握市场间的关系,以及货币政策如何影响利率、货币和经济增长。股票、货币、利率、商品和信贷市场的基础知识在任何发达/发展中市场的交易中都是必不可少的。尤其是现在,市场之间紧密相连,相互关联交易。这些信息可能会也可能不会决定接下来半小时的交易,但是清楚地理解手头的问题对于可视化和建立交易系统是非常重要的。缺乏对宏观经济和市场间关系的理解是许多短线交易者在市场中亏损的主要原因。
一种交易理论
交易者需要一个框架来思考价格运动,并从市场上稳定的价格变化中找出原因。我不确定交易者是否认同这种或那种理论有很大关系,但是我确定有一个解释框架比没有要好。人们认同各种各样的基础或技术理论。在量化交易中,市场微观结构理论、双向拍卖市场、行为金融学、交易心理学、交易模式、市场概况、相对估值等。单独使用或与其他理论结合使用。
观察
毫无疑问,在学习如何交易时,我做过的最聪明的事情就是在交易前长时间观察市场。我收集日内走势图,甚至是分笔交易图,每天寻找最佳交易机会。随着时间的推移,我开始在这些机会中看到重复的模式,这对我后来的交易很重要。不仅要观察价格,还要观察交易量、行业行为、市场间的行为,以及像分笔成交点这样的指标,这有助于你认识突破、反转和趋势的动态。
编码的最优性
当有其他系统在寻找类似的机会时,平台和策略的编码方式也很重要。尤其是在利润可以用几个分笔成交点来衡量的情况下,将订单发送到市场的时间和速度至关重要。代码应该能够处理任何类型的市场环境,并处理高风险事件。根据我今天所知道的,如果我开始做交易者或者给新手做建议,我会建议在把钱投入风险之前至少花半年的时间学习、观察和练习纸上交易。我坚信新交易者不成功的一个主要原因是他们没有投入必要的时间去学习市场和获得急需的技能。
机器学习
机器学习已经成为量化分析师应该具备的技能清单中的重要部分。交易中使用的大多数策略,无论是技术策略、数量策略还是基本面策略,都可以被自动化和优化。为了优化代码,你需要对你正在编码的语言有很强的理解,为了优化策略,你需要对策略的特征和适合于手头问题的必要的机器学习模型有很强的理解。市场上有很好的机器学习算法,能够让使用 Twitter feeds 或其他类似的新闻 feed 来理解市场情绪。作为交易者,结合这样的算法会给你比其他交易者更大的优势。
Python/R/C++
学哪种语言?这可能是一个困扰每个量化交易初学者的问题。如果你知道一种特定的语言在哪里使用,那么你就能明白哪种语言更适合你的需要。
C++ 广泛用于那些执行时间是最重要参数的策略中。例如,在 HFT(高频交易),交易不到一秒钟就能完成,你选择的语言可以决定你策略的成败。在这种情况下,C++是最好的选择。
Python 或 R 在分析和金融领域有着广泛的用途。它们在算法交易中被广泛使用,世界上几乎每个主要的经纪人都有至少支持其中一种的 API。这两者都没有什么可选择的,它们都提供相似的特性和库,并且都是开源的。在金融领域,R 是一门成熟的语言,而 Python 是一门相对较新的语言。但是 Python 的流行和使用一直呈指数级增长。
下一步:
我们给你带来了一个基于期权的交易策略,你可以在 Python 编程的帮助下计算收益图。点击此处访问 Iron Condor 期权交易策略,该策略结合了看涨看跌期权交易策略和看跌期权交易策略。这是交易者可以使用的最简单的策略之一,即使账户很小,也能让时间衰减对你有利。
免责声明:本文提供的所有数据和信息仅供参考。QuantInsti 对本文中任何信息的准确性、完整性、现时性、适用性或有效性不做任何陈述,也不对这些信息中的任何错误、遗漏或延迟或因其显示或使用而导致的任何损失、伤害或损害承担任何责任。所有信息均按原样提供。T3】
风险价值简介
本文原载于 Quants 门户网站。T3】
大型机构每天处理大量进出其账户的货币。此外,他们有自己的资金,必须有效地分配,以最大限度地提高投资回报,但也希望对冲不利事件。有了一定的信心,实体(特别是商业机构)应该意识到他们的利润,也知道他们会损失多少。由于要求规定在需要时保留一定的金额,引入了应在繁荣时期建立的资本缓冲(SARB,2015 年),以及其他监管事项机构,增加了了解他们拥有多少资产以及他们面临的风险的需要。
近年来,大型商业银行的交易账户大幅增长,变得越来越多样化和复杂(Jorion,2001)。为了管理市场风险,主要的交易机构已经开发了大规模的风险测量模型。虽然方法可能有所不同,但所有这些模型都以非常详细的方式衡量和汇总了当前头寸的市场风险。
风险价值(VaR)为这些以及更多问题提供了全面的解决方案。风险价值模型通过确定投资组合的价值在给定时间内以给定概率因市场价格或利率的变化而下降多少来衡量市场风险。(亨德里克斯,1996 年)。在投资组合分配方面;VaR 只是一个标准差计算,它说明了投资组合的波动性(Butler,1999)。
确定风险值
谈到 VaR 数;人们在使用它进行推理时应该谨慎,因为它主要是由风险管理系统的设计者想要如何解释它来决定的(林斯迈尔&皮尔逊,2000)。获取风险值的三种方法是历史模拟、Delta 正态方法和蒙特卡罗模拟。
历史模拟
本质上,该方法涉及使用市场利率和价格的历史变化来构建潜在未来投资组合损益的分布,然后从该分布中读取风险值(Linsmeier & Pearson,2000 年,第 50 页)。可以使用历史方法,通过挖掘未经调整的实际历史回报数据库作为模拟回报的来源,并从中提取推断数字,这将捕获数据中实际存在的相关性、波动性尾部、肥度和回报偏斜度,从而避免需要参数化和估计数学模型(Pan & Duffie,1997)。
历史模拟的一个优点是固有地包含了所有事件,即撞车和其他罕见事件,因为这些事件的影响被纳入计算中,因为它利用了实际的历史回报。
Delta-正常接近
delta-normal 方法基于基础市场因素具有多元正态分布的假设。人们可以确定按市值计价的投资组合损益的分布,这也被假设为正态分布。一旦获得了可能的投资组合利润和损失的分布,使用正态分布的标准数学属性来确定将等于或超过 x %的时间的损失,即风险值。
蒙特卡洛模拟
蒙特卡洛模拟方法与历史模拟有许多相似之处。蒙特卡洛模拟允许风险经理使用风险因素回报的实际历史分布,而不是必须假设正常回报。大量随机生成的模拟使用风险经理选择的波动性和相关性估计及时向前运行(Linsmeier & Pearson,2000)。为此已经开发了各种算法和方法,但是大多数都需要大量的计算和编程技能。
测试风险值模型
单一投资组合没有单一的风险值,因为计算风险值的不同方法会产生不同的结果。那么,哪种方法是获得 VaR 的最佳方法呢?如果观察值是独立且同分布的,那么像 Kullback 差异或 Kolmogorov-Smirnov 检验这样的检验可以用来检验模型的有效性。由于管理者规定哪些因素对他们的投资组合有更大的影响,最佳选择将由风险管理者认为最重要的维度来决定。
Hendricks 进一步提到“风险值模型最重要的组成部分是衡量市场风险的时间长度和衡量市场风险的置信水平”(1996 年,第 40 页)。通过调整这些因素,管理者将能够获得更好的结果。
计算 VaR
博在他的《论风险价值》一书中提出了四种计算 VaR 数的方法:利用投资组合收益的分布;投资组合回报率;delta-normal 估价和 delta-gamma 方法(2001 年,第 4 页)。为了便于说明,我将只讨论前两种方法,并将后者留给读者去探索。
投资组合收益分布
获得 VaR 值就像解方程一样简单
其中 c 是我们的置信水平,而\(x)是反映投资组合价值变化的密度函数。\(x)c可以是任何函数,因此在我们的分析中,我们将假设正态分布有均值μ 和方差σ 。
举例:
我们想知道如果我们买了股票会损失多少。此外,我们希望对这个值有 95%的把握。假设χ交易,μ = 0.3 ,σ = 0.4 。
从正常表中,对于值χ获得 95%的确定性,其中χ` s z-得分等于 1.645。转换方程式
因此我们有*χ=σα+μ=*1.645 * 0.633+0.3 = 1.341
接下来,我们来看看投资组合背景下的风险值。
投资组合收益率
假设当前投资组合价值 为ρ0并产生收益率ℜ 。设ρ0正态分布,均值 μ ,标准差 σ 。一个周期后,投资组合的价值将由ρ1 =ρ0(1+ℜ)给出,其中均值ρ0(1+μ),方差ρ0*σ。*设 为投资组合在一定置信水平下所能达到的最低值
风险值计算如下
如果出于某种原因我们选择平均值等于 0,那么
Jorion 提出了替代 (2001,第 110-113 页),我们可以将它代入我们的风险值计算,给出如下:
在哪里以及如何应用风险值
返回我们的银行场景;我们知道所有提到的要求都在巴塞尔协议中有规定。《巴塞尔二号协议》旨在利用适当的风险模型计算风险价值(VaR)来监督和鼓励明智的风险承担(Chang,Jimenez-Martins,McAleer,& Perez-Amaral,2001)。南非储备银行等监管机构利用风险值数据来评估一家机构的稳定性,并评估该机构的风险是否得到适当管理。
除了用于大型机构层面,风险值计算还应用于投资组合的构建和管理。更大的波动性是由一些基础变量的更大风险或对金融产品更敏感的产品设计引起的。在处理期权时尤其如此,因为它们的价值取决于某些潜在价格。经理可以使用风险值来评估她的风险敞口,并相应地调整风险值以满足她的投资需求。
结论
VaR 已经成为金融风险管理的一个重要组成部分(Jorion,2001)。要实现风险值,公司的所有头寸数据必须收集到一个集中的数据库中。一旦完成,必须通过汇总整个投资组合中各个工具的风险来计算整体风险。但是,确定使用哪种方法来获得这种风险值本身是一个不同的目标,因为计算的人必须知道将产生有意义的风险值的变量。
可用于计算风险值的三种方法是正态增量法、蒙特卡洛法和历史模拟法。上述方法可以单独用于获取风险值数据,但通常经理可以使用所有三种方法来更好地了解其业务动态,这提醒了经理不同的合规要求迫使他报告不同的风险值数据。
参考书目
- 巴特勒,C. (1999)。 掌握风险价值:理解和应用风险价值的逐步指南。 特罗布里奇,威尔特郡:皮特曼出版社。
- 张,c-l,希门尼斯-马丁斯,j-a,麦卡利尔,m .,&佩雷斯-阿马拉尔,T. (2001)。 巴塞尔协议下的风险管理:预测风险价值。
- 亨德里克斯博士(1996 年)。 利用历史数据评估风险价值。
- 约里安,P. (2001 年)。 风险价值:管理金融风险的新标杆。 纽约:麦格劳希尔。
- 林斯迈尔,T. J .,&皮尔森,N. D. (2000 年)。风险价值。金融分析师期刊,第 47-67 页。
- 潘,j .,&杜菲德(1997)。 风险价值概述。
- SARB。(未注明)。 南非实施巴塞尔协议 II 和巴塞尔协议 III。 检索 2015 年 6 月 23 日,https://www.resbank.co.zaSARB
- YieldCurve.com。(2003). 风险价值简介。
免责声明:这篇客座博文中提供的观点、意见和信息仅属于作者个人,并不代表 QuantInsti 的观点、意见和信息。本文中所做的任何陈述或共享的链接的准确性、完整性和有效性都不能得到保证。我们对任何错误、遗漏或陈述不承担任何责任。与侵犯知识产权相关的任何责任由他们承担。
Zipline Python:好处、安装、结构等
由普里扬卡·萨赫
简介
Python 已经成为金融交易中最受程序员欢迎的语言之一,因为它易于使用,用户友好,并且有足够多的科学库,如 Pandas、NumPy、PyAlgoTrade、Pybacktest 等等。
当交易频率为低/中时,Python 是自动交易的绝佳选择,即持续时间不少于几秒钟的交易。它有多个 APIs 库,可以链接起来,使它更优化,更便宜,并允许多种贸易想法的更大探索性发展。
正是由于这些原因,Python 有一个非常互动的用户在线社区,他们分享、再分享并批判性地评论彼此的工作或代码。最流行的基于网络的回溯测试系统之一是 QuantConnect 。
QuantConnect 利用 C#和 Python。它自夸提供了丰富的历史资料。QuantConnect 自 2015 年起支持与互动经纪商的实时交易。
Zipline 是一个用于交易应用的 Python 库。这是一个事件驱动的系统,支持回溯测试和实时交易。
在这篇文章中,我们将学习如何安装滑索,然后如何实施移动平均交叉策略,并计算 P&L,投资组合价值等。
本文分为以下四个部分:
- 滑索的好处
- 安装(如何在本地安装 Zipline)
- 结构(在 Python 中用 Zipline 编写代码的格式),
- 用 Python 中的 Zipline 编码移动平均交叉策略。
滑索的好处
- 易用性
- 由于移动平均和线性回归等许多常见统计数据可以从用户编写的算法中轻松访问,因此 Zipline“包含电池”。
- 历史数据的输入和性能统计的输出基于 Pandas 数据框架,以便很好地集成到现有 PyData 生态系统中
- 【matplotlib、scipy、statsmodels 和 sklearn 等统计和机器学习库支持最先进交易系统的开发、分析和可视化
安装
使用画中画
假设您已经拥有了所有必需的非 Python 依赖项,那么您可以通过用 pip 在 Python 中安装 Zipline
# code
pip install Zipline
使用康达
在 Python 中安装 Zipline 的另一种方法是通过 conda 包管理器,它是 Anaconda 的一部分,也可以通过 pip install conda 安装。
一旦 conda 设置完成,你就可以从 conda-forge 频道安装滑索:
#code
conda install -c conda-forge zipline
基本结构
Python 中的 Zipline 为代码提供了一种特殊的结构,其中包括定义几个函数来运行数据集上的算法,如下所述。
#code
from Zipline.api import order, record, symbol
from Zipline.algorithm import TradingAlgorithm
def initialize(context):
pass
def handle_data(context, data):
order(symbol('AAPL'), 10)
record(AAPL=data.current(symbol('AAPL'), 'price'))
algo_obj = TradingAlgorithm(initialize=initialize, handle_data=handle_data)
perf_manual = algo_obj.run(data)
因此,首先我们必须导入代码中需要的一些函数。每个滑索算法都包含两个你必须定义的函数:
*** initialize(上下文)和* handle_data(上下文,数据)**
在算法开始之前,Zipline 调用 initialize() 函数并传入一个上下文变量。Context 是一个全局变量,允许您存储从一个算法迭代到下一个算法迭代需要访问的变量。
算法初始化后,Zipline 为每个事件调用一次**【handle _ data()**函数。每次调用时,它都传递相同的上下文变量和一个名为 data 的事件帧,该事件帧包含当前的交易棒线,包括每只股票的开盘价、最高价、最低价和收盘价(OHLC)以及成交量。
算法中常用的所有函数都可以在 Zipline.api 模块中找到。这里我们使用 order(arg1,arg2 ),它接受两个参数:一个安全对象和一个数字,该数字指定您想要订购多少股票(如果是负数,order()将卖出/做空股票)。在本例中,我们希望在每次迭代中订购 10 股苹果股票。
现在,第二个方法 record()允许您在每次迭代中保存变量的值。您为它提供变量的名称以及变量本身。在算法运行完毕后,你可以把你记录的所有变量都记录下来,我们将学习如何去做。
要运行这个算法,你需要调用trading algorithm(),它使用两个参数:initialize function 和 handle_data。然后,调用 run 方法,使用数据作为运行算法的参数(数据是存储股票价格的 panda 数据帧)
run() 首先调用 initialize()函数,然后通过 handle 数据()流式传输每日的历史股价。在每次调用处理数据()之后,我们指示 Zipline 订购 10 只 AAPL 股票。
如何在 Python 中用 Zipline 编写移动平均线交叉策略
移动平均线
它是一种证券在一定时期内的简单平均值。
交叉
移动平均线交叉是交易者使用移动平均线的常用方法。当快速移动平均线(即短期移动平均线)穿过慢速移动平均线(即长期移动平均线)上方(被视为)或下方(被视为**)时,就会发生交叉。******
现在我们将学习如何在 Python 中使用 Zipline 来实现这个策略。导入库并初始化算法中使用的变量。
代码分为 5 部分
- 初始化
- 初始化方法
- 句柄 _ 数据方法
- 策略逻辑
- 跑某事
初始化
#代码
**import pytz
from datetime import datetime
from Zipline.api import order, symbol, record, order_target
from Zipline.algorithm import TradingAlgorithm
from Zipline.utils.factory import load_bars_from_yahoo
import pyexcel
# Load data manually from Yahoo! finance
start = datetime(2011, 1, 1, 0, 0, 0, 0, pytz.utc).date()
end = datetime(2012,1,1,0,0,0,0, pytz.utc).date()
data = load_bars_from_yahoo(stocks=['SPY'], start=start,end=end)**
**loadbarsfrom _ Yahoo()是获取股票和时间段的函数,您需要获取这些数据。这里我用的是 2011 年到 2012 年之间的间谍股,你可以根据你的情况来改变这个。
初始化方法
**#code
def initialize(context):
context.security = symbol('SPY')**
现在我们将定义初始化函数,context.security 表示我们正在处理的股票,在我们的例子中是它的 SPY。
句柄 _ 数据方法
**#code
def handle_data(context, data):
MA1 = data[context.security].mavg(50)
MA2 = data[context.security].mavg(100)
date = str(data[context.security].datetime)[:10]
current_price = data[context.security].price
current_positions = context.portfolio.positions[symbol('SPY')].amount
cash = context.portfolio.cash
value = context.portfolio.portfolio_value
current_pnl = context.portfolio.pnl**
handle_data() 包含了我们想要做的所有操作,主要代码为我们的算法。我们需要计算不同窗口的移动平均值,Zipline 提供了一个内置函数【mavg(),它使用一个整数来定义窗口大小。****
另外,Zipline 会自动计算当前的价格、投资组合的 T2 价值等。我们可以只调用变量,在这个算法中,我已经计算了当前的头寸、价格、现金、投资组合价值和 PnL。**
策略逻辑
**#code (this will come under handle_data function only)
if (MA1 > MA2) and current_positions == 0:
number_of_shares = int(cash/current_price)
order(context.security, number_of_shares)
record(date=date,MA1 = MA1, MA2 = MA2, Price=
current_price,status="buy",shares=number_of_shares,PnL=current_pnl,cash=cash,value=value)
elif (MA1 < MA2) and current_positions != 0:
order_target(context.security, 0)
record(date=date,MA1 = MA1, MA2 = MA2, Price= current_price,status="sell",shares="--",PnL=current_pnl,cash=cash,value=value)
else:
record(date=date,MA1 = MA1, MA2 = MA2, Price= current_price,status="--",shares="--",PnL=current_pnl,cash=cash,value=value)**
现在,根据比较移动平均线的条件,下单买入或卖出的逻辑。
- 如果短均线大于长均线,并且您的当前持仓量为 0,那么您需要计算股票数量并下单
- 如果短期移动平均线小于长期移动平均线,并且您的 current_positions 不为 0,那么您需要卖出您当前持有的所有股票。
- 第三个条件是,如果什么都不满足,那么什么都不做,只记录需要保存的变量。
运行
为了运行这个算法,你需要下面的代码:
**#code
algo_obj = TradingAlgorithm(initialize=initialize,handle_data=handle_data)
perf_manual = algo_obj.run(data)
perf_manual[["MA1","MA2","Price"]].plot()**
您也可以使用 plot()方法绘制图形
战略图
使用滑索的屏幕快照
结论
我们希望你会发现 Python 中 zipline 的介绍和使用相同的实现策略是有用的。在我们的下一篇文章中,我们将向您展示如何使用 Zipline 导入和回测 CSV 格式的数据。对于使用 python 构建技术指标,这里有几个的例子。
下一步
学习使用来自谷歌的数据和 CSV 格式的 OHLC 数据在 Zipline 上导入和回溯测试。在我们的帖子’中计算回测结果,如 PnL、交易数量等,在 Zipline 中导入 CSV 数据以进行回测。
更新
我们注意到一些用户在从雅虎和谷歌金融平台下载市场数据时面临挑战。如果你正在寻找市场数据的替代来源,你可以使用 Quandl 来获得同样的信息。
免责声明:股票市场的所有投资和交易都有风险。在金融市场进行交易的任何决定,包括股票或期权或其他金融工具的交易,都是个人决定,只能在彻底研究后做出,包括个人风险和财务评估以及在您认为必要的范围内寻求专业帮助。本文提到的交易策略或相关信息仅供参考。
下载数据文件
Python 代码中的 Zipline
利用在线量化模型投资大型科技股
这个项目旨在分享一个关于如何在交易策略开发和改进中使用在线机器学习定量技术的例子。
与随后交叉验证的传统常规模型再培训相比,在线学习允许算法交易的更深入自动化。这是因为这种模型可以在实时交易中实时调整参数。
真正的生产策略远比项目中作为示例使用的策略复杂,包括更深层次的自动化和更广泛的参数。然而,合并的在线模型具有普遍适用性,可以应用于不同种类的交易策略,从被动投资到高频交易(HFT)。
本文是作者提交的最后一个项目,作为他在 QuantInsti 的算法交易管理课程( EPAT )的一部分。请务必查看我们的项目页面,看看我们的学生正在构建什么。
关于作者
Evgeny Tishkin 在算法交易和 HFT 领域拥有超过 10 年的丰富经验,曾在多家自营交易公司和对冲基金担任量化开发人员、首席软件架构师、量化分析师和首席技术官。
对于担任 CTO 的一家算法对冲基金,他从零开始创建了完整的低延迟多交易所算法交易基础设施和高频交易框架。
在 2019 年 XTX 市场全球预测挑战赛中,叶夫根尼在来自全球 100 个国家的 4000 多名定量研究人员中获得第二名。
Evgeny 拥有萨马拉国立航空航天大学的计算机科学硕士学位。此外,他还获得了莫斯科物理技术学院的“机器学习和数据分析”专业学位。
项目理念
这个项目背后的想法是创建一个量化的战略,以改善部门投资。
考虑的股票
我将以大型科技股为例,选择 FANGAM 股票(脸书、苹果、网飞、谷歌、亚马逊、微软)+ QQQ(纳斯达克 100 指数 ETF)
步伐
我执行以下步骤:
- 从 2005 年开始计算等额买入并持有投资。
- 每月计算等额再平衡投资组合。
- 尝试使用基于统计套利思想的智能进场和出场来提高夏普和卡尔曼比率:在线线性回归,在线主成分分析,卡尔曼滤波器。“在线”是指在我们计算预测的当天之前的回望期的一个逐日可再训练的模型。
- 尝试使用隐马尔可夫模型的市场机制过滤来改进前面步骤的结果
我这里省略交易成本,因为在低频交易中可以忽略不计。我从雅虎财经资源获取了 2005 年开始的数据,包括 2008-2009 年的金融危机。
使用的技术
我使用以下技术:
每月投资组合再平衡
这种再平衡改善了 Sharpe,但没有改善 Max drawdown 并使 Calmar 降低。在重新平衡时,我每个月都会将资金平均分配到每只股票上。
执行此程序的更有效方法是使用波动率和成对相关信息来衡量整个投资组合的风险值。这是一种基于现代投资组合理论的众所周知的方法,但这超出了本研究的范围。
在线回归
在线意味着我们每天都要训练模型,并从数据集中提取数据进行训练。线性回归采用线性方法来模拟目标变量和解释变量之间的关系。
在我们的例子中,我使用线性回归来寻找相关股票之间的统计线性传播的最佳系数。在应用这种方法之前,我确保我们投资组合中的所有股票彼此高度相关,皮尔逊系数超过 0.9。
基于日常训练的结果,我计算了当天目标的残差。使用残差将被进一步解释。它们被用来指示何时买入或卖出股票。
在线 PCA(主成分分析)
PCA 是一种基于矩阵的特征值和特征向量提取方差的正交非相关分量的方法。
它用于解决数据分析中的不同问题。我以本资源中描述的方式使用它进行因子或特征提取。
因此,使用主成分分析提取几个主成分,并用作近似目标价格的特征。
成分是初始投资组合股票价格的线性组合。使用这些提取的特征和在线线性回归来预测目标股票价格。然后我们计算残差。
卡尔曼滤波器
卡尔曼滤波器是统计学和控制理论中的一种众所周知的算法,它使用时间序列测量(在我们的例子中是股票价格)来产生对目标变量的更精确的估计。
我使用卡尔曼滤波器来评估解释目标(目标股票价格)变量购买“独立”变量(投资组合中的其他股票价格)的在线回归系数。
Ernie P. Chan 博士的《算法交易:获胜策略及其基本原理》一书中描述了一种类似的方法,但应用于统计套利。它非常类似于在线线性回归方法,并计算统计分布系数,但根本不使用回望期。
代替这个周期,卡尔曼滤波器由影响滤波器的“适应性”的“增量”参数来参数化。
隐马尔可夫模型
该模型基于马尔可夫过程或马尔可夫链,并假设存在另一个具有可观察变量(例如股票价格)的过程 Y,该过程依赖于具有隐藏状态(市场“制度”)的当前马尔可夫过程 X。马尔可夫链本身假设下一个状态的概率只取决于当前达到的状态。
期望最大化算法用于无监督提取每个状态的可观察变量(例如股票价格)的高斯分布参数和隐藏状态序列本身。
我认为市场状态(上升趋势、下降趋势、波动市场、拥挤等)是一种隐藏的市场状态,可以用一组参数分布来表征,这些参数分布具有通过优化确定的特定参数。我再次使用培训模型的在线变体。提取的状态可以用于过滤交易进入和退出。
方法学
在这些模型中,我使用股票价格的年度指数移动平均值的百分比差异作为特征和目标。对于回望期,我用了一年(252 个交易日)。
交易方法
我尝试使用基于统计套利技术的主动投资组合管理来降低投资组合的风险。我使用在线每日计算来确定股票相对于行业中其他类似股票的低估/高估状态。
然后我会用计算残差(target _ VALUE-predicted _ target _ VALUE)作为股票相对价值的指标。我会在当地的低点买入股票,在当地的高点卖出剩余的股票。使用上述模型计算残差。
因此,所有模型都显示出夏普比率和最大提款的显著改善,这使得使用它们的交易在所承担的风险方面更具吸引力。但是卡尔曼比降低了。我试图用模型出口过滤来改善它。
我试图通过适应性市场机制检测来增加潜在盈利头寸的时间。当我们处于持有多头头寸的有利状态时,我们会跳过剩余“高估”状态的退出。
作为特征,我们将 QQQ 作为行业的基准指标,并将 VIX 添加到数据集中。QQQ 是纳斯达克 100 ETF,跟踪在纳斯达克证券交易所上市的 100 家最大的非金融公司。VIX 是一个实时市场指数,代表市场对未来 30 天 S&P500 指数(作为市场基准)波动性的预期。
我们将使用它们的增量,并将远期目标(也是未来 30 天价格的价格增量)添加到数据集,允许模型提取考虑目标的状态!这是一个诡计。
在目标变量大于零的在线隐藏状态的情况下,我们跳过退出,继续持有多头头寸,直到状态变得不利。
结果
结果,承担的风险更高,夏普和最大 DD 变得更差,仍然高于买入并持有的基线。重要的是,钙离子比也增加并超过了基线。
你可以看到下面的战略对照表和图表。
摘要
因此,这个项目的主要收获和经验是:
- 股票相对定价可以用于更有效的进入和退出价格点的选择。
- 对于相对价格,我们可以采用其他相关工具价格的价格,例如来自同一行业股票的价格,并将它们作为输入输入到一些定量模型中,以计算具体股票的公允价格。
- 公允价格的残差是股票高估/低估状态的合适度量。
- 在线机器学习有助于建立自动化实时定价模型。
结论
就总利润而言,所采用的方法过于简单,无法战胜市场(买入并持有策略),因为它只使用股票的收盘价格。
然而,我们通过使用由在线相对定价技术决定的多重进场和出场,成功地克服了买入并持有策略的风险。
如果你想学习算法交易的各个方面,那就去看看算法交易(EPAT) 的高管课程。该课程包括各种培训模块,让你具备在算法交易中建立一个有前途的职业生涯所需的技能。
文件在下载
- data_bigtech - Excel 文件
- epat _ project _ evgeny _ tish kin-Python 笔记本
免责声明:就我们学生所知,本项目中的信息是真实和完整的。学生或 QuantInsti 不保证提供所有推荐。学生和 QuantInsti 否认与这些信息的使用有关的任何责任。本项目中提供的所有内容仅供参考,我们不保证通过使用该指南您将获得一定的利润。
如何在投行找到工作?
从一开始就是一份高薪工作,成为一名投资银行家是任何具有金融、商业或工程背景的学生的梦想。如果你希望在这个领域开始你的职业生涯,有一些基本的东西,比如对数学、数字和分析系统的热爱,以及更多我们将在这篇文章中发现的东西。
本文涵盖:
- 什么是投资银行?
- 投资银行家是做什么的?
- 投资银行的工作
- 在投资银行工作的利弊
- 获得投资银行工作的资格
- 成为投资银行家的技能
- 如何在投行找到工作?
什么是投资银行?
众所周知,投资银行是一种金融中介,提供与金融交易相关的各种服务。这些服务包括承销、促进并购(M&A)、销售和交易等。投资银行不是接受公众存款的银行。他们指导投资者并向公司或组织提供资本投资。此外,他们提供投资服务,为投资者提供利益。
投资银行不同于商业银行,因为商业银行支持大公司和企业的一些活动,如开立支票或储蓄账户、借款、获得信贷服务等。
让我们继续前进,找出投资银行家的角色。
投资银行家是做什么的?
一个刚入门的投资银行家,通常会发现自己作为一名应届毕业生身兼数职。喜欢挑战并喜欢在过程中寻找解决方案的人可以立志成为一名投资银行家。
一般来说,投资银行家:
- 就财务决策向客户提供建议
- 分析公司在运营和财务方面的表现
- 协调操作流程
- 培训或监督初级银行家或团队成员
- 对证券进行估价
- 帮助客户重组债务
现在,更具体地说,让我们找出投资银行的工作。
投资银行的工作
投资银行家的职业生涯从下到上发展相当顺利,非常简单易懂。在投资银行,从初级到高级的具体工作是:
- 分析师
- 联想
- 副总裁
- 常务董事
分析师
投资银行的任何新生都是从分析师的角色开始的,也被称为投资银行分析师。他们是负责大多数任务的人,这些任务有助于他们获得该领域所需的经验。
分析师处于初级水平,他们每天的主要任务是负责分析、演示和管理。投资分析师是那些找到自己的位置并成为特定领域专家的人。
对于投资分析师的职位,你基本上需要金融或工商管理学士学位。此外,会计、统计、数学和经济学专业的新生或毕业生成为分析师也很常见。在这个职位之后,投资分析师通常会晋升到高级投资分析师或投资组合经理的职位。接下来是首席投资官(CIO)。投资分析师职位后的平均基本工资在 126000 美元至 174000 美元之间。
根据 glassdoor 的数据,投资分析师的平均基本工资为 75815 美元。
关联
助理高于分析师,并与他们密切合作。助理主要检查分析师的工作,并给他们分配任务。员工对分析师的任务进行深入审查,并检查模型、输入和输出,以确定数字是否合理。
除了一些已经被提升的分析师之外,合伙人也是直接招聘的。如果助理在这个职位上呆了三年半,他/她将被提升到副总裁级别。但是,如果没有副总裁级别的要求,助理也可能需要超过三年半的时间才能得到提升。
要成为投资助理,你需要一个学士学位,在某些情况下,还需要一个投资分析师所需的硕士学位。根据 glassdoor 的数据,美国投资助理的平均基本工资是 72,002 美元。
副总裁&常务董事(VP&MD)
副总裁和总经理属于高级管理层或高级银行家的范畴。他们在确保以详细的方式处理行业状况方面发挥着至关重要的作用。它们有助于预测投资领域的交易。
高级银行家达到这一阶段的背景包括从投资银行到公司行政管理。他们主要是与客户建立关系并获得交易。此外,他们也是发现公司资本需求以及战略讨论需求的人。
副总裁和总经理只有在担任投资助理后才能获得晋升。副总裁是在担任投资助理三年半后任命的,而总经理是在大约十年后任命的。
副总裁和总经理的年薪高达 114000 美元。
接下来,你将探索在投资银行工作的利弊。
在投资银行工作的利与弊
赞成的意见
- 丰厚的补偿
- 诱人的奖金
- 生活水平的提高
- 良好的行业、市场等专业知识。
- 快速晋升和领导角色
骗局
- 高度紧张
- 长时间的工作
- 这项工作风险很大,因为它依赖于资本市场
- 取决于商业情绪和投资者的看法
- 工作和休闲之间没有很好的平衡
现在,让我们找出在投资银行找到工作的资格。
获得投资银行工作的资格
为了在投资银行找到一份工作,任何对数学和分析系统充满热情的人都可以立志成为一名投资银行家。
由于入门级别的投资银行家是从 B.Com 大学或公认大学的学士学位等本科课程中聘用的,因此不强制要求他们拥有特殊课程的学位。
不过,MBA(金融)或商业背景有助于开启你的投资银行职业生涯。
在以下科目中,一些作为投资银行背景的文凭和认证课程很受欢迎:
- 财务控制
- 财务分析
- 股票研究
- 投资组合管理和安全性分析
- 银行和金融
- CFA 或特许金融分析师
在上述所有科目中,CFA 是能够在顶级投资银行公司获得高级职位的唯一资格。
接下来,我们将看到成为投资银行家所需的技能。
成为投资银行家的技能
因此,如果你考虑在投资银行找份工作,是因为你在数字领域的优势,这不是唯一可以依赖的技能/优势。
虽然“数量”这个词表明数字在这份工作中扮演着重要的角色,但是你还需要一些其他的技能来获得成功。
你必须具备的一些一般品质/特质是:
- 能够在快节奏的环境中茁壮成长
- 雄心勃勃
- 在实现目标的同时,保持努力工作的意愿
- 愿意长时间工作
- 良好的职业道德
- 竞争性
- 优秀的写作和沟通技巧
- 知名大学的 MBA
- 毫无疑问,对数字的信心是一种你不应该低估的技能
- 拥有金融知识,并对每天的收益充满雄心
- 优秀的团队领导技能
为了在投资银行谋得一份工作,没有什么特别的或特殊的研究是你必须投入时间和精力的。如果你对一个需要数学和分析理解的领域感兴趣,你就在正确的轨道上。
接下来,让我们讨论一下在投资银行找份工作。
如何在投行找到工作?
投资银行是为数不多的欢迎 MBA 背景的应届毕业生的领域之一,而且薪水非常高。对于这样一份利润丰厚的工作,你必须愿意在这条职业道路上接受挑战。
此外,要想得到投行的工作,以下步骤很重要:
- 找出技能上的差距
- 列出职业机会
- 建立关系网和准备面试
- 专业发展
找出技能差距
为了找出技能上的差距,你需要看看你是否错过了一些个人技能,即使你非常擅长数学、金融或经济学。如果你需要开发同样的东西,认真对待它并在它的基础上构建是非常重要的。
您可以从在线提供的课程中受益,如金融市场中的机器学习和深度学习以及使用 Python 的自动交易,以获得更多专业知识。
列出职业机会
当你渴望成为一名投资银行家时,列出职业机会是另一个重要的步骤。以下是你可以申请工作的顶级投资银行:
建立关系网和准备面试
强烈建议你从现有的投资银行家那里获得专业帮助,或者准备好面试问题。对于这一点,网络可以真正帮助你。通过使用 LinkedIn 等平台,你可以通过展示你的技能和才华来帮助自己获得面试机会。获得几次面试的经验也能帮助你为更好的机会做好准备。
职业发展
最后但并非最不重要的是职业发展,这意味着即使你有了一份可以依赖的工作,也要时刻保持自我更新。跟上新的机遇,找到在职业上提升自己的方法,这将有助于你提升自己的能力。此外,你将能够为你工作的公司做出杰出的贡献。
结论
投资银行家无疑是一份高薪工作,有很多好处。尽管如此,当你渴望成为投资银行的一员时,也有许多与之相关的承诺。作为一名投资银行家,你需要成为一个专注而雄心勃勃的自己,拥有数学和分析头脑。从一开始,这个领域就为你提供了无限的成长和成功的机会,如果你做得对的话。
如果你正在寻找一份需要你在历史数据分析的帮助下发现风险影响的工作,那么风险分析师的角色可能适合你。
免责声明:本文中提供的所有数据和信息仅供参考。QuantInsti 对本文中任何信息的准确性、完整性、现时性、适用性或有效性不做任何陈述,也不对这些信息中的任何错误、遗漏或延迟或因其显示或使用而导致的任何损失、伤害或损害承担任何责任。所有信息均按原样提供。
Python 中的铁蝴蝶期权策略
原文:https://blog.quantinsti.com/iron-butterfly-options-trading-strategy/
赚钱的方式有很多种,期权为交易者提供了许多不可复制的独特方式,从而为他们提供了便利。同样,在各种各样的期权中,并不是所有的都是高风险的,都有助于限制重大损失,比如铁蝴蝶期权策略,它限制了交易者的输赢金额。
铁蝴蝶期权交易策略是一种期权交易策略。它是蝴蝶扩散选项的一部分。同样,这种策略也是多头价差和空头价差的组合。
因为它是一种有限风险和有限利润的交易策略,包括使用四种不同的选项;适合专业交易者。这就像同时运行卖空交易和卖空交易,两者的价差在峰值处汇合。由于它是短期利差的组合,因此可以建立净信贷。
主要在基础资产波动性较低时使用,即使价格在特定时间有轻微波动,它也增加了赚取较小有限利润的可能性。人们不得不经常支付平仓,因为所有的期权在这个价差中失效的可能性很低。
这种交易有可能带有方向性的偏见。如果罢工 B 高于股价,这将被视为一个看涨的交易。如果罢工 B 低于股价,这将是一个看跌交易。
构造:
-
买 1 低 OTM 放一(牛)
-
卖出 1 个中型自动柜员机卖出期权(多头)
-
卖出 1 个中间 ATM 看涨期权 B(空头)
-
买 1 更高的 OTM 呼叫 C(熊)
-
执行价格是等距的
-
所有选项都有相同的到期月份
-
这导致了交易的净信用
该策略在理想情况下应该是这样的:
收益
**Max。利润:**潜在利润等于收到的净信贷,因此是有限的。当基础期权到期时的价格等于买入期权和卖出期权的执行价格时,所有期权都将毫无价值地到期。结果,期权交易员将进入交易时收到的全部净信贷作为利润。
**Max。损失:**这里的最大损失是看涨期权和看跌期权的执行价格之间的差额,不包括收到的净溢价。风险发生在高峰期,并且仅限于此。当价格出现以下情况时,会发生有限的损失:
- 跌破买入看跌期权的下限,或
- 上涨/等于买入看涨期权的较高执行价
盈亏平衡点
盈亏平衡点上限=卖空看涨期权的执行价格+收到的净溢价下限=卖空看跌期权的执行价格-收到的净溢价
实施战略
在这个例子中,我将使用 HDFC(股票代码:HDFC)期权。假设,HDFC 在 2018 年 3 月 1 日以 1860 印度卢比交易,期权在 2018 年 3 月 28 日到期。
- 现货价格:1860
- 看涨期权执行价:1880 英镑(溢价:16.15 英镑)-买入
- 空头看涨期权执行价:1860(溢价:23.8) -卖出
- 看跌期权执行价:1840(溢价:17.00) -卖出
- 看跌期权执行价:1860 英镑(溢价:25.50 英镑)-买入
这个策略的 Python 代码如下:
导入库
import numpy as np
import matplotlib.pyplot as plt
import seaborn
from tabulate import tabulate
seaborn.set(style='darkgrid')
电话支付
def call_payoff(sT, strike_price, premium):
return np.where(sT > strike_price, sT - strike_price, 0)-premium
# HDFC Spot Price
s0 = 1860
# Long Call
strike_price_long_call = 1880
premium_long_call = 16.15
# Short Call
strike_price_short_call = 1860
premium_short_call = 23.8
# Range of call option at expiry
sT = np.arange(1800,1920,10)
长期买入回报
long_call_payoff = call_payoff(sT, strike_price_long_call, premium_long_call )
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT, long_call_payoff, color='g')
ax.set_title('LONG 1880 Strike Call')
plt.xlabel('Stock Price (sT)')
plt.ylabel('Profit & Loss')
plt.show()
短期买入回报
short_call_payoff = call_payoff(sT, strike_price_short_call, premium_short_call )*-1.0
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT, short_call_payoff, color='r')
ax.set_title('Short 1860 Strike Call')
plt.xlabel('Stock Price (sT)')
plt.ylabel('Profit & Loss')
plt.show()
放收益
def put_payoff(sT, strike_price, premium):
return np.where(sT < strike_price, strike_price - sT, 0) - premium
# HDFC Spot Price
s0 = 1860
# Long Put
strike_price_long_put =1840
premium_long_put = 17
# Short Put
strike_price_short_put = 1860
premium_short_put = 25.5
# Range of put option at expiry
sT = np.arange(1800,1920,10)
多头平仓
long_put_payoff = put_payoff(sT, strike_price_long_put, premium_long_put)
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT, long_put_payoff, color ='g')
ax.set_title('Long 1840 Strike Put')
plt.xlabel('Stock Price (sT)')
plt.ylabel('Profit & Loss')
plt.show()
看跌回报
short_put_payoff = put_payoff(sT, strike_price_short_put, premium_short_put)*-1.0
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT, short_put_payoff, color ='r')
ax.set_title('Short 1860 Strike Put')
plt.xlabel('Stock Price (sT)')
plt.ylabel('Profit & Loss')
plt.show()
铁蝶心悦
Iron_Butterfly_payoff = long_call_payoff + short_call_payoff + long_put_payoff + short_put_payoff
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT, Iron_Butterfly_payoff, color ='b')
ax.set_title('Iron Butterfly Spread')
plt.xlabel('Stock Price (sT)')
plt.ylabel('Profit & Loss')
plt.show()
profit = max (Iron_Butterfly_payoff)
loss = min (Iron_Butterfly_payoff)
print ("Max Profit %.2f" %profit)
print ("Min Loss %.2f" %loss)
Max Profit 16.15
Min Loss -3.85
fig, ax = plt.subplots(figsize=(10,5))
ax.spines['bottom'].set_position('zero')
ax.plot(sT, Iron_Butterfly_payoff, color ='b', label ='Iron Butterfly Spread')
ax.plot(sT, long_call_payoff,'--', color ='g', label = 'Long Call')
ax.plot(sT, short_put_payoff,'--', color ='r', label = 'Short Call')
ax.plot(sT, long_put_payoff,'--', color ='g',label = 'Long Put')
ax.plot(sT, short_put_payoff,'--', color ='r',label = 'Short Put')
plt.legend()
plt.xlabel('Stock Price (sT)')
plt.ylabel('Profit & Loss')
plt.show()
最终的收益图应该是这样的:
平仓发生在中间执行价和四个独立头寸的上限或下限之间的某个位置,导致利润最大化。由于大多数铁蝴蝶是用相当窄的价差创造出来的,因此遭受损失的几率相应地更高。铁蝴蝶旨在为投资者提供稳定的收入,同时限制他们的风险。通常只适合有经验的期权交易者。
所有交易者应小心沟通,并将该策略的开始和结束描述为“净借方的开始”或“净贷方的结束”。
“铁蝴蝶”的范围更窄,获得了更多的溢价卖出期权,而且由于风险回报更高,它与“铁秃鹰”相比有更好的风险回报比。因此,铁蝴蝶可以在更广泛的市场中上演,既有较低的波动性,也有较高的波动性。
一些相关术语
多头看涨蝴蝶 : 在该策略中,所有看涨期权的到期日相同,成份股各执行价格之间的距离相同。
**反向铁蝶:**铁蝶的反向策略一般在 IV 预计增加时使用。
**翼展:**翼展科,其成员以飞行生物命名。
您可以在 Quantra 上报名参加这个免费在线 python 课程,了解基本术语和概念,这将有助于您的以旧换新选择。
下一步
在我们的下一篇文章中,我们将使用 excel 模型交易美元/印度卢比货币对的期权头寸。这里的执行价格是以卢比对美元的汇率计算的。我们持有该标的(美元/印度卢比对)的不同期权头寸(看涨期权和看跌期权)。点击这里立即阅读。
免责声明:股票市场的所有投资和交易都有风险。在金融市场进行交易的任何决定,包括股票或期权或其他金融工具的交易,都是个人决定,只能在彻底研究后做出,包括个人风险和财务评估以及在您认为必要的范围内寻求专业帮助。本文提到的交易策略或相关信息仅供参考。
下载数据文件
- 铁蝴蝶期权交易策略——Python 代码
交易选项:Python 中的铁秃鹰交易策略
原文:https://blog.quantinsti.com/iron-condor-options-trading-strategy/
由尼廷·塔帕尔
简介
我一直在试图涵盖一些最简单的期权策略,包括期权扼杀策略和看涨期权价差策略,这些策略对于期权新手来说很容易实施。如果你是期权交易的新手,那么你可以查看 Quantra 上的虚拟期权交易免费课程。这一次我将涵盖铁秃鹰交易策略。
任何进行期权交易的人都很清楚,他们一直在和时间衰减做斗争,尤其是当你是买方的时候。许多正在实施的策略都是为了让时间因素为他们服务而设计的,而不是相反。“铁秃鹰”就是这样一种策略,它可以让时间衰减对你有利。
什么是铁鹰交易策略?
铁鹰策略是最简单的策略之一,即使是小账户交易者也可以采用。对于熟悉其他基本期权交易策略的人来说,铁神鹰策略基本上是牛看跌价差和熊看涨价差期权交易策略的组合。
对于不了解上述策略的人来说,另一个更简单的解释是,Iron Condor strategy 是一种四足交易,它以卖出相同基础证券和到期日的价外看跌期权和价外看涨期权开始。交易者希望股票价格在到期时保持在这些位置之间。但做空期权可能涉及很多风险,任何不利的情况都可能导致巨大的损失。因此,为了保护这种风险,交易者进一步买入价外看跌期权,这四种期权统称为铁鹰策略。
重要的是要明白,铁秃鹰战略是一个有限的风险策略,在稳定的市场,低波动性,可以帮助交易者赚取有限的利润。
策略特征
期权的价格:
卖出 1 份 OTM 看跌期权(较高的执行价格)卖出 1 份 OTM 看涨期权(较低的执行价格)买入 1 份 OTM 看跌期权(较低的执行价格)买入 1 份 OTM 看涨期权(较高的执行价格)
最大利润:收到的净保费
最大损失:
看涨期权的执行价格-看跌期权的执行价格-收到的净溢价或看跌期权的执行价格-看跌期权的执行价格-收到的净溢价,以较高者为准
盈亏平衡:
上侧:卖空看涨期权的执行价格+收到的净溢价下侧:卖空看跌期权的执行价格-收到的净溢价
这个策略是如何运作的?
让我们假设一只股票 ABC 的交易价格是 100 印度卢比,为了执行一个铁鹰交易策略,我们将:卖出 80 印度卢比 2.5 的执行卖出 120 印度卢比 2.5 的执行买入
希望价格保持在我们预定的这两个执行价格范围内,这样我们就能获利。但是,由于无限损失的风险,我们将通过以下方式保护我们的头寸:买入 60 印度卢比看跌期权,买入 140 印度卢比看跌期权
这四个位置将共同构成我们的铁鹰:
如何实施这一战略?
让我们看看如何在真实的市场场景中执行这一策略。
为此,我将选择 Yes Bank Limited(股票代号:Yes Bank)的期权,到期日为 2018 年 3 月 28 日,当前股价为 323.40 印度卢比
过去 1 个月的股价走势(来源——谷歌财经)
以下是 YESBANK 截止日期为 2018 年 3 月 28 日的期权链。
我将持有以下头寸:以印度卢比 3.30 卖出 350 看涨期权,以印度卢比 3.40 卖出 300 看跌期权,以印度卢比 1.30 买入 370 看涨期权,以印度卢比 1.20 买入 280 看跌期权
资料来源:nseindia.com
最大利润:
以防股票反弹不多,停留在我的预定头寸之间,即价格在 300 印度卢比和 350 印度卢比之间。我的收益如下:
因此,我们通过出售期权在最初的头寸上赚了钱,但在我们为了保护而预订的头寸上却亏损了。总收益是 4.2 个点。
最大损失:
让我们假设有一个重大的波动或市场颠簸,由于一个不确定的事件,使股票上升到印度卢比 390。所以这意味着我们的多头和空头头寸是亏本的。这是这种情况下的回报:
我们在短推时赚了 3.4 卢比,在长推时损失了 1.2 卢比。短期看涨期权价值 40 点,因此我们亏损了 36.7 印度卢比(3.30-40),长期看涨期权价值 20 点,使我们亏损了 18.7 印度卢比(20-1.30)。总计我们损失了 15.8 卢比。记住,我们买入的多头看涨期权帮助我们将总交易的损失最小化。
另一个需要注意的重要事情是,无论股票涨跌,这都是我们在这笔交易中的最大损失。
现在让我们看看一系列潜在价格的收益:
我们现在将使用 Python 代码向您展示收益汇总:
导入库
import numpy as np
import matplotlib.pyplot as plt
import seaborn
电话支付
def call_payoff(sT, strike_price, premium):
return np.where(sT > strike_price, sT - strike_price, 0) – premium
# Stock price
spot_price = 323.40
# Long call
strike_price_long_call = 370
premium_long_call = 1.30
# Short call
strike_price_short_call = 350
premium_short_call = 3.30
# Stock price range at expiration of the call
sT = np.arange(0.5*spot_price,2*spot_price,1)
payoff_long_call = call_payoff(sT, strike_price_long_call, premium_long_call)
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_call,label='Long 370 Strike Call',color='g')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
#ax.spines['top'].set_visible(False) # Top border removed
#ax.spines['right'].set_visible(False) # Right border removed
#ax.tick_params(top=False, right=False) # Removes the tick-marks on the RHS
plt.grid()
plt.show()
payoff_short_call = call_payoff(sT, strike_price_short_call, premium_short_call) * -1.0
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_short_call,label='Short 350 Strike Call',color='r')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.grid()
plt.show()
放收益
def put_payoff(sT, strike_price, premium):
return np.where(sT < strike_price, strike_price - sT, 0) – premium
# Stock price
spot_price = 323.40
# Long put
strike_price_long_put = 280
premium_long_put = 1.20
# Short put
strike_price_short_put = 300
premium_short_put = 3.40
# Stock price range at expiration of the put
sT = np.arange(0.5*spot_price,2*spot_price,1)
payoff_long_put = put_payoff(sT, strike_price_long_put, premium_long_put)
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_put,label='Long 280 Strike Put',color='y')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.grid()
plt.show()
payoff_short_put = put_payoff(sT, strike_price_short_put, premium_short_put) * -1.0
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_short_put,label='Short 300 Strike Put',color='m')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.grid()
plt.show()
铁血秃鹰战略成效
payoff = payoff_long_call + payoff_short_call + payoff_long_put + payoff_short_put
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_call,'--',label='Long 370 Strike Call',color='g')
ax.plot(sT,payoff_short_call,'--',label='Short 350 Strike Call',color='r')
ax.plot(sT,payoff_long_put,'--',label='Long 280 Strike Put',color='y')
ax.plot(sT,payoff_short_put,'--',label='Short 300 Strike Put',color='m')
ax.plot(sT,payoff,label='Iron Condor')
plt.xlabel('Stock Price')
plt.ylabel('Profit and loss')
plt.legend()
plt.grid()
plt.show()
下一步
使用 Black Scholes 期权定价模型学习期权定价的建模,并为各种期权的组合绘制相同的图。您可以在该模型中放入任意数量的看涨和/或看跌期权,并使用内置宏(名为“BS”)来计算每个期权的基于 BS 模型的期权定价。
***更新:*我们注意到一些用户在从雅虎和谷歌金融平台下载市场数据时面临挑战。如果你正在寻找市场数据的替代来源,你可以使用 Quandl 来获得同样的信息。
免责声明:股票市场的所有投资和交易都有风险。在金融市场进行交易的任何决定,包括股票或期权或其他金融工具的交易,都是个人决定,只能在彻底研究后做出,包括个人风险和财务评估以及在您认为必要的范围内寻求专业帮助。本文提到的交易策略或相关信息仅供参考。
下载 Python 代码
- 铁秃鹰交易策略 Python 代码文件
Python Itertools 教程:安装、类型、示例
以重香重香
Python itertools 非常简单,是用 Python 实现迭代器的最好和最优雅的解决方案之一。但是迭代器是什么呢?
迭代器是一个可以被迭代的对象,它将返回数据,一次返回一个元素。它允许我们遍历一个集合的所有元素,而不管它的具体实现。
虽然迭代器是列出列表内容的好方法,但有时您会想,我们是否可以将所有的复杂性隐藏在一行代码中。例如,当我们比较两个不同的数据帧时,我们不想担心元素的数量。这就是 Python itertools 模块的亮点。
让我们浏览一下这个博客的大纲,然后直接进入主题:
好吧!我们来了解一下使用 itertools 的前提条件是什么。
从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,迭代器协议又由 next()和 iter()方法组成。
- iter()方法,该方法返回迭代器对象本身,在使用 for 和 in 关键字时使用。
- next()方法返回下一个值。一旦跟踪了所有对象,它还会返回 StopIteration 错误。
迭代器主要用在 for 循环中。你可以在 Python 手册中详细了解它们。
您可以使用以下命令
在 Python 代码中导入 itertools
Python 中的翡翠蜥蜴期权交易策略
原文:https://blog.quantinsti.com/jade-lizard-options-trading-strategy-python/
Newer technologies, better software, improvements in connectivity, etc. happening at a tremendous pace has led to a boom in the way knowledge is shared and accessed. Trading has always maintained the front seat position for primary advantage and the same goes for trading strategies. Every trading strategy can’t give you the same outcome, and it is also true that neither can assure consistent returns for longer durations. To stay up in the game, one has to keep learning, evolving and making their strategy even better. Options were created to help manage the risk better. Options trading strategies are widely practised today and produce various results under various conditions. Some of the well-known strategies are:
我们都读过像铁鹰、蝴蝶扩散、熊叫梯等许多交易策略。但是,在我看来,有一种策略在高隐含波动率期间能提供良好的结果,那就是翡翠蜥蜴。但是在我们去翡翠蜥蜴之前,让我们先了解一下蜥蜴在交易中的意义。
交易中的蜥蜴是什么?
蜥蜴是一种期权交易策略,交易者通过这种策略从交易中获利
- 在跨骑和勒死的情况下,蜥蜴降低了上行风险
- 当底层向走向停留或漂移时,它们是最有益的
- 高利润产生于高 IV 和非熊市环境
翡翠蜥蜴期权交易策略
这是一种中性或看涨的定制期权交易策略,具有特殊性。
- 它包括卖空交易和卖空交易差价
- 由于它由一个短期看涨期权价差组成,因此它略微看涨
- 它没有上行风险
- 它利用了看跌期权和看涨期权溢价的高波动性
- 执行的方式是:由完全信用产生的价值(从三叉持仓) > 之间的差额称为持仓执行价格
什么时候练翡翠蜥蜴?
如果有高 IV 和/或如果股票最近下跌,即股票超卖,通常实行 Jade Lizard 交易策略。
翡翠蜥蜴交易策略的组成部分
它包括:
- 使用看涨期权的空头垂直价差,以及
- 以低于看涨期权执行价格的执行价格卖出的看跌期权
在 Jade Lizard 期权交易策略中,我们卖出一个看跌期权和卖出一个看跌期权信用利差(确保收到的总信用大于利差的宽度),前提是标的不应大幅波动。在这里,收取的溢价大于看涨期权价差的宽度翡翠蜥蜴看起来像这样:
翡翠蜥蜴策略的设置
**利润:**利润这里是从期初交易 **Max 中收到的信用。获利:**标的在价差的看跌和做空之间到期。损失:如果信用小于看涨期权价差的宽度,并且有向上的移动步骤:
- 步骤 1 -以一个执行价格购买一个看涨期权
- 步骤 2 -以低于步骤 1 中买入的看涨期权的执行价格卖出看涨期权
- 第三步-以低于上述两个看涨期权的执行价卖出一个 OTM 看跌期权
<u>Note</u>: In case OTM Puts are bought, the Lizard will face the opposite direction
简而言之:翡翠蜥蜴=卖出扼死+买入 OTM 看涨期权在这里,交易的信用大于看涨期权的宽度
**Caution**:
Remember! Don’t confuse Jade Lizard with Big Lizard Strategy where,
Big Lizard = Sell Straddle + Buy OTM call
做出的假设:
- 丰富度:裸卖出交易>裸买入交易
- 丰富度(溢价):做空买入价差>做空卖出价差
大蜥蜴交易策略和翡翠蜥蜴交易策略的区别
- 大蜥蜴的交易策略和翡翠蜥蜴非常相似,是跨骑和绞杀
- 唯一的区别是,为了降低风险,他们增加了一个期权头寸
- 它们是密切相关的战略
- 在这两种策略中,具有相同到期月份的 3 种不同期权头寸被组合在一起
- 实践这两种策略的目的是最大化回报和最小化风险
大蜥蜴=卖出多空+买入 OTM 看涨
翡翠蜥蜴=卖扼死+买 OTM 召唤
翡翠蜥蜴策略示例
考虑一个 ABC 公司的例子。Jade Lizard 的设置如下:
因此,净信贷= 1 OTM 看跌期权+ 1 OTM 看涨期权- 1 OTM 看涨期权净信贷= 10+20-15 净信贷= 15 总的来说,我们收到的净信贷为 15 印度卢比盈亏平衡=做空看跌期权-收到的信贷盈亏平衡= 575-15 盈亏平衡= 560 因此,在我们的情况下,盈亏平衡将比当前现货价格下降 5.47%。
***Note:***
*- Strike Selection and impact of Volatility*
*- Short put profit should be around 70% and the call spread profit around 30%*
*- If the call spread is ITM, we have to buy it back*
实施翡翠蜥蜴期权战略
在这个例子中,我将使用 Tech Mahindra(股票代号:TechM)期权。过去 1 个月的股价变动(来源——谷歌财经)科技公司 Mahindra Ltd .的股价出现了相当大的变动,过去 1 个月最高为 702,最低为 652.95。为了这个例子的目的;我将卖出 1 美元的看跌期权,卖出 1 美元的看涨期权,买入 1 美元的看涨期权。以下是 TechM 的期权链,截止日期为 2018 年 5 月 31 日,来自 nseindia.com
理想情况下,以下应该是这个翡翠蜥蜴交易策略的收益。
用 Python 计算翡翠蜥蜴期权策略收益
现在,让我用 Python 编程代码带你看一下收益图。
导入库
import numpy as np
import matplotlib.pyplot as plt
电话支付
def call_payoff(sT, strike_price, premium):
return np.where(sT > strike_price, sT - strike_price, 0) - premium
# TECHM Stock price
spot_price = 688
# Long call
strike_price_long_call = 750
premium_long_call = 4.30
# Short call
strike_price_short_call = 730
premium_short_call = 6.80
# Stock price range at expiration of the call
sT = np.arange(0.9*spot_price,1.1*spot_price,1)
payoff_long_call = call_payoff(sT, strike_price_long_call, premium_long_call)
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_call,label='Long Strike Call',color='g')
plt.xlabel('Stock Price')
plt.ylabel('Profit and Loss')
plt.legend()
plt.show()
payoff_short_call = call_payoff(sT, strike_price_short_call, premium_short_call) * -1.0
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_short_call,label='Short Strike Call',color='r')
plt.xlabel('Stock Price')
plt.ylabel('Profit and Loss')
plt.legend()
plt.show()
放收益
def put_payoff(sT, strike_price, premium):
return np.where(sT < strike_price, strike_price - sT, 0) - premium
# stock price
spot_price = 688
# Short put
strike_price_short_put = 660
premium_short_put = 7.85
# Stock price range at expiration of the put
sT = np.arange(0.9*spot_price,1.1*spot_price,1)
payoff_short_put = put_payoff(sT, strike_price_short_put, premium_short_put) * -1.0
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_short_put,label='Short Strike Put',color='m')
plt.xlabel('Stock Price')
plt.ylabel('Profit and Loss')
plt.legend()
plt.grid()
plt.show()
翡翠蜥蜴的收益
payoff = payoff_long_call + payoff_short_call + payoff_short_put
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff_long_call,'--',label='Long Strike Call',color='g')
ax.plot(sT,payoff_short_call,'--',label='Short Strike Call',color='r')
ax.plot(sT,payoff_short_put,'--',label='Short Strike Put',color='m')
ax.plot(sT,payoff,label='Jade Lizard Payoff')
plt.xlabel('Stock Price')
plt.ylabel('Profit and Loss')
plt.legend()
plt.grid()
plt.show()
翡翠蜥蜴编队
payoff = payoff_long_call + payoff_short_call + payoff_short_put
fig, ax = plt.subplots()
ax.spines['bottom'].set_position('zero')
ax.plot(sT,payoff,label='Jade Lizard Payoff')
plt.xlabel('Stock Price')
plt.ylabel('Profit and Loss')
plt.legend()
plt.grid()
plt.show()
profit = max(payoff)
loss = min(payoff)
print (profit)
print (loss)
Max. Profit: 10.35 Max. Loss: -30.45
结论
从上面的剧情来看,对于翡翠蜥蜴期权策略 Max。利润和最大值。可以观察到损失。在本文中,我们通过一个真实的市场例子以及理解如何用 Python 计算策略,涵盖了 Jade Lizard 交易策略的所有要素。回报也可以在 Excel 表格的帮助下计算,我已经提供了一个可下载的文件和 Python 代码。
下一步
你是否热衷于学习更多关于算法交易的知识?联系我们,了解不同的金融策略世界观。 QuantInsti 帮助人们获得适用于各种交易工具和平台的技能。算法交易(EPAT)的高管课程涵盖了统计学&计量经济学、金融计算&技术和算法&量化交易等培训模块。EPAT 让你具备成为成功交易者所需的技能。免责声明:股票市场的所有投资和交易都有风险。在金融市场进行交易的任何决定,包括股票或期权或其他金融工具的交易,都是个人决定,只能在彻底研究后做出,包括个人风险和财务评估以及在您认为必要的范围内寻求专业帮助。本文提到的交易策略或相关信息仅供参考。
下载数据文件
- 翡翠蜥蜴期权策略- Python 代码
- 翡翠蜥蜴收益计算- Excel 表
日本烛台交易策略
原文:https://blog.quantinsti.com/japanese-candlestick-trading-strategy/
由杰伊·马尼尔
关于日本烛台交易
据说日本人在 17 世纪用技术分析来交易大米。据说,一个来自坂田的名叫 Munehisa Homma 的大米交易商发明了这种绘制蜡烛图的技术来分析市场上大米的每日现货价格。根据现代烛台制图之父史蒂夫·尼森的说法,使用烛台的正当交易始于 19 世纪 50 年代。你可以参考这篇博客烛台图案的意义及其解剖来了解烛台的基本概念。
在这篇博客中,我们的目标如下:
- 对剧情烛台使用 Python
- 使用**“三根日线蜡烛”**理解烛台交易策略
使用 Python 绘制烛台
我们将从雅虎数据库中获取任何相关的每日财务数据,并用它来绘制我们的烛台。在本例中,我们将绘制日常“间谍”烛台。您可以更改股票代码,如:“谷歌”、“APPL”、“MFST”等。绘制你自己的蜡烛图。
对于数据可视化,我们一般使用’ matplotlib.pyplot '库。Matplotlib 还提供一小部分特殊融资地块,如烛台。这种类型的绘图可在“matplotlib.finance”子库中找到。
我们将进一步使用通过使用“bokeh.plotting”接口创建的散景图,该接口带有一组默认工具和默认视觉样式。Bokeh 使用 Python 交互式可视化库,面向现代 web 浏览器进行演示。
上述代码的输出如下:
我们提供的工具将帮助您使用方框缩放和滚轮缩放来“平移”图表和“放大”或缩小。还有一个重置按钮来显示实际输出,保存按钮将帮助您下载在浏览器中显示的图像(即使是缩放的图像)。
理解使用“三根日线蜡烛”的烛台交易策略
让我们看看一个简单的每日交易策略,我们将查看过去三天的蜡烛线,并预测我们是否会在第四天做多或做空。我们将在第四天结束前平仓并记录盈利/亏损,
【做多】或第四天买入的交易规则:
规则 1:不管蜡烛的颜色如何,最近的蜡烛体必须比前两根蜡烛体大。
规则 2:第二根日线蜡烛必须是红色的。
规则 3:最近一根蜡烛线的收盘价必须比第二根日线的收盘价高。
规则 4:你将在第四天早上交易开始时买入,在收市前卖出。
在第四天进行**【做空】**或卖出的交易规则
规则 1:不管蜡烛的颜色如何,最近的蜡烛的主体必须大于前两根蜡烛的主体。
规则 2:第二根日线蜡烛必须是绿色的。
规则 3:最近一根蜡烛线的收盘价必须小于第二根日线的收盘价。
规则 4:你将在第四天早上交易开始时“卖出”,在收市前“买入”。
如果“收盘”太近,你可以通过在某些地方不遵循规则 3 来放松“买入”和“卖出”信号,但更保守的方法是遵循所有三个步骤。
如果你自己绘制一张蜡烛图,并试图找到你正在考虑的资产的“买入”和“卖出”信号,那将会很有趣。
此外,有各种各样的烛台模式,你会在网上找到。你也可以参考这个博客烛台交易——一个动量策略和例子【EXCEL 模型】,了解动量策略,你观察前 n 个烛台上的价格,并据此下注。一个有趣的练习是试图在你绘制的蜡烛图中找到它们。
除此之外,你可以查看我们博客上关于不同量化交易策略的文章。
但是在我结束之前,我想特别感谢 Abhishek Kulkarni 先生帮助我完成烛台绘图代码。
所以祝你好运,享受你的烛台图表。
下一步
如果你对探索算法交易策略感兴趣,那么请查看我们的EPAT项目。它涵盖了算法&量化交易、金融计算、技术、统计和计量经济学等培训模块。EPAT 让你具备成为成功的算法交易者所需的技能。现在报名!
更新
我们注意到一些用户在从雅虎和谷歌金融平台下载市场数据时面临挑战。如果你正在寻找市场数据的替代来源,你可以使用 Quandl 来获得同样的信息。
下载数据文件
- Python 中的日本烛台交易策略
Johansen 协整测试:学习如何用 Python 实现它
原文:https://blog.quantinsti.com/johansen-test-cointegration-building-stationary-portfolio/
在这篇博文中,您将了解 Johansen 协整测试的本质,并学习如何用 Python 实现它。另一个流行的协整检验是增强的 Dickey-Fuller (ADF)检验。ADF 试验有局限性,使用 Johansen 试验可以克服这些局限性。
ADF 检验可以用来检验两个时间序列之间的协整关系。Johansen 检验可用于检查最多 12 个时间序列之间的协整性。这意味着可以使用两个以上的时间序列创建资产的静态线性组合,然后可以使用均值回复策略进行交易,如 Pairs Trading 、Triplets Trading、指数套利和多空投资组合。要了解更多关于这些策略的信息,请报名参加由 E . P . Chan 博士主讲的课程Python 中的平均还原策略。
第二,ADF 检验在改变两个时间序列的顺序方面给出了不同的结果。这可以通过使用 Johansen 检验来克服,因为它是顺序独立的。现在让我们看看约翰森测试背后的数学原理。
约翰森测试背后的数学
约翰森测试是基于时间序列分析。ADF 测试是基于一个自回归模型,一个时间序列的值是基于同一时间序列以前的值回归的。当有一个以上的变量时,您仍然可以将当前价格的关系写成自回归模型中过去价格的线性函数,但为了更准确,该模型被称为向量误差修正模型(VECM)。下面给出的是 VECM 的公式。
在这个等式中,我们有多维变量,因此乘法将是矩阵乘法。因此,该方程中每个滞后项的系数都是矢量项。
在 Johansen 测试中,我们检查 lambda 是否有零特征值。当所有特征值都为零时,这意味着该序列不是协整的,而当一些特征值包含负值时,这意味着可以创建时间序列的线性组合,这将导致平稳性。
这些价格的线性组合代表投资组合的净市场价值。如果投资组合的价值变化通过负回归系数或负特征值与其现值相关,那么我们将得到均值回复或平稳投资组合。这是约翰森测试的精髓。
Johansen 测试的 Python 实现
现在让我们用 Python 对一对资产进行约翰森测试,这里我们以 GLD - GDX 对为例,GLD 是 SPDR 黄金信托 ETF,GDX 是黄金矿工 ETF。我们可以预期这两种资产是相关的,我们现在将检查这些资产是否是协整的,如果是,那么我们可以在这一对上创建一个配对交易策略,这将被证明是有利可图的。浏览下面提到的代码:
我们将从导入两个库开始。要导入的第一个库是 Pandas 库,它将用于从 CSV 文件中读取数据,然后创建包含两个仪器数据的数据框。
其次,我们将从 johansen 库导入 coint_johansen 函数,这是由 Toledo 大学经济系的 James LeSage 开发的函数。你可以从这里下载这段代码。
一旦库被导入,我们通过从 csv 文件中读取数据,将两个证券的数据存储在变量 df x 和 df y 中。接下来,我们创建一个数据帧 df,它存储我们必须运行 Johansen 测试的两个时间序列。
然后,我们调用 coint_johansen 函数,将存储时间序列数据(df)的数据帧、0 和 1 作为它的三个参数。自变量中的第二项表示零假设的阶,值 0 意味着它是一个常数项,多项式中没有时间趋势。第三项指定了计算估计量时使用的滞后差分项的数量,这里我们使用单个滞后差分项。
这个测试的输出为我们提供了跟踪统计和特征统计。
迹统计告诉我们特征值之和是否为 0。零假设 r<=0 给出了 17.895 的跟踪统计量,因此零假设可以在 95%的置信水平上被拒绝,因为跟踪统计量的大小大于临界值。请注意,Johansen 测试仅给出了输出的大小,因此我们无需担心符号。
本征统计按照数量级递减的顺序存储本征值,它们告诉我们序列的协整有多强,或者均值回复的趋势有多强。在我们的例子中,可以在 95%的置信水平上拒绝零假设的特征统计,因为 17.5694 大于 14.2639。
特征向量给出了时间序列均值回复线性组合的方程。对应于最高特征值的特征向量代表具有最大均值回复特性的投资组合。零假设是时间序列没有协整,因此当我们拒绝零假设并接受替代假设时,我们认为序列是协整的。
Johansen 检验的性质
即使时间序列的顺序颠倒,Johansen 测试也会给出相同的结果,您可以将此作为一个练习。这种检验可以作为检验协整的一种独立于顺序的方法。该测试允许我们检查三个一组、四个一组等多达 12 个时间序列之间的协整性。
原因很简单,没有数学家能够计算超过 12 个变量的临界值。因此,结果不能用来拒绝零假设。根据计算能力的可用性,向量误差修正模型甚至可以用于 1000 只股票。它将无法判断股票是否是协整的,但它仍然可以用作预测模型。
后续步骤
学习使用蒙特卡罗模拟优化 Python 中的投资组合。这篇文章解释了如何给你的股票分配随机权重,并计算你的投资组合的年回报率和标准差,这将允许你选择一个具有最大夏普比率的投资组合。
计算之旅:从帕斯卡的计算器到机器学习
正如我们今天所知道的,计算机或计算设备被用于大量的活动,从计算数据、与数千英里之外的人通信、娱乐、记录和保管文件等等。
然而,当计算机或计算机器的概念首次概念化时,它是一个严肃的行业,主要用于处理大量的数字。即使现在回想起来也很有趣,考虑到当前的技术场景,那些相同的计算可以通过智能手机等小型计算设备以快数百倍的速度完成。然而,它看起来很迷人,从来没有这么容易,人类花了超过四百年(400 年)来完成这一转变,围绕这一转变的事实确实令人惊讶。
围绕计算发展的另一个有趣因素是数据生成。仅仅在过去两年内,我们就创造了当今世界大约 90%的数据,这简直令人难以置信。
IDC/EMC 数字世界报告 2008-2017 年数据曲线鸣谢:Weforum.orgT3】
在这篇博客中,我们将踏上一趟计算世界的旅程,了解计算最初是如何开始的,以及自那以后我们所取得的成就。我们还将在博客中专门用一小部分来介绍数据生成的发展。
本博客分为以下几类:
早期计算时代
这可以追溯到 17 世纪中期,当时哲学家“Ramon Llull”进行了思想实验,以创建能够以非常系统和简单的方式产生新知识的逻辑机器。鉴于技术资源匮乏,当时不可能制造出这样的机器。然而,它让位于一种新的思维方式,即计算逻辑运算符和创建有意义的结论,从而增加价值。Ramon Llull 的工作对德国数学家 Gottfried Leibniz 的工作产生了重大影响,他在 1671 年设计了一台机器,可以通过连续加法进行乘法,并通过连续减法(带小数)进行除法,这就是所谓的“步计算器”。莱布尼茨一直是使用计算机的信徒,并表示聪明人不应该在计算上浪费时间。
【步行者 Wikipedia.com】
有趣的是,大约在莱布尼茨的发明之前三十年,在德国附近的一片土地上,法国数学家布莱士·帕斯卡发明了帕斯卡林。帕斯卡林,发明于 1642-1644 年,是一个主要的计算器或累加器,用于在输入数字的同时通过操纵表盘来单独做加法和减法。下面是同样的一张图片:
【Pascal ine(Wikipedia . com)
帕斯卡灵问世近 10 年后,受帕斯卡工作的影响,塞缪尔·莫兰发明了两种计算器,这两种计算器有八个表盘,可以用触笔移动。幸存下来的一个模型,可以添加多达一百万个小数。
虽然 17 世纪对计算机行业来说是不可思议的,但相对而言,18 世纪几乎没有开创性的发明。到 1800 年初,确切地说,是 1804-05 年,约瑟夫·贾卡发明了提花系统。他的系统使用可互换的穿孔卡片来控制布料的编织,并且可以设计任何图案。这些穿孔卡片后来被伟大的发明家如查尔斯·巴贝奇和赫尔曼·何乐礼用于开创性的计算机器。真实地说,即使 Jacquard 系统没有直接连接到计算数字,它的计算架构对后来设计的计算引擎是一个很大的补充。
大约 20 年后,第一台计算设备由查尔斯·巴贝奇制造,名为“差异引擎”。他在 1822 年宣布了它的发明,并在 1822-1830 年间建造了它。与简单的计算器相比,它是一种高级升级产品。它有能力对多个变量进行一系列计算,以计算复杂的数字。它的工作原理是“n + 1 ”,一旦任务完成,它还可以被重置。差异引擎也有一个临时数据存储系统,用于额外的高级过程,并有金属指针来标记其输出,这些输出后来被打印在印刷版上。它是一台逻辑结构化的计算机器,对现代计算产生了巨大影响。
【差异引擎(演职员表:Wikipedia.com)
有趣的是,在同一时期,年轻而聪明的数学家阿达·洛芙莱斯在一次聚会上遇到了查尔斯·巴贝奇,两人开始研究“分析引擎”。她还被誉为“世界上第一个程序员”,这个词至今仍在圈内引起激烈争论。她的第一个程序围绕着“伯努利数”的计算,这本身被认为是数学中最古老和有趣的问题之一。分析引擎的一个关键属性是将数字和指令存放在临时存储器中,并在需要时计算这些数字。这是通过在其阅读器中订购适当的指令和数据来实现的。存储数字以供临时使用的想法在今天仍然非常流行,并且被用于现代商业计算器甚至是最简单的计算设备中。鉴于所有这些事件,很明显,探索计算领域或计算领域的想法正在学术界和研究界兴起。
数据存储的里程碑
19 世纪 80 年代,年轻的美国发明家赫尔曼·何乐礼发明了制表机,专门用于计算美国人口普查。这是一种机电计算设备,用于在穿孔卡片上存储和汇总信息。它有一个简单的机制,机器一次读取一张穿孔卡片,并按时间顺序打印出来,然后将算术值存储在累加器中。由此,我们可以说数据存储的重要性是显而易见的,这一领域的进步也是后来才有的。制表机的改良版本甚至在最近的 20 世纪 80 年代中期就开始使用,直到今天,在全球各地的投票中都能看到。
【制表机(演职员表:Wikipedia.com)
电信和计算机的开始
1903 年,尼古拉·特斯拉(有史以来最伟大的发明家之一)因其发明“信令系统”获得美国专利号 725605,该发明提到通过无线传输传输信息,后来还被用于跳频扩频系统(FHSS)的发明。FHSS 使用一种方法将修改后的无线电波信号快速传播到不同的频道,这种方法只有信号的发送方和接收方知道。这种技术现在被用在一些通信系统中,如蓝牙、局域网等。
演员兼发明家海迪·拉马尔在她的专利发明“秘密通信系统”中也提到了我们目前在 FHSS 技术中使用的机制。它是为美国海军在第二次世界大战期间用于干扰网络而开发的,然而,它从未被美国海军用于任何目的。简而言之,FHSS 利用频率和时间的函数来增加带宽。这目前用于创建安全连接,增加通信信道的范围,并减少噪音和无线电干扰。
通过跳频扩频系统(FHSS)的发明可以正确地推断出电信的开始。
快速发展阶段
电信是现代计算发展的主要驱动力之一。在 20 世纪 30 年代早期,发明了电传消息系统或网络,其中双向文本消息可以通过使用电话级连接电路将电传打字机连接到同一电话网络来执行。这是第一次如此精确地进行双向交流。电传信息的主要进步之一是“你是谁”代码。通过这个代码,一旦消息被发送,对消息的回复也可以被发送以完成通信会话。电传信息系统的这种交互功能给这种设备带来了巨大的普及。
【Wikipedia.com】
图灵和人工智能
1937 年 1 月,一位年轻的计算机科学家艾伦·图灵发表了一篇关于“可计算数字及其在决策问题中的应用”的研究论文,这篇论文中的某些理论为今天的现代计算机科学奠定了基础。他提到了一个假设的计算机器的理论模型,如果给定变量的输入,它可以确定结果。这就是后来被称为**“图灵机”。现在,可能有不同类型的图灵机和一个“通用机器”可以被创造出来模拟所有的图灵机。所有这些都是图灵本人提出的。难怪他被认为是【计算机科学之父】**。
图灵也被广泛认为是人工智能领域最早的先驱。他提出了**“图灵测试”,**这是一个理论概念,如果计算机能够提供与人类相似的结果,那么计算机就能通过测试。测试的设置是这样的,第一个人在一个房间里充当提问者,第二个人和计算机在另一个房间里充当回答者。第一个人和第二个人会问一系列问题,计算机会回答这些问题。如果第一个人有 30%的时间被欺骗,认为响应来自人类而不是计算机,那么这台计算机就被认为通过了“图灵测试”。尽管这被广泛认为是一个艰难的基准,但在图灵测试存在 65 年后的 2014 年,聊天工具“尤金·古斯曼”在伦敦有 33%的时间通过了提问者杜平的测试。在这里阅读更多。
这项测试被认为是导致人工智能发展的重要理论之一,并使“思维机器”的概念概念化,这是大多数现代计算机科学家一直在努力的事情!
现代计算机和编程
尽管取得了所有这些进步,但直到 1954 年末,随着 IBM 650 的推出,商用计算机的真正市场才开始出现,IBM 650 具有两种状态和五种状态组成的十进制数的数据和地址。例如“01-00100”。它能把穿孔卡片上的字母和特殊字符转换成两位小数。这台机器的这一特点尤其吸引了学生以及来自商界和科学界的人士。它售出了大约 2000 台,与当时其他可用的计算机相比,这是一个巨大的数字。甚至 IBM 曾经提到,“没有其他电子计算机生产出如此大的数量。”。
1957 年,IBM 的研究人员推出了一个数值计算程序“FORTRAN”。它也被称为“编程系统之父”。FORTRAN 的逻辑后来被编译成流行的编程语言,如 C、C++等。最初启动时,它有 32 个语句,包括 DO、IF 等。有趣的是,它使用了“IF”语句,该语句的概率用著名的“蒙特卡罗模拟”原理进行加权,该原理用于优化内存中的基本块。即使按照目前的计算标准,这也是一种非常先进的优化技术。下面是一个 FORTRAN 90 语言的例子:
*PROGRAM Triangle*
*IMPLICIT NONE*
*REAL :: a, b, c, Area*
*PRINT *, 'Welcome, please enter the&*
*&lengths of the 3 sides.'*
*READ *, a, b, c*
*PRINT *, 'Triangle''s area: ', Area(a,b,c)*
*END PROGRAM Triangle*
*FUNCTION Area(x,y,z)*
*IMPLICIT NONE*
*REAL :: Area ! function type*
*REAL, INTENT( IN ) :: x, y, z*
*REAL :: theta, height*
*theta = ACOS((x**2+y**2-z**2)/(2.0*x*y))*
*height = x*SIN(theta); Area = 0.5*y*height*
*END FUNCTION Area*
来源:一个 Fortran 90 程序的例子T3】
由于其数学风格,输入也应用相同的逻辑。
鉴于代码的简单性,一个非程序员第一次可以知道一个程序到底能做什么,并同时理解它。这是向更广泛的受众开放计算设备的有力一步。此外,在 1958 年:杰克·基尔比和罗伯特·诺伊斯推出了集成电路。尽管他们分别从事这项工作,但他们的发明彼此非常相似。Kilby 发明了一种混合集成电路(互连微芯片),Noyce 发明了一种完整的单片集成电路(一个小半导体芯片上的一组电子电路)。这是计算机行业的一个巨大转折点,因为集成电路首先尺寸非常小,同时成本很低。这意味着计算设备可以以比以前更大的规模生产,并以有利于生产商的最优价格生产。
第一个调制解调器
1958 年,贝尔实验室(现称美国电话电报公司)推出了贝尔 101 数据电话。数据电话类似于现代的调制解调器,借助电话线,数据可以以每秒 110 位的速度从一台计算机传送到另一台计算机。然而,贝尔 103 调制解调器比它的前身更成功,能以每秒 300 位的速度传输更多的数据。事实上,Bell 103 调制解调器今天仍在用于非商业目的。
基本语言
随着所有的发明都发生在计算领域,编程界也呈指数增长,到 1964 年,Thomas E. Kurtz 和 John G. Kemeny 推出了最初的 BASIC 语言。BASIC 最初在每一行的开头使用的数字,用来表示程序中命令的顺序。线被编号为 30、40、50 等。这也可以在需要时在命令之间放置额外的方向。另一个元素“GOTO”语句循环回到先前指示的方向。
例如,BASIC 程序的第 350 行将具有“if”子句,该子句指示计算设备在变量大于 40 时跳回到第 200 行。该指令可按如下方式编程:
350 IF (N >40) THEN GOTO 200
BASIC 语言受到 ALGOL58 之类的算法的影响,ALGOL 58 的概念是基于块结构的概念,通过执行“begin”和“end”或类似的关键字来创建边界。1969 年,贝尔实验室的开发人员创造了 UNIX 操作系统,解决了兼容性问题,延续了令人兴奋的新编程语言趋势。该操作系统是可移植的,可以跨多个平台转移,这使得它在政府机构和商业实体中很受欢迎。
70 年代
到 20 世纪 70 年代初,计算机行业的发展已经开始有了明确的方向。新发明开始彻底改变计算机行业。例如,1970 年,英特尔公司推出了英特尔 1103(一种主要的商用动态存取存储器(DRAM)芯片)。这使得微小的电容器和晶体管在存储单元中存储每一位数据,从而实现更好的数据传输。
1971 年,阿兰·舒加特和他在 IBM 的团队设计了“软盘”,允许计算机之间的知识共享。这一吸引人的商业策略使拥有技术的消费者能够在他们之间分享知识,这一策略非常受欢迎,并且已经开始作为一个整体塑造计算机行业的未来商业决策。
1973 年,施乐公司的研究人员推出了“以太网”。它创造了一种可以远程连接多台计算机的技术。这是一个转折时期,也是互联网革命的巨大财富,这场革命将在十年内冲击大众。与最初的版本相比,现在的以太网更大、更快、更先进。以太网网络目前分为 4 种速度,可以在每种速度下平稳运行。速度范围从 10 Mbps 开始,限制到更高的 10,000 Mbps。无论何时发明了更快的版本,它都不会淘汰旧版本,而是以太网控制器转换其速度以匹配最慢的连接设备,这在混合两种技术时非常有用。
在程序设计方面,C 语言,可以说是一种主要的程序设计语言,是由丹尼斯·里奇于 1972 年开发的。c 与以前的编程语言完全不同,可以被称为过渡性的计算语言,它提供了一种更新更好的编程语言编写方式。C 充分利用了指针,被创造得快速而强大。然而,由于它是高级语言,C 很难读懂。但它修正了早期发明的“帕斯卡”中普遍存在的大多数错误。这种语言的语法非常简单,并且只需要很少的内存。这就是为什么它至今仍在使用,并且这种语言的组成部分已被用于其他主要语言,如 C++,Java 等。
个人电脑革命
随着 HP 3000、HP 2640 系列、Apple I/II/III、Apple Lisa、IBM S 34/36/38 的推出,70 年代末和 80 年代推出了一批小型机,消费者在购买小型机时有了很多选择。有趣的是,英特尔成为了 IBM 的微芯片供应商,并创造了像英特尔 80386 这样的成功产品,这是一种 32 位微处理器芯片,比当时生产的任何英特尔芯片都快几倍。事实上,它已经成为一种标准处理器,并被“康柏”公司用于其个人计算设备。多进程快速计算设备的想法是科技公司的一个关键动力,最终,消费者对这种设备的需求增加了。此外,在同一时期,SQL、Mathematica、Octave、Matlab 和 Python 等语言相继发布,改善了计算行业的硬件和软件。这些语言在计算行业中仍然非常流行,并且在高度计算的计算中大量使用。
信息时代还是互联网时代
互联网在 20 世纪 90 年代开始流行,是人类有史以来最引人入胜的技术发明。为了评估互联网的可能性,美国高级研究计划局(ARPA)设立了一项基金,用于研究和开发学术界和政府实体之间的通信网络。1969 年,阿帕网启动,成为第一个也是同类网络系统之一。直到 1990 年,当蒂姆·伯纳斯·李(人们普遍认为他是互联网的创造者)和欧洲核研究组织的其他人提出了一个协议,其核心是基于超文本的协议,以使信息传播更容易时,ARPA 创建一个可以将知识链接在一起的网络的愿望才得以实现。
这也是第一次使用 TCP/IP 技术,这种技术如今在互联网网络中广泛使用。这导致了私营组织跟随政府的步伐为互联网提供资金,到 20 世纪 90 年代,商业组织开始将其系统互联。1991 年,这导致了万维网(WWW)的诞生,它仍然是计算机行业最大的革命之一。其系统网络使用户创建网页成为可能。美国国家超级计算应用中心的一组程序员发明了使使用互联网更容易的“浏览器”,1994 年成立的网景通信公司推出了“马赛克网景 0.9”以使这项新发明的技术商业化。
互联网革命的另一个推动力是 HTML 的引入,HTML 不仅仅是超文本(包含网站链接的一个或多个单词)。它的工作方式是在屏幕上显示文本和图像,决定计算设备如何对按键或鼠标点击做出反应。HTML 之所以流行,是因为它可以用任何类型的计算设备阅读,同时又非常经济。网页设计者可以在小尺寸的网页上创建丰富的图形。小文件在像互联网这样的网络上很重要,因为它们在相距很远的计算设备上交换信息更快更容易。
随着 HTML 的发明,网络诞生了。HTML 使得创建包含图像、视频和声音的网站变得简单而容易。这个小文件允许通过互联网快速交流。在很短的时间内,每个人都意识到了网络作为全球交流工具的潜力,并希望尽快掌握它。网络发展迅速,正如我们今天所知,每天有数百万人出于各种目的访问互联网,如新闻、娱乐、购物等。后来,HTML 的各种版本相继推出,提高了效率,并在某种程度上控制了网页的行为。
人工智能、机器学习和数据科学
“数据科学”这个术语第一次被听到是在 1974 年初,当时彼得·诺尔发表了他的论文“计算机方法简明概览”。后来,威廉·克利夫兰在 2001 年发表了他的论文《数据科学:扩展统计领域技术领域的行动计划》,强调它是一门独立于计算机科学的思想学科。
应用著名的帕金森定律,数据应该扩展,直到填满磁盘空间。“数据-磁盘”交互是一个指数级的积极事件,一连串的事件导致人们购买越来越多的磁盘,同时产生越来越多的数据。有趣的是,这违背了经济学的供求原则。这一系列磁盘数据事件是产生“大数据”的原因。大数据是众所周知的数据集,它非常大,因此在常规数据库管理工具的帮助下执行时变得复杂和难以分析。它被用来总结模式、人类行为,也用来在分析过去之后预测未来。大数据已经成为一种非常流行的技术,几乎应用于每个行业。
云计算的发明满足了以更高效的方式计算大数据的需求。它是在亚马逊、谷歌和微软等科技巨头的参与下创建的。云计算中最重要的分析工具之一是 Hadoop。Hadoop 用于计算云平台上的大数据。
标准的计算规范是将数据传递给算法。Hadoop 计算风格遵循与标准计算风格相反的原则。数据太大了,无法放入算法中。相反,它将算法的许多副本推送到数据中。
事实证明 Hadoop 也很难执行。它需要先进的计算能力。由此,也创造了一个创建分析工具的市场,这需要可以在 Hadoop 上运行的更简单的界面。
除了全球的技术进步,计算行业开始转向机器学习的应用,该应用专注于让算法从可用数据中进行自我学习,以便根据之前收集的信息对未分析的数据进行判断和预测。一般来说,机器学习分为三个关键部分:
- 监督机器学习算法
- 无监督机器学习算法
- 强化机器学习算法
互联网、数据爆炸和金融市场
随着互联网的广泛使用,金融市场也变得高效起来。现在,任何人都可以在任何交易所交易美国存托凭证(ADR ),但须遵守特定的条款和条件。甚至围绕美国存托凭证与交易所内等价股票价格交易之间的差异原理,建立了套利策略。互联网带来了数据爆炸,到 2000 年代中期,它通过提供为所有人创造公平竞争技术的工具和技术,使金融市场民主化。然而,鉴于信息传播的增加,这也导致波动性增加。互联网使企业、金融市场和交易交易所按照均衡状态进行供应和分配,在互联网渗透之前,这种均衡状态存在地理边界和复杂的国与国之间的法规等障碍。
互联网将所有公司聚集在一起,在消除不平等的同时,加强了金融市场的公平竞争。
算法交易是结合了统计学、计算机科学和金融领域的最新产品,它提高了市场的效率。算法交易开始于 20 世纪 80 年代末和 90 年代。人们经常批评它让 1987 年的美国市场崩盘变得比预期更糟糕。算法交易在 2001 年开始流行,当时 IBM 和 HP 分别推出了他们的算法策略 MGD 和 ZIP,它们成功地击败了人类交易者,并在市场上产生了更好的 alpha。算法交易基于算法或小指令的原理,因此让位于高频交易,这种交易在很短的时间内进行数百万次交易。这也增加了市场的流动性和更好的资产定价。
结论
1965 年,当戈登·摩尔向全世界宣布摩尔定律时,他就已经预测到了计算或计算能力的增长。该定律指出,自第一个集成电路问世以来,集成电路上每平方英寸的晶体管数量每年都会翻一番。
摩尔当时预测,这种模式在未来仍会看到。然而,近年来,这种趋势已经失去了它的步伐,然而,它仍然是一个引人注目的增长故事。包括摩尔本人在内的大多数专家预计,摩尔定律将在 2020-2025 年之前有效,然后开始对增长失去意义。
与人类 10000 多年的历史相比,过去 4 到 5 个世纪中计算和计算设备的发展是非常惊人的。这一切都始于以更好的方式执行计算的冲动,几个世纪后的今天,大型高速计算设备在几秒钟内完成了数百万次计算。未来会有更多这样的模范发明和先进技术被发现,这将使我们的生活变得更加轻松和无忧无虑。总而言之,现代计算让人们的生活变得更加轻松和舒适。技术进步提供了与数十亿人保持联系的机会,这些人可能在世界的不同地方,但仍然可以非常轻松地相互交流。
最后,我想给你们留下一个精彩的数据表示,它比较了人脑可以容纳的数据和目前计算设备可以容纳的数据。
【记忆量表(演员表:Visualcapitalist.com)
如果你想学习算法交易的各个方面,那就去看看算法交易的高管课程( EPAT )。课程涵盖统计学&计量经济学、金融计算&技术和算法&定量交易等培训模块。EPAT 教你在算法交易中建立一个有前途的职业所需的技能。立即报名!
免责声明:本文提供的所有数据和信息仅供参考。QuantInsti 对本文中任何信息的准确性、完整性、现时性、适用性或有效性不做任何陈述,也不对这些信息中的任何错误、遗漏或延迟或因其显示或使用而导致的任何损失、伤害或损害承担任何责任。所有信息均按原样提供。T3】