这篇文章是多年前我自己写的备忘录,那个时候我也认认真真读了几十本关于投资方面的书,也解决了很多疑惑,最近看到有朋友在帖子里提到风险与收益的关系,就翻出这篇旧文,供大家参考:
投资领域里,有一些很基础的问题需要我们反复理解,比如:
• 为什么看好后市,却不满仓
• 涨了为什么不卖,做个 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 年)投资收益分界线是:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.