BCW2011 案例总览#
这一页把四个 BCW 仓库案例放在同一张图里看。跑过 快速开始 以后,先回到这里统一记号、数值检查和代码映射,会比直接跳进某一个 walkthrough 更稳。
仓库当前覆盖四个和论文对应的案例:
src/example/BCW2011Liquidation.pysrc/example/BCW2011Refinancing.pysrc/example/BCW2011Hedging.pysrc/example/BCW2011CreditLine.py
论文转录稿作为统一公式来源保存在:
src/example/A_unified_theory_of_tobin's_q,_corporate_investment,_financing,_and_risk_management.md
BCW 路径到底教什么#
BCW 主线的价值,在于它把“连续时间公司金融论文”到“可运行的一维 FinHJB 实现”这段桥搭得非常完整。
它同时教你三件事:
BCW 如何利用齐次性把二维问题降成一维;
这个降维后的问题如何映射到 FinHJB 的类接口;
论文里的内生边界条件如何变成数值搜索 target。
共同记号与对象映射#
四个案例都使用同一个一维降维:
论文里的对象和仓库对象一一对应如下:
论文对象 |
含义 |
仓库对象 |
|---|---|---|
|
现金资本比 |
|
|
价值资本比 |
|
|
边际现金价值 |
|
|
曲率 |
|
|
平均 q |
派生序列 |
|
边际 q |
派生序列 |
策略函数 |
|
|
而 FinHJB 的类接口映射也在四个脚本里保持稳定:
FinHJB 类 |
在 BCW 里的角色 |
|---|---|
|
Table I 原始参数和案例特有参数 |
|
左右边界值与状态域限制 |
|
网格上的控制变量容器 |
|
FOC 或显式策略更新 |
|
HJB 残差与外层边界 target |
四个案例分别教什么#
案例 |
脚本 |
论文图 |
主要数值结构 |
主要经济含义 |
|---|---|---|---|---|
Case I |
|
Figure 2 |
单 target 的 payout-boundary 搜索 |
极端融资约束会触发大规模 asset sales |
Case II |
|
Figure 3 |
同时搜索 |
股权发行会把 liquidation region 变成 issuance region |
Case IV |
|
Figure 6 |
双控制 HJB 与 hedge-region 诊断 |
对冲和流动性管理是互补的 |
Case V |
|
Figure 7 |
单一网格上的分段 HJB |
信用额度会显著降低边际流动性价值 |
论文边界条件如何变成数值 target#
学习 BCW 的一个核心原因,就是看清楚论文里的边界语言怎样变成可执行代码。
反复出现的模式是:
论文给出某个边界值公式;
论文再给出某个最优性条件,用来钉住边界位置;
求解器在外层搜索,直到网格满足这个 residual。
例如:
liquidation:搜索
\bar w,直到p''(\bar w)=0;refinancing:同时搜索
p(0)与\bar w,再用p'(m)=1+\gamma恢复m;hedging:保留 refinancing 的边界逻辑,但内部策略问题更丰富;
credit line:保留发行与 payout 逻辑,同时按区域切换 HJB residual。
推荐阅读顺序#
如果你的目标不只是“把脚本跑通”,而是想通过 BCW 学会包的建模方法,推荐按这个顺序读:
这里四个 walkthrough 是“公式到代码”的主桥。结果与诊断 则是当你已经理解案例结构之后,用来从求解器对象角度读解的补充页。
稳定量级检查#
仓库里健康运行通常满足:
案例 |
稳定量级 |
|---|---|
Liquidation |
|
Refinancing |
|
Hedging |
costly margin: |
Credit line |
|
在纠结小的网格差异之前,先看这些 headline number 是否站得住。
以后应该把哪一页当模板#
如果后面你要把 BCW 改成自己的模型,优先选择结构最接近的案例:
liquidation:一个控制、一个内生 payout boundary;
refinancing:带发行、value matching 和 interior smooth-pasting;
hedging:多控制与控制进入扩散项;
credit line:单一网格上的 regime-dependent residual。
相关页面#
从 BCW2011 Liquidation 逐步讲解 开始。
当你想从求解器对象角度读
run_case()返回值时,再配合 结果与诊断 一起看。