Financial Calculations & Valuation Advanced

Bank ALM (Asset-Liability Management) Structural Liquidity Maturity Ladder in Python

Build a Treasury Asset-Liability Management (ALM) maturity bucket ladder (1–14d, 15–28d, 1–3m, 3–6m, 1–3y) in Python Pandas to detect cumulative liquidity mismatches.

#pandas#numpy

Problem Statement

Banks and NBFCs fail when short-term liabilities (deposits/CPs maturing in 1–30 days) exceed short-term liquid assets—even if long-term assets are solvent. ALCO committees monitor net and cumulative liquidity gaps across regulatory time buckets.

Formula / Core Logic

Net_Gap_i = Cash_Inflows_i - Cash_Outflows_i Gap_Pct_of_Outflows = (Net_Gap_i / Cash_Outflows_i) * 100 Cumulative_Gap = Running_Sum(Net_Gap_i)

Installation

pip install pandas numpy
alm-liquidity-gap-structural-maturity-ladder-bank-python.py
import pandas as pd
import numpy as np

def compute_alm_liquidity_ladder(buckets_df):
    # Expected cols: Bucket, Asset_Inflows, Liability_Outflows
    df = buckets_df.copy()
    df['Net_Liquidity_Gap'] = df['Asset_Inflows'] - df['Liability_Outflows']
    df['Cumulative_Gap'] = df['Net_Liquidity_Gap'].cumsum()
    df['Gap_As_Pct_Outflows'] = ((df['Net_Liquidity_Gap'] / df['Liability_Outflows']) * 100).round(2)
    df['ALCO_Breach_Flag'] = np.where(df['Gap_As_Pct_Outflows'] < -15.0, 'BREACH', 'OK')
    return df

Get the Complete 100+ Python Quant & Automation Bundle

Instant lifetime access to all production-ready scripts, valuation models, and trading bots ($19).

Buy Full Bundle on Gumroad ($19) →

Frequently Asked Questions

Q: Why are the 1–7 day and 8–14 day buckets most critical in ALM?

Regulatory norms strictly cap negative mismatches in the 1–14 day and 15–28 day buckets (typically at 10% to 15% of outflows) to prevent sudden liquidity crunches.