利用贝叶斯思维来验证我的交易法则
发布时间:2018-10-30 14:10阅读:768
期货手续,期货开户,期货咨询,弘业期货开户专员联系方式:18912929558(微信)
提出问题
我们都知道现货与期货之间的价差叫做基差,随着交割日的临近基差会不断收敛并最终进行修复。然而,基差修复有两种可能性:一种是期货向现货进行修复,另一种是现货向期货进行修复。我曾在专栏文章中提出了利用库存的方式来判断基差的修复方向,今天让我们用概率论中的贝叶斯法则来简单验证一下:根据库存的判断方法,当期货深度贴水时,期现价差时如何进行修复的?
贝叶斯规则介绍
再介绍贝叶斯公式之前,先来聊一聊条件概率。条件概率是指在知道其他事件发生的条件下当前事件发生的概率。两个事件存在某种程度的依赖,否则一个事件的发生不会改变另一个事件。用公式表示为:
P(X|Y)=P(X,Y)/P(Y)
P(Y|X)=P(X,Y)/P(X)
利用这两个等式,我们可以轻松地推导出贝叶斯公式。
P(X|Y)=P(Y|X)*P(X)/P(Y)
在这个公式中,P(X|Y)叫做给定Y下X的后验分布,P(X)叫做先验分布,P(Y|X)叫做似然率,P(Y)叫做归一化因子。对于P(Y),我们可以利用边缘概率密度函数求积分的方式来计算,
我们可以这样来理解以下贝叶斯公式:
1. 先验分布P(X)是指我们在知道其他信息之前对X的认识,即我们的初始信念。
2. 给定X值下的似然率,是指我们可以生成什么样的数据Y。也就是说,对于所有的X,Y的概率是多少。
3. 后验概率P(X|Y)是指观察到Y后,对X产生新的信念。
这个公式也给出了更新变量X信念的前向过程,使用贝叶斯规则可以计算X新的分布。如果又收到了新的信息,我们可以一次又一次更新信念。
模型构建
我们首先确定一个基差修复方向的随机变量spread,这个随机变量有两个状态{future, spot},其中future代表期货向现货修复,spot代表现货向期货修复。我们认为这两种情况的可能性是相同的,因此先验分布为:
P(spread=future)=0.5
P(spread=spot)=0.5
接下来我们需要确定第二个随机变量库存supply,库存可能是高的,也可能是低的,所以这个随机变量包含两个状态{high, low},其中high代表高库存,low代表低库存。同样,我们需要给出变量supply的先验分布,在贝叶斯公式中,我们需要给出先验分布和似然率分布,在这个例子当中,似然率分布是P(supply|spread),而不是P(supply)。
事实上,在这里我们定义了两个分布:一个是spread=future时的概率,一个是spread=spot时的概率。我们需要回答两个问题: 当期货向现货修复时,对应的库存是高或者是低的可能性是多少?
当现货向期货修复时,对应的库存是高或者是低的可能性是多少?
让我们给出最有可能的猜测,无论你是支持贝叶斯派还是支持频率派,因为我们有下列的统计结果:
P(supply=high|spread=future)=0.1
P(supply=low|spread=future)=0.9
P(supply=high|spread=spot)=0.9
P(supply=low|spread=spot)=0.1
模型应用
现在我们完整地刻画了这一模型,并可以使用它了。使用贝叶斯模型是要在新的事实可用时计算后验分布。在我们的例子当中,我们想知道,在已知低库存的情况下,期货是否向现货进行修复(注意:我们的一个隐含前提是期货深度贴水与现货)。所以我们想要计算P(spread|supply),只需给出P(spread)和P(supply|spread),然后利用贝叶斯公式来转换概率分布即可。
例如,假设我们最后一次观察发现库存是低的,即supply=low。根据贝叶斯公式:
P(spread=future|supply=low)
=P(supply=low|spread=future)xP(spread=future)/(P(supply=low|spread=future)xP(spread=future)+P(supply=low|spread=spot)xP(spread=future))
=0.9x0.5/(0.9x0.5+0.1x0.5)=0.9
也就是说,如果期货深度贴水与现货时,当我们发现商品处于低库存状态,这个时候期货上涨向现货进行修复的概率为90%。这个概率还是比较高的,也相对符合实际情况。
R语言模拟
那么问题来了,有的交易者也许会问,怎么能根据一次现象来判断这个交易方法的意义呢,多观测几次还会是这个结果吗?贝叶斯派的做法是使用后验概率作为新的概率,并在序列中更新后验分布。但问题是手工做做起来比较麻烦,我们用R编程语言来简单实现一下。
首先,我们需要计算给定的先验分布。
然后,我们需要计算给定的似然率。
最后,我们还需要一定的观察数据,用于测试我们的交易方法和计算后验概率。
以上三个必要的参数完成以后,我们就可以来定义贝叶斯函数啦:
在定义上述的bayes函数中,我们主要做了以下几件事:
第一,我们建立了一个后验分布的矩阵posterior来存储计算结果。
第二,我们把矩阵的行列名称给进行了修改。
第三,我们利用贝叶斯公式以及观测数据来把posterior矩阵填满。
第四,返回由先验概率和后验概率构成的联合矩阵。
最后我们使用matplot函数来绘制出两个分布的演化情况,绿色的线是期货向现货修复的后验概率,红色的线是现货向期货修复的后验概率。如图所示,随着观测值的增多,在期货深度贴水时,如果是低库存,那么期货向现货修复的概率会非常大,并且逐渐收敛,非常稳定;相反,现货向期货修复的概率非常小,并且也逐渐收敛。这也说明我们的交易法则可信度是很高的。


温馨提示:投资有风险,选择需谨慎。