fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Precision-Recall Curve and PR-AUC

Install and import#

bash
npm install fintech-algorithms
ts
import { precisionRecallCurveAndPrAuc } from "fintech-algorithms/model-validation-and-backtesting/classification-and-score-validation/precision-recall-curve-and-pr-auc";

Signature#

precisionRecallCurveAndPrAuc(inputs)

Worked example#

verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.

Input#

inputs
{
  "records": [
    {
      "id": "R01",
      "label": 1,
      "score": 0.95,
      "probability": 0.92,
      "weight": 1,
      "sector": "Banking",
      "country": "Egypt",
      "regime": "Expansion",
      "score_available_at": "2025-01-01T00:00:00Z",
      "label_available_at": "2026-01-01T00:00:00Z"
    },
    {
      "id": "R02",
      "label": 0,
      "score": 0.9,
      "probability": 0.88,
      "weight": 1,
      "sector": "Insurance",
      "country": "Egypt",
      "regime": "Expansion",
      "score_available_at": "2025-01-01T00:00:00Z",
      "label_available_at": "2026-01-01T00:00:00Z"
    },
    {
      "id": "R03",
      "label": 1,
      "score": 0.9,
      "probability": 0.84,
      "weight": 1,
      "sector": "Markets",
      "country": "Saudi Arabia",
      "regime": "Expansion",
      "score_available_at": "2025-01-01T00:00:00Z",
      "label_available_at": "2026-01-01T00:00:00Z"
    }
  ],
  "evaluation_cutoff": "2026-06-30T00:00:00Z"
}

Call#

precisionRecallCurveAndPrAuc(inputs)

Returns#

object with 8 fields: points, pr_auc_average_precision, baseline_prevalence, positive_weight, negative_weight, tie_group_count, integration_rule, state

{
  "points": [
    {
      "threshold": null,
      "true_positive": 0,
      "false_positive": 0,
      "precision": 1,
      "recall": 0
    },
    {
      "threshold": 0.95,
      "true_positive": 1,
      "false_positive": 0,
      "precision": 1,
      "recall": 0.1
    },
    {
      "threshold": 0.9,
      "true_positive": 2,
      "false_positive": 1,
      "precision": 0.6666666666666666,
      "recall": 0.2
    }
  ],
  "pr_auc_average_precision": 0.6220479082321188,
  "baseline_prevalence": 0.4166666666666667,
  "positive_weight": 10,
  "negative_weight": 14,
  "tie_group_count": 22,
  "integration_rule": "average-precision-right-step",
  "state": "ranking-evaluated"
}

Other exports#

This module also exports rocCurveAndRocAuc, brierScore, logLoss, reliabilityDiagramAndExpectedCalibrationError, gainsLiftAndDecileCapture, costSensitiveThresholdOptimization, scoreStabilityAndMigrationMatrix, sliceBasedValidationBySectorCountryAndRegime, rareEventBacktestAndConfidenceBounds, calculate. Every module additionally exports run as an alias of its primary function, and a meta object carrying its catalog id, domain, family, shape and article URL.

Diagrams#

Precision-Recall Curve and PR-AUC — article hero
Precision-Recall Curve and PR-AUC — decision boundaries
Precision-Recall Curve and PR-AUC — method selection
Precision-Recall Curve and PR-AUC — system map

How it works#

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References#

The rest of the Classification and Score Validation family#