← 返回编程题库
coding-tlac-ratio-rwa-and-leverage中等免费版2000ms未尝试

FSB TLAC 双比率:TLAC/RWA 与 TLAC/杠杆敞口

FSB TLAC Dual Ratios: TLAC/RWA and TLAC/Leverage-Exposure

开始编码

实现 solution(core_capital: float, bail_in_debt: float, rwa: float, leverage_exposure: float) -> list[float]。监管报送组每日需要输出全球系统重要性银行(G-SIB)的 FSB TLAC 看板。core_capital 是该行的监管资本(CET1 + AT1 + Tier-2,单位美元);bail_in_debt 是按 FSB Term Sheet 计入 TLAC 的合格自救债务(美元);rwa 是风险加权资产;leverage_exposure 是 Basel III 杠杆率分母用的总敞口度量。

输出为长度-2 列表 [tlac_to_rwa, tlac_to_leverage],由如下可观测公式定义:

  1. TLAC 分子tlac = core_capital + bail_in_debt。TLAC 是监管资本与合格自救债务之——不是资本单项。
  2. RWA 比率rwa > 0tlac_to_rwa = tlac / rwarwa == 0tlac > 0 返回 float('inf')rwa == 0tlac == 0 返回 float('nan')
  3. 杠杆比率leverage_exposure > 0tlac_to_leverage = tlac / leverage_exposureleverage_exposure == 0tlac > 0 返回 float('inf')leverage_exposure == 0tlac == 0 返回 float('nan')
  4. 输出:长度 2 的列表 [tlac_to_rwa, tlac_to_leverage],顺序固定。

两条比率独立计算——一条是有限数而另一条同时是 inf 或 NaN 的混合输出就是合同输出。

solution(1000.0, 800.0, 9000.0, 25000.0) 返回 [0.2, 0.072]。该行持有 1000 监管资本与 800 合格自救债务,故 tlac = 1800。RWA 为 9000、杠杆敞口度量为 25000tlac_to_rwa = 1800 / 9000 = 0.2(远高于 18% 的 RWA 红线);tlac_to_leverage = 1800 / 25000 = 0.072(高于 6.75% 的杠杆红线)——两条比率均合规。

只有一条比率分母为零的算例:solution(500.0, 300.0, 0.0, 10000.0) 返回 [float('inf'), 0.08]。TLAC 为 800。RWA 为零(一家全现金的病态银行),故 tlac_to_rwa = inf;杠杆敞口为 10000,故 tlac_to_leverage = 800 / 10000 = 0.08。混合的 inf-加-有限数输出就是合同输出——两条比率相互独立。

边界:全零(solution(0.0, 0.0, 0.0, 0.0))返回 [float('nan'), float('nan')]——两条比率都是 0/0。core_capital = bail_in_debt = 0rwa > 0leverage_exposure > 0 时返回 [0.0, 0.0](一家完全资不抵债的银行)。一家恰好踩在 18% RWA 与 6.75% 杠杆门槛上的 G-SIB 返回 [0.18, 0.0675]。本函数对约束区间内的任何输入都不抛异常;inf 与 nan 哨兵就是分母为零退化情形的合同输出。

实现细节由 stubs/stub.py 提供。

实践背景

金融稳定理事会(FSB)的总损失吸收能力(TLAC)标准(FSB 2015 Term Sheet,2022 年完全实施)是叠加在 Basel III 之上的处置韧性要求,仅适用于全球系统重要性银行(G-SIB)。直观逻辑:处置中监管需要先把次级债自救(bail in),再触及优先级债权人或纳税人,所以损失吸收缓冲必须按"核心监管资本 + 合格次级自救债"计,而不是仅按资本计。FSB 用两条并行比率把这个缓冲钉死:一条风险加权比率 TLAC / RWA(2022 年起 ≥ 18%)和一条非风险加权比率 TLAC / leverage_exposure(2022 年起 ≥ 6.75%)。两条必须同时踩到红线之上——只满足 RWA 比率不算合格。solution(...) 输出的 [tlac_to_rwa, tlac_to_leverage] 就是处置规划组每日监控的 TLAC 看板。本函数刻意把以下几条概念约定显式化——TLAC 是资本加自救债(不是资本单项);两个分母独立(风险加权 vs 总敞口);两条比率以固定顺序输出,RWA 那条在前;每条比率独立处理自己的分母为零哨兵——这些正是处置规划管线和 FSB 同行评议里最常发生的方向性错误。纯 O(1) 实现(一次求和、两次除法)是该标准合计的标准模式;本题价值在于 FSB 特有的定义性不变量,而非算法深度。

