“数字并不能说明一切,
但是,一切都需要用数字证明。 ”
——执拗的黑裤子
这是屠夫的第282篇原创,全文3000字
阅读时间为8分钟,读完之后别忘了【好啊】
我睡不着钱。 肉铺早上好。
更新频率超低(几乎以年为单位),但篇爆胎的《投币赌博》系列玩了多次蒙特卡罗模拟:
说的是第一枚硬币、“倍率”第二枚硬币、“概率”第三枚硬币、“合理”第四枚硬币、“仓库管理”
但是关于蒙特卡罗模拟本身,屠夫每次只有两句话:
蒙特卡罗模拟也被称为统计模拟法……blablabla……
爱学习的朋友自然不甘心,在交流小组里主动提问:
既然答应了就做,今天我们来谈谈蒙特卡罗模拟吧。
01 从求值说起
说起圆周率,很多人脱口而出的数字是“3.14”。
怎么求呢?
教科书上说,古希腊的阿基米德、古代中国的刘徽章、祖冲之都使用了“用反复数值逼近”的方法。
简单来说,用圆的内接或外接多边形进行近似,求出圆周率 3.14。
有其他解法吗?
是的,有蒙特卡罗法等。
先找张正方形的纸,在上面画它的内切圆(与四边都相接) )吧。
我们在纸上随机打点。 有的落在圆里(x个亮点),有的落在圆外。
如果我们的击球数量足够多,例如有几百万个的情况下,用圆内点的个数(x )除以所有点的个数) xy ),就是内切圆的面积与正方形面积之比。
x/(xy )=S圆/S正方形
圆的面积为s圆=*r^2,正方形的面积为s正方形=(2r ) ^2(正方形的边长为2r,因此上述等式如下。
=4x/(xy ) )。
另一方面,x和y是已知的,应用上述公式可以求出。
也可以使用同样的手,求出不规则图形的面积。
如果能确定“随机点是否在图形内”,就可以求解
——完全不需要微积分的知识:
很暴力吗?
02 为什么需要蒙特卡洛?
上例很好地展示了蒙特卡罗模拟的特点。 通过生成随机样本得到近似解。
随机样本的数量越多,越接近现实,近似解就越接近真实的结果
——这是用电脑进行“暴力运算”的方法。
蒙特卡罗模拟有简单和迅速两大优点。
简单是因为省略了模糊的数学推导,普通人容易理解;
之所以这么快,是因为确定概率模型后的运算完全交给了计算机。
有好处,但是在什么情况下应该使用它呢?
有必要了解“直接法”和“间接法”。
直接法是指给出一个模型,调整模型中的各个参数,尽可能多的模拟结果。
《投币赌博》系列是最经典的直接法:
【模型】只有正反两个结果,每个游戏的结果相互独立,害羞的豆芽资金相互独立,
资金耗尽或为负出局【参数】正反的概率、对错的赔率、最大最小下注额、每局下注策略、害羞的豆芽人数、赌博局数
【结果】每个害羞的豆芽结束时的资金余额情况
所谓间接法,是给定一个模型,随机模拟大量结果,反求和模型相关的某个参数。
上面求π值的例子,用的是间接法:
【模型】正方形面积公式 + 圆面积公式
【结果】落在内切圆里的点有x个,落在圆外的有y个
【参数】圆面积公式里的π
直接法的逻辑是:有模型,有参数,随机模拟的结果才是我要的。
间接法的逻辑是:有模型,有结果,模型相关的参数才是我要的。
无论是直接法还是间接法,蒙特卡洛模拟的基础是模型。
这种方法,其实有更深刻的思想内涵。
03 蒙特卡洛背后的思维
蒙特卡洛方法以“建模”为基础,其实蕴含着两种关键性思维:抽象和拆解。
先说说「抽象」。
抽象思维的背后其实有两种逻辑:归纳和演绎。
归纳,是“从个别到一般”:从多个实例提取出规律。
演绎,是“从一般到个别”:将规律应用到具体实例。
比如说掷硬币这事 ——
咱们可以通过日常观察,得出“掷硬币通常只有正反两种结果”,这是归纳;
而将这条规律设定为限制条件,从而让每次模拟结果都服从于它,这是演绎。
一般人只能捕捉现象,投资者需要把握本质。
现象和本质之间的来回切换,需要抽象思维。
从已观察过的「现象」中提炼出「本质」,再生成更多未观察过、但服从「本质」的新的「现象」,就是蒙特卡洛方法的精髓。
再聊聊「拆解」。
我们身处一个VUCA世界:集 易变性(Volatility),不确定性(Uncertainty),复杂性(Complexity)和模糊性(Ambiguity) 于一体。
现实问题大多是复杂而模糊的,这需要我们进行逐步分析,把问题拆解成一个个相对简单的因子。
就拿π值计算的例子来说吧,面积公式 S圆 = π*r^2 和 S正方形 = (2r)^2 其实就是一个拆解的过程。
借助这两个公式,图形面积被拆解成π、半径r和边长2r,我们才能在后面的计算中把π值和圆内点个数x、圆外点个数y建立起联系,从而求出π。
一般人害怕复杂和模糊,投资者善于分析挖掘。
财务分析里经典的「杜邦分析法」,就是运用拆解思维将笼统庞大的ROE(净资产收益率)进行解构,转换成若干个易理解、好衡量、可提升的指标。屠夫在第一次学习的时候,由衷地折服于这套方法背后的拆解思维。
蒙特卡洛以“建立模型”为基础,对抽象思维和拆解思维有很高要求。
抽象,是以归纳演绎,联通现象和本质;
拆解,是靠分析挖掘,对复杂问题解构。
投资者固然需要提升自己的思维能力,但是光讲这些也未免太“虚”了。
蒙特卡洛模拟有更具体的投资应用吗?
有!
04 投资里的蒙特卡洛
投资年限长点的人,应该听说过压力测试。
所谓压力测试(Stress Testing),是指将资产组合置于某个特定的极端情况,测试该组合在这种情境下的表现状况。
比如利率突然上升100个BP(Base Point),又或者某类货币突然贬值30%,再或者股市暴跌50%,都可以作为压力测试的假设条件。
这些极端情况可以是历史曾经发生过,也可以是未发生过的,毕竟
—— 撞上冰山前,泰坦尼克号从未撞过冰山。
没错,这种“大开脑洞”的情形,真的很适合蒙特卡洛模拟。
就拿上面的例子来说,我们可以对未来一年的沪深300做一些假设*:
上涨20%以上的概率为20%上涨10%~20%的概率为30%上涨不超过10%的概率为35%下跌10%~20%的概率为10%下跌20%以上的概率为5%*屠夫注:以上数据纯属瞎拍,实际假设前请至少参考一下历史数据
而通过历史数据回测,得知你的投资组合相对于沪深300的β值约为1.25*。
将上述假设的上涨/下跌幅度乘以1.25,就能计算出你的组合在未来一年的收益期望。
*屠夫注:也就是说,沪深300上涨1时组合上涨1.25,下跌1时组合下跌1.25
把更多因子考虑进去,可以建立一个更复杂(也可能更脆弱)的模型。
通过各个因子的概率分布,我们可以模拟出成千上万种可能性,再去检查我们的投资组合是否在所有可能性下都安然无恙。
回过头来重看《可怕的风趣的鸵鸟公式》一文,其实是对仓位控制策略的一次压力测试。
在这个测试里,「固定下注」和「xydlz」都只能做到线性回报(只能靠堆砌时间来增加获利),只有「风趣的鸵鸟公式」做到指数回报,实现真正的复利效应。
除此之外,马丁派战术还有一定的破产爆仓风险(1000人只有828个活到第1万局),而风趣的鸵鸟公式相当安全(1000人全部活到最后),这可是个非常重要的决策依据。
怎么样,蒙特卡洛模拟还是挺有帮助的吧?
05 写在最后
为了减少对阅读者的数学和编程背景要求,本文省略了很多细节。
真要考究起来,这个话题的篇幅足以够上一篇小论文。
可咱们又不是做学术研究,所以屠夫也就省了这种功夫啦。
对于只为学习方法、升级认知的人而言,本文把蒙特卡洛方法和背后的思维,大致讲明白了。
在实际应用中,蒙特卡洛模拟还能有很多有趣的玩法,留给大家自己摸索,细细品味。