RiskReplay
RiskReplay is an outcome-aware evaluation engine for financial AI systems operating under delayed and selective labels. It is built for teams that need more than a drift alert: they need to know whether a metric is trustworthy, what it means financially, and which cases a human reviewer should inspect first.
RiskReplay produces evidence and prioritization support. It is not an AML decision engine, a credit-decision service, or a compliance certification tool.
What it does
| Capability | RiskReplay output |
|---|---|
| Calibration | Brier score, log loss, ECE, calibration intercept/slope, reliability bands |
| Label health | Maturity rate, pending rate, observed-label coverage, delay diagnostics |
| Distribution shift | Score PSI, Jensen–Shannon divergence, per-feature PSI when supplied |
| Audit evidence | Schema and quality checks, reproducibility manifest, data/window fingerprints |
| Human review | Budget-aware queue ranked by expected loss, uncertainty, and OOD signals |
Install
pip install riskreplay
For local development:
pip install -e ".[dev]"
Minimal evaluation
from riskreplay import ColumnSpec, ObservationPolicy, ReviewPolicy, evaluate
report = evaluate(
events="/secure/path/aml_alerts.parquet",
reference="/secure/path/reference_window.parquet",
columns=ColumnSpec(
id="alert_id", score="aml_score", label="confirmed_suspicious",
label_status="label_status", exposure="amount_usd",
uncertainty="model_uncertainty", ood_score="network_ood_score",
segment="channel", model_version="model_version",
),
observation=ObservationPolicy(maturity_days=45),
review=ReviewPolicy(budget=500),
slices=["channel", "risk_band"],
)
report.write_evidence_bundle("artifacts/run-2026-08-23")
The important constraint
Labels are not always a random sample. If only some alerts are reviewed, a score calculated from observed labels can be biased. RiskReplay reports label_coverage, pending_rate, and identifiability alongside model metrics. If it has no defensible observation information, it does not label a selection-corrected metric as reliable.
Privacy
RiskReplay runs locally. The evidence bundle stores aggregate metrics, configuration, timestamps, and content fingerprints by default; it does not export raw customer records unless an application explicitly writes the review queue.
Public assets
The public Hugging Face catalog at adnanallemon/riskreplay-public-assets holds only publication-safe schema and reproducibility material. It intentionally does not contain production financial records or simulated customer data.
Project status
0.1.0 is the first Python MVP. The Rust crate in crates/riskreplay-core contains deterministic primitives that can be exposed through PyO3 in a later performance release without changing the public Python contract.
License
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file riskreplay-0.1.0.tar.gz.
File metadata
- Download URL: riskreplay-0.1.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
252c8e9d51a110e7593f7263f129a18e036bed0e01b93b4c7dc1c7ccac5c3a56
|
|
| MD5 |
36c5c68375e25d2e23c4432fd9401290
|
|
| BLAKE2b-256 |
35dc3acc3e33d2a8d9a15004c9cd525d8d8afcf567b7ffd2276cbadd9d30c96a
|
Provenance
The following attestation bundles were made for riskreplay-0.1.0.tar.gz:
Publisher:
publish.yml on adnanomar77/riskreplay
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
riskreplay-0.1.0.tar.gz -
Subject digest:
252c8e9d51a110e7593f7263f129a18e036bed0e01b93b4c7dc1c7ccac5c3a56 - Sigstore transparency entry: 2568641161
- Sigstore integration time:
-
Permalink:
adnanomar77/riskreplay@edf397771d788da82b37ae5aa39e42a10549e59c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/adnanomar77
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@edf397771d788da82b37ae5aa39e42a10549e59c -
Trigger Event:
release
-
Statement type:
File details
Details for the file riskreplay-0.1.0-py3-none-any.whl.
File metadata
- Download URL: riskreplay-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99bfff22deddccfb7ab876ddea66cd2664d417a7fc86349d63e86b66d220ef03
|
|
| MD5 |
c206e53b7ebaeb559e5f801bc7056c5e
|
|
| BLAKE2b-256 |
0f095d47c873d7f7ccff02a9487fe87fbd66543ad9c9292d48122e86a6e7fc81
|
Provenance
The following attestation bundles were made for riskreplay-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on adnanomar77/riskreplay
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
riskreplay-0.1.0-py3-none-any.whl -
Subject digest:
99bfff22deddccfb7ab876ddea66cd2664d417a7fc86349d63e86b66d220ef03 - Sigstore transparency entry: 2568641196
- Sigstore integration time:
-
Permalink:
adnanomar77/riskreplay@edf397771d788da82b37ae5aa39e42a10549e59c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/adnanomar77
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@edf397771d788da82b37ae5aa39e42a10549e59c -
Trigger Event:
release
-
Statement type: