J-RATE INSIGHTS

JPX OIS & JSDA BOND ANALYTICS

Purpose

This page condenses the theory in README.md and links each formula to the production code (see metrics/). It is intended for analysts who want a quick refresher on how the dashboard turns JSDA and JPX data into implied probabilities.

Data Flow

1. Ingestion

Scheduled jobs download JSDA bond quotes and JPX JSCC settlement rates into data/market_data.json (see README “Project Structure”).

2. Processing

process_market_data ( metrics/calculations.py ) normalizes tenors, derives the BoJ rate distribution, and attaches credit metrics.

3. Presentation

The Flask route / wires the processed payload to the charts in templates/index.html, yielding the dashboard views.

BoJ Rate Probability Model

Following the README derivation, the expected overnight rate over the policy period satisfies E[r] = (r_post (D_pre + D_post) - r_pre D_pre) / D_post, where r_post is the OIS quote spanning the next decision window, r_pre is today’s 1D rate, and D_* measure days before/after the meeting. The helper calculate_implied_rate inside calculate_rate_probabilities interpolates the necessary term structure point to evaluate this identity.

With a 25 bps policy increment, the hike probability is p = (E[r] - r_pre) / 0.25. Positive p maps to the “hike” bar, negative values are treated as cuts, and everything is clipped to 0–100% to build the stacked scenario chart shown on the dashboard tab.

Corporate Default Probabilities

The README’s “Probability of Default” section is implemented in metrics/credit.py. Government bonds are used to interpolate a term-matched risk-free curve, which is subtracted from each corporate yield to form a spread s.

Using a 10% recovery assumption (LGD = 90%), the hazard rate for issuer i is lambda_i = s_i / (1 - R). Assuming a constant hazard rate, the default probability over horizon T is PD_i(T) = 1 - exp(-lambda_i T). The resulting 1Y/3Y/5Y metrics populate the “Default Probs” table, sorted by 5-year risk.

JGB Yield Curve Overlay

extract_jgb_curve samples tradeable government issues, groups them by years to maturity, and interpolates to standard tenors (1D to 40Y). The resulting array is injected as data.jgb_curve, letting the front-end plot government yields alongside OIS rates for quick sanity checks on term premia.