5D Library › 非遍历性财富动力学、凯利准则与波动率税 · English

第四章 破产吸收壁与首达时间

零是一道墙

前三章里,财富可以无限接近零,却永远不会等于零:一个只剩起点千分之一的玩家,理论上仍然可以靠一连串好运翻身。现实不是这样。家庭每个月要付房租、还贷款、交学费;企业每个月要发工资、付租金、还供应商。当现金耗尽、而这些刚性支出又必须支付时,游戏就结束了:信用违约、被迫低价变卖资产、公司关门。这个点叫作吸收壁(absorbing barrier):一旦碰到,就再也回不来,此后的任何好机会都与你无关。

吸收壁让第一章的论证变得更加尖锐。对一个会破产的个体,「长期平均收益」只在他活着的时候才有意义;破产不是一次很大的亏损,而是所有未来收益的终结。

赌徒破产与首达时间

概率论中最古老的问题之一是赌徒破产:一个有 B 元的赌徒每次赢或输 1 元,直到输光或达到某个目标为止 (Feller 1968)。它的连续版本是带漂移的布朗运动第一次到达某个水平的首达时间 (Redner 2001)。

把一个家庭或小企业每月的净现金流(收入减去刚性支出)看作漂移为 m、波动为 s 的布朗运动,起始现金缓冲为 B,现金第一次降到零就算破产。反射原理给出 T 个月内破产的概率:

P(τ≤T)=Φ(−B−mTsT)+e−2mB/s2Φ(−B+mTsT)P(\tau \le T) = \Phi\!\left(\frac{-B – mT}{s\sqrt{T}}\right) + e^{-2mB/s^2}\,\Phi\!\left(\frac{-B + mT}{s\sqrt{T}}\right)

当 m > 0 时,曾经破产的概率是 e−2mB/s2^;当 m ≤ 0 时,破产迟早会发生。

推导

一家示意性的小企业(单位:千元每月):刚性成本 30,平均每月净盈余 +2,标准差 10。比较不同厚度的现金缓冲下,24 个月内与曾经破产的概率,并用每周一步的模拟核对公式。

# A cash buffer as distance from an absorbing barrier. Monthly net cash flow (income minus
# rigid spending) is modelled as Brownian motion with drift m and volatility s a month;
# the business or household fails the first time its cash reaches zero. Starting with a
# buffer B, the probability of hitting zero within T months is (reflection formula)
#   P = Phi((-B - m T)/(s sqrt T)) + exp(-2 m B / s^2) Phi((-B + m T)/(s sqrt T)),
# and the probability of EVER hitting zero is exp(-2 m B / s^2) if m > 0 (1 if m <= 0).
import math, random
from statistics import NormalDist
Phi = NormalDist().cdf

def p_ruin(B, m, s, T=None):
    if T is None:
        return 1.0 if m <= 0 else math.exp(-2 * m * B / s ** 2)
    v = s * math.sqrt(T)
    return Phi((-B - m * T) / v) + math.exp(-2 * m * B / s ** 2) * Phi((-B + m * T) / v)

# Illustrative small firm (thousands a month): rigid costs 30, mean net surplus +2, s.d. 10.
m, s, fixed = 2.0, 10.0, 30.0
print(f"net surplus {m:+.0f} a month on average, s.d. {s:.0f};"
      f" rigid costs {fixed:.0f} a month")
print(f"{'buffer (months)':>16} {'P(ruin in 24 m)':>16} {'P(ruin ever)':>13}")
for months in (0.25, 0.5, 1, 2, 3, 6, 9, 12):
    B = months * fixed
    print(f"{months:16.2f} {p_ruin(B, m, s, 24):16.1%} {p_ruin(B, m, s):13.1%}")

# Check the 24-month formula by simulation with weekly steps (discrete monitoring misses
# some crossings, so the simulated value is slightly lower).
random.seed(4)
B, weeks, n = 3 * fixed, 104, 20_000
dm, ds = m * 12 / 52, s * math.sqrt(12 / 52)
fails = 0
for _ in range(n):
    x = B
    for _ in range(weeks):
        x += dm + ds * random.gauss(0, 1)
        if x <= 0:
            fails += 1; break
