{% extends "base.html" %} {% from "_recon_table.html" import render_table, drill_table, drill_table2 %} {% block title %}Reconciliation — RWA Calculator{% endblock %} {% block content %}
Run this calculator and reconcile its output against your legacy calculator, component by component (EAD, RWA, risk weight, PD, LGD, CCF, exposure class, …). Each row is bucketed as match / within-tolerance / break / missing, with our reason and input drivers attached so a break can be triaged to a data fix or an engine fix.
{% if error %}Each row links into the per-key explorer, pre-filtered to that segment.
{% if result.allocation_table.rows %}Money totalled by risk class, post-guarantee: a guaranteed exposure's guaranteed slice is counted under the guarantor's class and its retained slice under the borrower's, matching a post-substitution legacy extract. Offsetting deltas show where the two engines allocate an exposure to different classes.
{{ render_table(result.allocation_table) }} {% endif %}Where breaks concentrate. Each exposure is a single key, so its break is attributed to its borrower (origination) class — a guaranteed exposure is not split here (that post-guarantee split is in the allocation above).
{{ drill_table(result.class_table, "our_exposure_class", result.explorer_url, "exposure_class", result.hide_qs) }}Our-side view — how our breaks distribute across methodology (STD / FIRB / AIRB / slotting / equity) within each exposure class. Click a method to drill the explorer to that class × method. (The legacy side carries no approach, so the asset-class allocation above stays un-split.)
{{ drill_table2(result.class_method_table, "method", result.explorer_url, "exposure_class", "our_exposure_class", "method", "method", result.hide_qs) }}Click a key to open its single-loan forensic and sign it off (accept / reject with a reason), or open the full per-key explorer ({{ "{:,}".format(result.total_rows) }} row(s)). Reviewed breaks drop off this worklist. Download the full per-key detail: CSV · Excel.
{% if result.signoff_progress and result.signoff_progress.total %}Sign-off progress: {{ "{:,}".format(result.signoff_progress.reviewed) }} of {{ "{:,}".format(result.signoff_progress.total) }} break(s) reviewed — {{ "{:,}".format(result.signoff_progress.open) }} still open ({{ "{:,}".format(result.signoff_progress.accepted) }} accepted, {{ "{:,}".format(result.signoff_progress.rejected) }} rejected{% if result.signoff_progress.changed %}, {{ "{:,}".format(result.signoff_progress.changed) }} changed since sign-off & back on the worklist{% endif %}).
{% endif %} {% if result.signoff_decision_count %} {% endif %} {% if result.biggest_breaks.rows %} {{ drill_table(result.biggest_breaks, "_recon_key", result.loan_url_base, "key") }} {% elif result.break_count %}