约束条件

  • 0.0 <= core_capital <= 1e10 且 0.0 <= bail_in_debt <= 1e10
  • 0.0 <= rwa <= 1e11 且 0.0 <= leverage_exposure <= 1e11
  • 输出:长度 2 的 list[float],顺序固定为 [tlac_to_rwa, tlac_to_leverage]
  • 每个分量为非负有限值 或 float('inf')(分母为 0 且 TLAC > 0) 或 float('nan')(分母为 0 且 TLAC == 0);浮点比较器使用 rel_tol=1e-9, abs_tol=1e-9, nan_equals_nan=true

样例

Case 1 · statement-example: healthy gsib both ratios above thresholds

输入: [1000,800,9000,25000]

期望: [0.2,0.072]

tlac = 1000 + 800 = 1800;tlac_to_rwa = 1800 / 9000 = 0.2;tlac_to_leverage = 1800 / 25000 = 0.072。均高于 FSB 18% / 6.75% 红线。

Case 2 · statement-example: zero rwa one ratio inf the other finite

输入: [500,300,0,10000]

期望: ["Infinity",0.08]

tlac = 800;rwa = 0 且 tlac > 0 故 tlac_to_rwa = inf;tlac_to_leverage = 800 / 10000 = 0.08。两分母独立,产生混合 inf/有限输出。

Case 3 · visible: all zeros both ratios nan

输入: [0,0,0,0]

期望: ["NaN","NaN"]

tlac = 0 且两分母均为 0 -> 两条比率都是 NaN。

Case 4 · visible: at exact fsb thresholds 18 percent and 6.75 percent

输入: [1500,300,10000,26666.666666666668]

期望: [0.18,0.0675]

tlac = 1800;tlac_to_rwa = 1800 / 10000 = 0.18(FSB RWA 红线);tlac_to_leverage = 1800 / 26666.67 = 0.0675(FSB 杠杆红线)。

最近提交

还没有提交记录。

编码区

实现 solution(...)。本地运行当前支持 Python 可见样例;服务端提交会运行可见样例和隐藏测试。

加载编辑器...
计时0:00

默认展示公开样例。点击「运行样例」后会在这里显示实际输出;点击「提交评测」会进入隐藏测试。

Case 1 · statement-example: healthy gsib both ratios above thresholds

输入: [1000,800,9000,25000]

期望: [0.2,0.072]

tlac = 1000 + 800 = 1800;tlac_to_rwa = 1800 / 9000 = 0.2;tlac_to_leverage = 1800 / 25000 = 0.072。均高于 FSB 18% / 6.75% 红线。

Case 2 · statement-example: zero rwa one ratio inf the other finite

输入: [500,300,0,10000]

期望: ["Infinity",0.08]

tlac = 800;rwa = 0 且 tlac > 0 故 tlac_to_rwa = inf;tlac_to_leverage = 800 / 10000 = 0.08。两分母独立,产生混合 inf/有限输出。

Case 3 · visible: all zeros both ratios nan

输入: [0,0,0,0]

期望: ["NaN","NaN"]

tlac = 0 且两分母均为 0 -> 两条比率都是 NaN。

Case 4 · visible: at exact fsb thresholds 18 percent and 6.75 percent

输入: [1500,300,10000,26666.666666666668]

期望: [0.18,0.0675]

tlac = 1800;tlac_to_rwa = 1800 / 10000 = 0.18(FSB RWA 红线);tlac_to_leverage = 1800 / 26666.67 = 0.0675(FSB 杠杆红线)。