print(f"\nsimulation, 3-month buffer, 24 months: {fails / n:.1%}"
      f" (formula {p_ruin(B, m, s, 24):.1%})")
# Each extra month of buffer multiplies the probability of ever failing by:
print(f"factor per extra month of buffer: {math.exp(-2 * m * fixed / s ** 2):.2f}")
# net surplus +2 a month on average, s.d. 10; rigid costs 30 a month
#  buffer (months)  P(ruin in 24 m)  P(ruin ever)
#             0.25            71.8%         74.1%
#             0.50            51.1%         54.9%
#             1.00            24.9%         30.1%
#             2.00             5.0%          9.1%
#             3.00             0.8%          2.7%
#             6.00             0.0%          0.1%
#             9.00             0.0%          0.0%
#            12.00             0.0%          0.0%
#
# simulation, 3-month buffer, 24 months: 0.5% (formula 0.8%)
# factor per extra month of buffer: 0.30
现金缓冲(以刚性成本的月数计)与破产概率。纵轴为对数刻度:「曾经破产」的概率随缓冲按指数下降,每多一个月的缓冲,概率乘以约 0.30。

在这个模型中,现金缓冲的作用是非线性的:

  • 只有一周的缓冲(0.25 个月),24 个月内破产的概率约 72%;一个月的缓冲降到约 25%;三个月降到不足 1%。
  • 「曾经破产」的概率随缓冲按指数下降:每多一个月的缓冲,概率乘以约 0.30。从一个月增加到两个月,破产概率从 30% 降到 9%;从六个月增加到七个月,只是从约 0.07% 降到约 0.02%。最初的几个月缓冲最值钱。
  • 平均每月的盈余虽然是正的(+2),但相对于每月 10 的波动很小。增加平均盈余 m 或减小波动 s,与增加缓冲 B 一样,都会改变指数里的 2mB/s2。

寒冬

上面的模型假设每个月的平均情况都一样。真实的风险往往是一段时间里平均情况整体变坏:市场寒冬、行业整顿、一个大客户流失。

推导

同一家企业,在未来三年中的某个随机时刻进入一段持续 6 到 18 个月的寒冬,其间平均净现金流从 +2 降到 −6。比较两种手段:增加现金缓冲,与把刚性成本每月削减 5。

# Surviving a "winter". Same small firm as before (thousands a month, rigid costs 30),
# but at a random time in the next three years a downturn begins: for 6 to 18 months
# (uniform) the average net cash flow falls from +2 to -6. Two levers are compared: a
# bigger cash buffer, and cutting rigid costs by 5 a month (which raises the net flow in
# every month, good and bad).
import random

def survive(buffer_months, cut=0.0, n=20_000, seed=8):
    random.seed(seed)
    fixed, s, ok = 30.0, 10.0, 0
    for _ in range(n):
        cash = buffer_months * fixed
        start = random.randint(1, 36); length = random.randint(6, 18)
        alive = True
        for t in range(1, 49):
            m = -6.0 if start <= t < start + length else 2.0
            cash += m + cut + random.gauss(0, s)
            if cash <= 0:
                alive = False; break
        ok += alive
    return ok / n

print("probability of surviving 48 months that contain one downturn")
print(f"{'buffer (months of costs)':>25} {'as is':>8} {'costs cut by 5':>15}")
for b in (1, 2, 3, 4, 6, 9, 12):
    print(f"{b:25d} {survive(b):8.1%} {survive(b, cut=5.0):15.1%}")
# An average winter (12 months at -6) burns 72 by itself, on top of what ordinary
# volatility already requires:
print(f"cash burned by an average winter: 6 x 12 = 72, or {72 / 30:.1f} months of costs")
# probability of surviving 48 months that contain one downturn
#  buffer (months of costs)    as is  costs cut by 5
#                         1    33.2%           93.2%
#                         2    54.2%           98.5%
#                         3    72.5%           99.7%
#                         4    86.3%           99.9%
#                         6    97.9%          100.0%
#                         9   100.0%          100.0%
#                        12   100.0%          100.0%
# cash burned by an average winter: 6 x 12 = 72, or 2.4 months of costs

两个结果值得注意。第一,有了寒冬,三个月的缓冲只能让约 73% 的企业熬过四年,六个月的缓冲才让存活率接近 98%:一次平均长度的寒冬本身就要烧掉约 72,即 2.4 个月的成本,缓冲必须在「平常的波动」之外再覆盖它。第二,削减刚性成本是另一种有力的手段:每月少 5 的刚性支出,既让平常的盈余从 2 变成 7,也让寒冬中的亏损从 −6 变成 −1,等于同时改变了漂移和寒冬的深度。只有一个月缓冲、但每月削减 5 的企业,存活率约 93%,高于有四个月缓冲却不削减成本的企业(约 86%)。但这不是同等金额的比较:四年里每月少 5 合计是 240,而多出的三个月缓冲只是一次性的 90;如果把同样的 240 一次性放进缓冲(一个月加八个月,共九个月),存活率约 99.96%,比削减成本更高。削减成本的长处在于它是逐月发生的,不需要事先拿出一大笔现金;两种手段可以叠加。

证据

企业为什么持有现金。 奥普勒等人发现,现金流风险更高、更难进入资本市场的企业持有更多的现金 (Opler et al. 1999);贝茨、卡勒与斯图尔茨发现,美国企业的现金持有比例在 1980 年至 2006 年间大幅上升,主要原因是企业特有的现金流风险上升,与预防性动机一致 (Bates et al. 2009)。这些研究说明预防性的现金缓冲是企业的普遍做法;它们不能说明多少缓冲是「最优的」,那取决于每一家企业的现金流与融资渠道。

注

模型能说明什么。 这两段程序中的现金流、波动与寒冬长度都是示意性的。布朗运动假设每个月的波动独立、正态,而真实的坏月份往往成串出现、而且尾部更厚(第六章),这都会让真实的破产概率高于模型。另一方面,真实的企业在现金减少时会削减开支、借款或融资,家庭也会调整,这又会让破产概率低于模型。模型的用处在于说明结构:缓冲的作用按指数递减,刚性成本同时决定漂移与寒冬的深度。

假说 · 尚未验证

「缓冲先于收益」假说(尚未确立)。对现金流波动大的小企业,把可用资金优先用于建立相当于三到六个月刚性成本的现金缓冲、并降低刚性成本,比把同样的资金用于扩张,能更明显地提高五年存活率。如果对小企业的纵向数据(控制行业与规模后)显示,初始现金缓冲与五年存活率无关,或者扩张投资带来的存活优势更大,这一假说就被削弱。

本章小结

刚性支出让「零」成为一道吸收壁:碰到一次,所有未来的收益都与你无关。用带漂移的布朗运动与首达时间公式可以算出,现金缓冲对破产概率的作用是非线性的:最初几个月的缓冲最值钱,「曾经破产」的概率随缓冲按指数下降。加入寒冬之后,缓冲还必须覆盖一段时间里的持续亏损;而削减刚性成本同时改善平常的漂移与寒冬的深度:每月少 5 的长期削减,作用大于一次性多出 90 的缓冲,尽管把同样总额(240)一次性放进缓冲效果更好。下一章换一个角度:如果波动是不可避免的,能不能反过来从波动中得到一些东西?

参考文献

Bates, Thomas W., Kathleen M. Kahle, and René M. Stulz. 2009. “Why Do U.S. Firms Hold so Much More Cash Than They Used To?” Journal of Finance 64 (5): 1985–2021.
Feller, William. 1968. An Introduction to Probability Theory and Its Applications, Volume I. 3rd ed. Wiley.
Opler, Tim, Lee Pinkowitz, René Stulz, and Rohan Williamson. 1999. “The Determinants and Implications of Corporate Cash Holdings.” Journal of Financial Economics 52 (1): 3–46.
Redner, Sidney. 2001. A Guide to First-Passage Processes. Cambridge University Press.

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).