这篇文章是多年前我自己写的备忘录,那个时候我也认认真真读了几十本关于投资方面的书,也解决了很多疑惑,最近看到有朋友在帖子里提到风险与收益的关系,就翻出这篇旧文,供大家参考:
投资领域里,有一些很基础的问题需要我们反复理解,比如:
• 为什么看好后市,却不满仓
• 涨了为什么不卖,做个 T 等跌下来再买回不是降低成本了吗
• 为什么长时间内股债平衡的策略收益率会大于满仓
• 为什么说 51%的择时正确率是不够的,需要 74%才可以
• 为什么频繁交易的人大多数会赔钱
为了向小白们解释明白这些道理,同时为了引流,各路自媒体创作了数以万计的文章 :)
最近在一文中读到了一个数学游戏非常有意思,个人觉得对于理工科人士来说,千言万语不如做道数学题来的有效;当然,这是一种理想假设,能帮助我们提高认识,但切切不能刻舟求剑;
好吧,假如有个赌场提供了这么一个你可以玩无穷多次的游戏:
我们先用中学数学来分析一下
分析 1:基于期望的分析
不论我玩的时候的本金 m 是多少,玩下一次的时候,收益的期望总是:
m * (1.2 - 1) * 1 / 2 + m * (0.83 - 1) * 1 / 2 = 0.03m
因为赢钱的时候赢 0.2 总是大于赔钱的时候赔 -0.17 ,所以期望总是正的,那就应该玩,而且要一直玩无限多次。
分析 2:基于概率的分析
若一直玩下去,就会有赢有输,所以应该把 1.2 和 0.83 乘起来看是否大于 1 。结果是 1.2*0.83=0.996 ,小于 1 ,因此久赌必输,不能玩。
好了,以上两种分析,你同意哪一种呢?
跑个 python 就很容易模拟:
# 每次满仓
import numpy as np
import matplotlib.pyplot as plt
P = 100 # Number of players
N = 1000 # Total times played for one player
win = 1.2
lose = 0.83
Num_of_winner = 0
Money_of_the_luckiest_winner = 0.0
for j in range(P):
m = np.zeros(N)
m[0] = 100.0
for i in range(1,N):
if np.random.randint(2):
m[i] = m[i-1]*win
else:
m[i] = m[i-1]*lose
if m[-1]>m[0]:
Num_of_winner += 1
if m[-1]>Money_of_the_luckiest_winner:
Money_of_the_luckiest_winner = m[-1]
plt.plot(m)
print("获胜人数:{}".format(Num_of_winner))
print("最大赢家资金:{}".format(Money_of_the_luckiest_winner))
plt.xlabel('Times played')
plt.ylabel('Money')
plt.show()
运行多次之后就会发现:其中绝大多数玩家的资产都几乎归零了!
实践证明,看起来分析 1 是错误的,分析 2 是正确的;如何证明呢?
https://zhuanlan.zhihu.com/p/103297941
再细想一下,这个游戏其实完全契合我们的凯利公式投资大法;
其中 p 为赢的概率 (0.5),q=1-p 为输的概率 (0.5),W 为赢的情况下的赔率 (0.2),L 为输的情况下的赔率 (0.17)。在这个游戏中,计算得知最佳投注比例 K 约为 0.44 。
代码验证如下:
# 凯利公式控制仓位
import numpy as np
import matplotlib.pyplot as plt
P = 100 # Number of players
N = 1000 # Total times played for one player
win = 1.2
lose = 0.83
Num_of_winner = 0
Money_of_the_luckiest_winner = 0.0
W = abs(win-1)
L = abs(lose-1)
Kelly_percentage = (0.5*W-0.5*L)/(W*L)
print("投注最佳仓位:{}".format(Kelly_percentage)) # is about 0.44 in our case
for j in range(P):
m = np.zeros(N)
m[0] = 100.0
for i in range(1,N):
if np.random.randint(2):
m[i] = m[i-1]*win*Kelly_percentage + m[i-1]*(1-Kelly_percentage)
else:
m[i] = m[i-1]*lose*Kelly_percentage + m[i-1]*(1-Kelly_percentage)
if m[-1] > m[0]:
Num_of_winner += 1
if m[-1] > Money_of_the_luckiest_winner:
Money_of_the_luckiest_winner = m[-1]
plt.semilogy(m)
print("获胜人数:{}".format(Num_of_winner))
print("最大赢家资金:{}".format(Money_of_the_luckiest_winner))
plt.xlabel('Times played')
plt.ylabel('Money')
plt.show()
反复运行这两个例子的模拟代码是件很有意思的事情,虽然这个游戏是个物理实验中的理想环境,真实的世界复杂的多,我们也不能精确的判定一项投资的胜率、赔率......
但是这个小游戏无疑解答了很多问题:
因为后市可能涨 20%,却有可能赔 17%;看起来挣钱的可能性大,但其实这种事做多了资金归零的概率更大;
因为涨 20%,跌 17%的概率相等时,做 T 是赔的;做的越多,赔的越快
这相当于被动执行了凯利公式
51%的胜率会有少数人大赚,但多数人还是赔光; 需要一个足够高的胜率才能保证大多数人平分收益;目前在真实的市场中,统计结果看来要>70%的胜率才可以;换句话说,你有七成的把握择时或择股,才能去做 T 或买个股,不然就只能老老实实买宽基指数;
因为大赚的人少,大多数人是分母
1. 单个参与者单次数学期望为正,不代表所有参与者收益为正
2. 单次统计数学期望为正只是基本条件,还需要统计 2 次,3 次...多次的数学期望
3. 单词数学期望为正,>2 次数学期望为负,会产生赢家通吃的结果,虽然总体计算盈利,但大多数人会亏
4. 仓位控制得当,所有参与者就可能均分利益
5. 控制仓位的最佳方法是凯利公式
6. 要永远警惕那些看起来期望为正,胜率却不够高的游戏;比如择时择股胜率超过 50%的明星基金,但 50%的胜率其实远远不够
7. 少交易,能够提高胜率;或者反过来理解,交易的越多,好运气消耗的越快;越耐心,好运气积累的越多;
读了很多书,实践了很多次,学了很多道理之后,我才发现,巴菲特都说了无数遍了,普通人最好的办法就是标普 500 和美债各自配一个比例,然后动态再平衡,这真是掏心窝子的金玉良言,但是我等凡人总觉得能比巴菲特强;
巴菲特的建议换算到咱们国内,最简单的处理办法就是:找一个长期向上的宽基指数(比如中证红利),以及综债指数(比如国开债 5 年指数),然后 5:5 配置,每年动态再平衡,这样就相当于被动执行了凯利公式;
就承认自己的平凡吧,最后再说一个上限吧,打击一下我们的暴富心理;
芒格说长期市场的收益会趋近于 ROE ,这个值是 12%;就是无论你做什么买卖,什么投资,即使将来发明了长生不老药,如果自由竞争,这个买卖的长期收益就是年化 12%;
这个星球上最牛的巴菲特,1964-2024 ,年化 22%-23%;
彼得林奇,1977-1990 ,年化 29%;
可能不同的统计方法会有一定误差,但这就是这个星球上最厉害的投资者,换算到篮球界就是乔丹科比的存在;
相信很多人都对自己的篮球技能有很清醒的估计,我们是怎么练也达不到乔丹的水平的;但是还是会有人跳出来说,巴菲特那是大资金,他自己也说过资金小了能年化 50%,或者 A 股市场特殊性,年化 20%不难等等...
其实我们可以问自己,篮球场上,我跟乔丹差多少?难道他场均 30+10+5 ,我就能场均 10+5+3 吗?投资领域里面残酷的是,有很多职业选手和很多业余选手同场竞技,而且一般职业选手的装备更精良。
做个简单的总结:比较成功的长期(>15 年)投资收益分界线是:
1
cmdOptionKana 4 小时 10 分钟前
> 为什么看好后市,却不满仓
问题是看不清后市,属于未知状态。 另外,根据“巴菲特指数”,现在美股处于一个危险的位置 https://www.currentmarketvaluation.com/models/buffett-indicator.php |
2
cmdOptionKana 3 小时 55 分钟前
做浮动仓买卖(可能是日内 T ,但不一定是日内 T )可以强行做到胜率 75%(要耗时间),甚至可以强行做到胜率 90%(要耗更多时间),买了就等,等到赚钱才卖,不赚不卖。
如果不贪心的话,赚 2%就卖,也很不错了,可能不需要等很久,只要在一年内有一次赚 2%,也相当于一年定期存款的利息了,有两次赚 2%,就打平了债券收入,感觉还是值得尝试啊。 |
3
m3dull 3 小时 3 分钟前 via iPhone
厉害了
|
4
memorybox OP @cmdOptionKana 您说的这个操作,恐怕自己心里都不相信;只不过还是在赌运而已,赌自己是那个一百个人里面极少数的幸运儿;
赚 2%就卖,不赚就一直等,那不就是定期存款吗? 每天(每周/每月)赚 2%就卖,那一年就是 1.02^365 或者 1.02^56 ...总之发财了,我就问您一个场景: 买了之后,阴跌五年,跌去 60%,从买的那一天开始,就没有回正过,怎么办? 不要说不会这样的,这种情况多的很! 就是指数连跌五年,都多的很。茅台都连跌过近五年腰斩,消费指数是盈利最强的指数,2021 年买入,现在还没回正呢!而且 2021 年高点买入,五年时间里,根本没有一天达到过您想的 赚 2%; "赚 2%就卖,不赚就一直等"; 等五年,愿意等吗? 如果愿意等五年,那为什么不从一开始就股债平衡平衡 5:5 呢? 说到底,还是嫌 6%的年华少,觉得自己比巴菲特厉害而已; |
5
memorybox OP * 一辈子就买卖 3 次,大概率不会买在最高点;
* 每天都去搏那个'赚 2%",百分百的几率会有一天买在那个最高点; * 一条长期向上的曲线上做 T ,不如买入不动 * 一条长期向下的曲线上做 T ,赢多少次,最终还是归零 * 一条上蹿下跳的曲线上做 T ,小于 74%的胜率,还是归零 非常简单的数学道理; |
6
huaweii 2 小时 44 分钟前 via Android
分享的不错,我基本也认同,所以这也是为什么每年我都会拿出一笔钱往币圈打水漂的原因之一😁
|
7
memorybox OP 大家对资产价格长期不涨这个历史知识没有敬畏之心:
从 1960 到 1980 年,美国人均 GDP 从约$3000 美元增长到约$10000 美元,翻了三倍,但是美国道琼斯指数在 600-1000 点区间内震荡了近 20 年,基本没怎么涨,整整 20 年!就是你在美国,那 20 年只买了指数,没有做债券的平衡配置,坐了 20 年也是颗粒无收 |
8
azhangbing 1 小时 53 分钟前 via iPhone
金玉良言,大多数专业基金经理的综合年化超不过标普 500
|
9
Sawyerhou 1 小时 50 分钟前
非常有趣的帖子,很有收获,感谢分享!
不过期望部分知乎里算的和我结果不一样。 沿用 python 代码和知乎里的命名规则,即 X~~norm(N/2,N/4), 另设 a=ln(win),b=ln(loss),则 E(lnMn)=E[lnM0+aX+b(N-X)]=lnM0+(a+b)N/2 由于 ln 函数单调性且 N 必为正,Mn 是否大于 M0 取于 a+b 的符号; 当 win=1.2 ,loss=0.83 时,a+b=ln0.83+ln1.2~=-0.004 ,此时期望为负; 知乎里说期望为正,和我算的不一样。 当使用凯利公式且 k=0.44 时, win=0.44*1.2+(1-0.44)=1.088 ,loss=0.44*0.83+(1-0.44)=0.9252 , a+b~=0.007 ,此时期望为正。 我这里凯利公式可以扭亏为盈是因为期望符号发生变化, 不过这种情况现实中并不常见,当然,不排除我算错了:p |
10
ryd994 1 小时 13 分钟前 via Android
扩展阅读:
https://www.physixfan.com/kailipanjuzaimeiguzhongdeyingyongjisuanzuijiagangganshuai/ 标普 500 的凯利判据大约是 2.3 。也就是说你不仅应该满仓还应该加杠杆。 |
11
cmdOptionKana 1 小时 1 分钟前 via Android
@memorybox 你问的问题,我都有想过。
不一开始满仓(或半仓),是因为根据巴菲特指数,现在美国在危险位置,我需要用时间换安全,缓慢加仓。 在缓慢加仓的过程中,我用浮动仓位买,是没有额外风险的,万一跌了,就当做当做加仓,如果短期大涨,那就减仓降低风险。底仓保持缓慢增加,浮动仓赚短线波动的钱,跌了可以当做加仓。 如果不这样做,明天立即股债配置满仓,就一定更好吗?这个应该没有定论吧,隔壁(今天的另一个帖子,问配置的),也有人说担心 AI 过热会有个回调。债市近期也有震荡。 我认为立即全部现金投入股市和债市,收益可能更高,但风险也比我的方法更大。我这个浮动仓的玩法,风险是降低了的,当然潜在收益也降低了。 |
12
cmdOptionKana 54 分钟前 via Android
@memorybox
> 一条上蹿下跳的曲线上做 T ,小于 74%的胜率,还是归零 要注意我这个玩法是有底仓的,因此曲线长期向上,我必然能赚钱,但赚得少。 但是我不知道曲线会不会向下走几年,因此我的做法是缓慢增加底仓,万一曲线下行,我就降低了风险。 因此,我的做法是降低了收益,也降低了风险。 而上蹿下跳,我的浮动仓胜率是必然大于 74%,因为跌了我不卖,上窜的时候才卖。只要曲线不是长期下行,怎么可能亏? |
13
ryd994 44 分钟前 via Android
@memorybox #5 那是因为你买错指数了。DJIA 是工业指数,不是股市大盘指数。DJIA 不能代表股市,它不是市值权重,而且成分股主要为制造业。
同期的 sp500: 1960 59.89 1980 107.94 涨了 80%,年化 6%,通胀平价是亏的 这段时期美国陷入滞涨,除了黄金啥都跑不过通胀。而黄金又被法律禁止个人持有。股票已经算是各种投资品里面亏得最少的。 如果买债券更加完蛋,因为你买的时候是低息环境。80 年代美联储为了打破僵局,加息一度利率达到 20%。你说债股平衡之前你回测过么? 咱不是说债股平衡不好啊。但是你要回测过才能看图说话。债券和股票之间的负相关性是到 2000 年以后才逐渐开始的。之前都是正相关。债股负相关性的前提是,股市大跌后,市场预期美联储会降息救市。这个前提在高通胀环境下就不再成立了,所以 2020 年的时候,美联储因为通胀而被迫加息,债股双杀,正相关了。 |