V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
memorybox
V2EX  ›  投资

一个帮助我们理解投资的数学游戏

  •  
  •   memorybox · 5 小时 2 分钟前 · 498 次点击

    这篇文章是多年前我自己写的备忘录,那个时候我也认认真真读了几十本关于投资方面的书,也解决了很多疑惑,最近看到有朋友在帖子里提到风险与收益的关系,就翻出这篇旧文,供大家参考:

    投资领域里,有一些很基础的问题需要我们反复理解,比如:

    • 为什么看好后市,却不满仓
    • 涨了为什么不卖,做个 T 等跌下来再买回不是降低成本了吗
    • 为什么长时间内股债平衡的策略收益率会大于满仓
    • 为什么说 51%的择时正确率是不够的,需要 74%才可以
    • 为什么频繁交易的人大多数会赔钱
    

    为了向小白们解释明白这些道理,同时为了引流,各路自媒体创作了数以万计的文章 :)

    最近在一文中读到了一个数学游戏非常有意思,个人觉得对于理工科人士来说,千言万语不如做道数学题来的有效;当然,这是一种理想假设,能帮助我们提高认识,但切切不能刻舟求剑;

    好吧,假如有个赌场提供了这么一个你可以玩无穷多次的游戏:

    扔一个硬币,若正面向上,则你的资产变成当下的 1.2 倍;若反面向上,则你的资产变成当下的 0.83 倍。你会选择玩这个游戏吗?

    我们先用中学数学来分析一下

    分析 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%;看起来挣钱的可能性大,但其实这种事做多了资金归零的概率更大;
    
    涨了为什么不卖,做个 T 等跌下来再买回不是降低成本了吗
    因为涨 20%,跌 17%的概率相等时,做 T 是赔的;做的越多,赔的越快
    
    为什么长时间内股债平衡的策略收益率会大于满仓
    这相当于被动执行了凯利公式
    
    为什么说 51%的择时正确率是不够的,需要 74%才可以
    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. 青铜: 年化 2~6%;银行理财,债券,货基,存款等等
    2. 白银: 年化 8%;比较稳健的资产配置,合理分配股票、债券、货基、理财等仓位
    3. 黄金: 年化 10%; 一般极有耐心的投资者,定投指数 7 年以上达成此成就
    4. 大师: 年化 12%;黄金级选手智慧加成,此类投资者已然傲视群雄
    5. 史诗: 年化 15%;不说了,基金公司抢着要你;
    6. 传说:年化>20% ; 天赋+耐心+运气,你是这个星球上的 TOP100 ;
    13 条回复    2025-11-30 20:57:01 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       4 小时 10 分钟前
    > 为什么看好后市,却不满仓

    问题是看不清后市,属于未知状态。

    另外,根据“巴菲特指数”,现在美股处于一个危险的位置 https://www.currentmarketvaluation.com/models/buffett-indicator.php
    cmdOptionKana
        2
    cmdOptionKana  
       3 小时 55 分钟前
    做浮动仓买卖(可能是日内 T ,但不一定是日内 T )可以强行做到胜率 75%(要耗时间),甚至可以强行做到胜率 90%(要耗更多时间),买了就等,等到赚钱才卖,不赚不卖。

    如果不贪心的话,赚 2%就卖,也很不错了,可能不需要等很久,只要在一年内有一次赚 2%,也相当于一年定期存款的利息了,有两次赚 2%,就打平了债券收入,感觉还是值得尝试啊。
    m3dull
        3
    m3dull  
       3 小时 3 分钟前 via iPhone
    厉害了
    memorybox
        4
    memorybox  
    OP
       3 小时 1 分钟前
    @cmdOptionKana 您说的这个操作,恐怕自己心里都不相信;只不过还是在赌运而已,赌自己是那个一百个人里面极少数的幸运儿;

    赚 2%就卖,不赚就一直等,那不就是定期存款吗?

    每天(每周/每月)赚 2%就卖,那一年就是 1.02^365 或者 1.02^56 ...总之发财了,我就问您一个场景:

    买了之后,阴跌五年,跌去 60%,从买的那一天开始,就没有回正过,怎么办?

    不要说不会这样的,这种情况多的很! 就是指数连跌五年,都多的很。茅台都连跌过近五年腰斩,消费指数是盈利最强的指数,2021 年买入,现在还没回正呢!而且 2021 年高点买入,五年时间里,根本没有一天达到过您想的 赚 2%;

    "赚 2%就卖,不赚就一直等"; 等五年,愿意等吗?

    如果愿意等五年,那为什么不从一开始就股债平衡平衡 5:5 呢?

    说到底,还是嫌 6%的年华少,觉得自己比巴菲特厉害而已;
    memorybox
        5
    memorybox  
    OP
       2 小时 52 分钟前
    * 一辈子就买卖 3 次,大概率不会买在最高点;
    * 每天都去搏那个'赚 2%",百分百的几率会有一天买在那个最高点;
    * 一条长期向上的曲线上做 T ,不如买入不动
    * 一条长期向下的曲线上做 T ,赢多少次,最终还是归零
    * 一条上蹿下跳的曲线上做 T ,小于 74%的胜率,还是归零

    非常简单的数学道理;
    huaweii
        6
    huaweii  
       2 小时 44 分钟前 via Android
    分享的不错,我基本也认同,所以这也是为什么每年我都会拿出一笔钱往币圈打水漂的原因之一😁
    memorybox
        7
    memorybox  
    OP
       2 小时 36 分钟前
    大家对资产价格长期不涨这个历史知识没有敬畏之心:

    从 1960 到 1980 年,美国人均 GDP 从约$3000 美元增长到约$10000 美元,翻了三倍,但是美国道琼斯指数在 600-1000 点区间内震荡了近 20 年,基本没怎么涨,整整 20 年!就是你在美国,那 20 年只买了指数,没有做债券的平衡配置,坐了 20 年也是颗粒无收
    azhangbing
        8
    azhangbing  
       1 小时 53 分钟前 via iPhone
    金玉良言,大多数专业基金经理的综合年化超不过标普 500
    Sawyerhou
        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
    ryd994
        10
    ryd994  
       1 小时 13 分钟前 via Android
    扩展阅读:
    https://www.physixfan.com/kailipanjuzaimeiguzhongdeyingyongjisuanzuijiagangganshuai/

    标普 500 的凯利判据大约是 2.3 。也就是说你不仅应该满仓还应该加杠杆。
    cmdOptionKana
        11
    cmdOptionKana  
       1 小时 1 分钟前 via Android
    @memorybox 你问的问题,我都有想过。

    不一开始满仓(或半仓),是因为根据巴菲特指数,现在美国在危险位置,我需要用时间换安全,缓慢加仓。

    在缓慢加仓的过程中,我用浮动仓位买,是没有额外风险的,万一跌了,就当做当做加仓,如果短期大涨,那就减仓降低风险。底仓保持缓慢增加,浮动仓赚短线波动的钱,跌了可以当做加仓。

    如果不这样做,明天立即股债配置满仓,就一定更好吗?这个应该没有定论吧,隔壁(今天的另一个帖子,问配置的),也有人说担心 AI 过热会有个回调。债市近期也有震荡。

    我认为立即全部现金投入股市和债市,收益可能更高,但风险也比我的方法更大。我这个浮动仓的玩法,风险是降低了的,当然潜在收益也降低了。
    cmdOptionKana
        12
    cmdOptionKana  
       54 分钟前 via Android
    @memorybox

    > 一条上蹿下跳的曲线上做 T ,小于 74%的胜率,还是归零

    要注意我这个玩法是有底仓的,因此曲线长期向上,我必然能赚钱,但赚得少。

    但是我不知道曲线会不会向下走几年,因此我的做法是缓慢增加底仓,万一曲线下行,我就降低了风险。

    因此,我的做法是降低了收益,也降低了风险。

    而上蹿下跳,我的浮动仓胜率是必然大于 74%,因为跌了我不卖,上窜的时候才卖。只要曲线不是长期下行,怎么可能亏?
    ryd994
        13
    ryd994  
       44 分钟前 via Android
    @memorybox #5 那是因为你买错指数了。DJIA 是工业指数,不是股市大盘指数。DJIA 不能代表股市,它不是市值权重,而且成分股主要为制造业。

    同期的 sp500:
    1960 59.89
    1980 107.94
    涨了 80%,年化 6%,通胀平价是亏的

    这段时期美国陷入滞涨,除了黄金啥都跑不过通胀。而黄金又被法律禁止个人持有。股票已经算是各种投资品里面亏得最少的。

    如果买债券更加完蛋,因为你买的时候是低息环境。80 年代美联储为了打破僵局,加息一度利率达到 20%。你说债股平衡之前你回测过么?

    咱不是说债股平衡不好啊。但是你要回测过才能看图说话。债券和股票之间的负相关性是到 2000 年以后才逐渐开始的。之前都是正相关。债股负相关性的前提是,股市大跌后,市场预期美联储会降息救市。这个前提在高通胀环境下就不再成立了,所以 2020 年的时候,美联储因为通胀而被迫加息,债股双杀,正相关了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2818 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:41 · PVG 21:41 · LAX 05:41 · JFK 08:41
    ♥ Do have faith in what you're doing.