Skip to content

Core API Reference

Metrics

cranalytics.metrics

Core risk and portfolio metrics.

calculate_classification_metrics(y_true, y_prob, threshold=0.5)

Calculate accuracy, precision, recall, and F1 score.

calculate_gini(y_true, y_prob)

Calculate the Gini coefficient.

calculate_ks(y_true, y_prob)

Calculate the Kolmogorov-Smirnov statistic.

calculate_wal(schedule)

Calculate Weighted Average Life (WAL) in months.

Finance

cranalytics.finance

Basic financial math utilities used in credit analytics.

calculate_irr(cash_flows, initial_investment, periods_per_year=12)

Calculate the annualized Internal Rate of Return (IRR) as a decimal.

calculate_npv(cash_flows, initial_investment, discount_rate, periods_per_year=12)

Calculate Net Present Value (NPV).

generate_amortization_schedule(principal, annual_rate, term_months)

Generate a standard monthly amortization schedule.

Portfolio

cranalytics.portfolio

Portfolio transforms and loss calculation utilities.

assign_fico_band(fico_score, bands=None)

Assign a FICO band based on score.

assign_risk_grade(fico_score, cutoffs=None)

Assign a risk grade based on descending FICO score cutoffs.

Parameters:

Name Type Description Default
fico_score int

The FICO score.

required
cutoffs list[int] | None

A descending list of thresholds. If None, it defaults to [800, 750, 700, 650, 600], producing grades 1-6.

None

calculate_fico_mix(df, group_by=None)

Calculate the FICO mix (distribution) for a portfolio or vintage.

calculate_lgd(loan_data, haircuts=None)

Calculate Loss Given Default (LGD) based on collateral.

LGD = 1 - (Recovery Value / Exposure) Recovery Value = Collateral Value * (1 - Haircut)

estimate_recovery(loan_data, haircuts=None)

Estimate recovery amount based on collateral value and haircuts.

segment_fico(df, fico_column='fico_score', bands=None, risk_cutoffs=None)

Add FICO band and risk grade columns to a portfolio DataFrame.