5D Library › 非遍历性财富动力学、凯利准则与波动率税 · English
第一章 集合平均不等于时间平均
一万个玩家与一个玩家
序言里的抛硬币游戏可以精确地算出来。每一轮,财富乘以 1.5 或 0.6,概率各一半。
集合平均(ensemble average)是在同一时刻对许多平行玩家取平均,也就是数学期望:每一轮的期望乘数是 0.5 × 1.5 + 0.5 × 0.6 = 1.05,期望财富每轮增长 5%,一百轮之后是起点的 1.05100 ≈ 132 倍。
时间平均(time average)是沿着一个玩家的时间轴取平均。一百轮里大约有五十次正面、五十次反面,财富大约是 1.550 × 0.650 = 0.950 ≈ 0.005,只剩起点的千分之五。每轮的典型乘数是几何平均 √(1.5 × 0.6) ≈ 0.9487,即每轮 −5.13%。
推导
精确值与一万名玩家各玩一百轮的模拟。
# The multiplicative coin game: each round wealth is multiplied by 1.5 (heads) or 0.6
# (tails), each with probability 1/2. Compare the ensemble average (the expectation, an
# average over many parallel players) with the time average (the growth one player
# experiences by playing on).
import math, random, statistics
UP, DOWN = 1.5, 0.6
ens = 0.5 * UP + 0.5 * DOWN # expected factor per round
tim = math.sqrt(UP * DOWN) # geometric mean factor per round
print(f"expected factor per round {ens:.4f} -> ensemble growth {100 * (ens - 1):+.2f} %")
print(f"time-average factor {tim:.4f} -> time-average growth"
f" {100 * (tim - 1):+.2f} %")
print(f"expected wealth after 100 rounds {ens ** 100:,.0f} x start")
print(f"typical (median) wealth after 100 rounds {tim ** 100:.4f} x start")
random.seed(1)
N, T = 10_000, 100
finals = []
for _ in range(N):
w = 1.0
for _ in range(T):
w *= UP if random.random() < 0.5 else DOWN
finals.append(w)
finals.sort()
print(f"\nsimulation: {N:,} players, {T} rounds each")
print(f" sample mean of final wealth {statistics.fmean(finals):8.2f}")
print(f" median final wealth {statistics.median(finals):8.4f}")
print(f" share ending below the start {sum(w < 1 for w in finals) / N:8.1%}")
print(f" share ending below 1 % of start {sum(w < 0.01 for w in finals) / N:8.1%}")
top = sum(finals[-N // 100:]) / sum(finals)
print(f" wealth held by the richest 1 % {top:8.0%}")
# With N players the sample mean tracks the expectation only while some player is likely
# to have had an exceptional run; for long games it falls far below the expectation, is
# set by the one or two luckiest players, and jumps around between simulations.
for T2 in (10, 100, 1000):
random.seed(2)
m = statistics.fmean(math.prod(UP if random.random() < 0.5 else DOWN
for _ in range(T2)) for _ in range(N))
print(f" T = {T2:4d}: expectation {ens ** T2:9.3g}, sample mean of {N:,} {m:9.3g}")
# expected factor per round 1.0500 -> ensemble growth +5.00 %
# time-average factor 0.9487 -> time-average growth -5.13 %
# expected wealth after 100 rounds 132 x start
# typical (median) wealth after 100 rounds 0.0052 x start
#
# simulation: 10,000 players, 100 rounds each
# sample mean of final wealth 109.53
# median final wealth 0.0052
# share ending below the start 86.4%
# share ending below 1 % of start 54.0%
# wealth held by the richest 1 % 98%
# T = 10: expectation 1.63, sample mean of 10,000 1.62
# T = 100: expectation 132, sample mean of 10,000 41.6
# T = 1000: expectation 1.55e+21, sample mean of 10,000 68.8模拟显示了这个游戏的全部特点:
- 一百轮之后,约 86% 的玩家财富低于起点,过半的玩家只剩起点的 1% 以下;中位数约为起点的 0.5%,与几何平均的计算一致。
- 一万名玩家的样本平均仍然远高于起点,但这个平均几乎完全来自极少数运气极好的人:最富的 1% 玩家拥有全部财富的约 98%。
- 玩得越久,样本平均越跟不上期望值。一百轮时期望值是 132 倍,一万名玩家的样本平均只有几十倍,而且每次模拟差别很大;一千轮时期望值是 1021 量级,样本平均却由一两个最幸运的玩家决定。期望值描述的是一个无限多玩家的集合,任何有限的人群都会离它越来越远。
所以,「期望值为正」在这里是真的,「几乎所有人都在亏损」也是真的。数学上,每一位玩家的财富以概率 1 趋向于零:越来越接近零,但不会恰好等于零。
遍历性
一个量是遍历的(ergodic),如果它沿时间的平均与对集合的平均相等:一个人玩足够久得到的平均,与无数人同时玩一次得到的平均是同一个数。
抛硬币游戏中的财富本身不是遍历的:它的期望每轮增长 5%,它的时间平均每轮下降 5.13%。但财富的对数变化是遍历的:每一轮 Δln x 是独立同分布的随机变量,它的时间平均等于它的期望 E[Δln x] = 0.5 ln 1.5 + 0.5 ln 0.6 ≈ −0.0527。对乘性过程,要问「一个人长期会怎样」,正确的问题是对数的期望,而不是财富的期望。
证据
遍历性经济学。 物理学家奥勒·彼得斯与默里·盖尔曼认为,评估一个赌局时不应先问「期望财富增加多少」,而应先问「财富遵循什么动态」:如果收益是加性的(每次赢或输固定的金额),财富变化的时间平均等于期望,期望值就是合适的标准;如果收益是乘性的,合适的标准是对数财富的期望变化,即时间平均增长率 (Peters and Gell-Mann 2016)。彼得斯在 2019 年的综述中进一步主张,经济学中许多被归于「风险偏好」的现象,可以理解为在非遍历的动态中最大化时间平均增长率的结果 (Peters 2019)。
伯努利的对数,与经济学家的回应
1738 年,丹尼尔·伯努利为了回答「圣彼得堡悖论」(一个期望值无限大、却没有人愿意花很多钱去玩的赌局),提出人们最大化的不是财富的期望,而是财富「效用」的期望,并建议用财富的对数作为效用 (Bernoulli 1954)。这就是期望效用理论的起点。
对乘性赌局,伯努利的对数效用与彼得斯的时间平均给出相同的决策:两者都要求最大化 E[ln x]。区别在于理由。伯努利的对数是关于偏好的假设(多一块钱对穷人比对富人更有价值);彼得斯的对数来自动态本身(在乘性世界里,只有对数增长率是遍历的)。
证据
经济学家的回应。 多克托、瓦克尔与王指出,经济学家早就知道期望值与长期增长率的区别,也早就知道对数效用与凯利准则的联系;期望效用理论并不要求人们最大化期望财富,效用函数本来就是用来描述人们在给定处境下的选择的,并不需要遍历性的论证来支撑 (Doctor et al. 2020)。更早,萨缪尔森就反对「因为投资期限很长就应该最大化对数财富的期望」:即使期限很长,最大化对数期望的策略也只是在「大多数路径」上胜出,对风险厌恶程度不同于对数的人并不是最优的 (Samuelson 1979)。
证据
一项实验。 梅德等人让受试者在两个条件下反复选择赌局:一个条件中收益是加性的,另一个条件中收益是乘性的。同一批受试者在乘性条件下表现出明显更强的风险厌恶,他们的选择接近使时间平均增长率最大的选择,这是标准的固定效用理论没有预言的 (Meder et al. 2021)。这是一项小样本的实验室研究,还需要独立的重复。
本书的立场是务实的:彼得斯提出的问题(「我的财富遵循什么动态?我关心的是集合还是我自己的这一条路径?」)对任何一个只能活一次的个人或企业都很有用;至于它是否「取代」期望效用理论,是一个仍在讨论中的理论问题,本书不作裁决。
下注一部分,结果就变了
抛硬币游戏的问题不在于赌局本身不好,而在于每一轮都把全部财富押上。如果每轮只押财富的一部分 f,正面时财富乘以 1 + 0.5f,反面时乘以 1 − 0.4f。
推导
不同下注比例下的时间平均增长率,以及加性版本的对照。
# Two ways out of the coin game's paradox. (1) Dynamics: for ADDITIVE gains (win or lose
# fixed amounts) the time average equals the expectation; for MULTIPLICATIVE gains the
# time-average growth rate is the expected change in log wealth. (2) Stake only a
# fraction f of wealth each round: the factor becomes 1 + 0.5 f or 1 - 0.4 f.
import math
def g(f): # time-average (log) growth rate per round when staking fraction f
return 0.5 * math.log(1 + 0.5 * f) + 0.5 * math.log(1 - 0.4 * f)
print("additive version (+50 or -40 units a round): expected and time-average change +5")
print("multiplicative version: time-average growth per round = E[ln factor]")
print(f"{'fraction staked f':>18} {'growth per round':>18}")
for f in (0.0, 0.1, 0.25, 0.5, 0.75, 1.0):
print(f"{f:18.2f} {100 * (math.exp(g(f)) - 1):+17.3f} %")
# maximise g: 0.25/(1+0.5f) = 0.2/(1-0.4f) -> f* = 0.25
fs = [i / 1000 for i in range(1000)]
best = max(fs, key=g)
zero = min((f for f in fs if f > 0.05), key=lambda f: abs(g(f)))
gb = 100 * (math.exp(g(best)) - 1)
print(f"best fraction {best:.3f} (exactly 1/4): {gb:+.3f} % a round")
print(f"growth falls back to zero near f = {zero:.3f}, twice the best fraction")
# A Bernoulli (log-utility) decision maker declines the whole-wealth game, because
# E[ln factor] < 0, but accepts staking a quarter of wealth.
print(f"E[ln factor]: whole wealth {g(1.0):+.4f}; a quarter of wealth {g(0.25):+.4f}")
# additive version (+50 or -40 units a round): expected and time-average change +5
# multiplicative version: time-average growth per round = E[ln factor]
# fraction staked f growth per round
# 0.00 +0.000 %
# 0.10 +0.399 %
# 0.25 +0.623 %
# 0.50 +0.000 %
# 0.75 -1.893 %
# 1.00 -5.132 %
# best fraction 0.250 (exactly 1/4): +0.623 % a round
# growth falls back to zero near f = 0.500, twice the best fraction
# E[ln factor]: whole wealth -0.0527; a quarter of wealth +0.0062每轮押上四分之一的财富,长期增长率从 −5.13% 变成 +0.62%;押上一半时增长率恰好为零,押得更多就为负。最优比例 f = 1/4 正是第三章要讨论的凯利准则给出的答案。这也说明,一个对数效用(或者说关心时间平均)的决策者会拒绝「全押」的游戏,却会接受「押四分之一」的游戏:同一个正期望的机会,取决于你怎样参与它。
证据
一个实证的回声。 贝森宾德研究了 1926 年至 2016 年美国证券价格研究中心(CRSP)数据库中的全部普通股,发现每七只股票中约有四只在其上市期间的买入并持有收益低于一个月期国库券,而表现最好的约 4% 的股票(1,092 只)贡献了全部股票市场相对国库券的净财富创造 (Bessembinder 2018)。市场整体的平均收益,与「随机买一只股票并一直持有」的典型结果,是两回事。这与抛硬币游戏的结构相似:集合的平均被少数极端的成功拉高。
注
这一章不能说明什么。 抛硬币游戏的参数是为了说明问题而选的,真实的投资不是固定的两点分布,也不是每期独立的。「时间平均」的论证要求一个人在很长的时间里重复同一个赌局;对只玩一次、或者能把风险分散给许多人的情形(例如保险公司、或多人共同出资分担风险),集合平均可能正是合适的标准。
本章小结
在乘性的世界里,期望值描述的是无限多个平行玩家的平均,时间平均描述的是你自己这一条路径。抛硬币游戏的期望每轮 +5%,几乎每个玩家的财富却以每轮约 −5.13% 的速度萎缩。对数增长率是遍历的,它把两者联系起来;伯努利的对数效用与彼得斯的时间平均在乘性赌局上给出相同的决策,二者的理论地位仍有争论。只押一部分财富,同一个赌局就可以从必然萎缩变成稳定增长。下一章把这个问题放到连续时间里,用伊藤引理说明波动本身怎样从增长率中扣税。
参考文献
Fan, Y. (2026). Non-Ergodic Wealth Dynamics, the Kelly Criterion and Volatility Drag: From Itô's Lemma on Geometric Brownian Motion and Ruin Barriers to Barbell Portfolios, Read Beside the Shiji's 'Biographies of the Money-Makers' [非遍历性财富动力学、凯利准则与波动率税] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23754709 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).