Calculate analytics portfolio realized ROI

Reconcile the analytics portfolio's realized ROI from unique finance-owned incremental benefit sources, causal-evidence weights, non-overlapping function allocations, implementation/recurring/shared costs and coherent joint scenarios, with positive-value probability and CVaR loss gates.

What it's for

Gives CTOs, CEOs and investors a defensible answer to whether the analytics portfolio paid back—without double-counting benefits or converting activity into invented ROI.

What you give it

Inputs split into evidence read from your connected systems, calibration your team owns, and numerical controls that affect precision but never the result's meaning.

Field Type Role Required
benefit_sources array of objects (4 fields) ≥ 1 item Evidence Yes
functions array of objects (3 fields) ≥ 1 item Evidence Yes
max_detail_rows integer ≥ 1, ≤ 500 Numerical control Optional
maximum_tail_loss number ≥ 0 Your calibration Optional
minimum_probability_positive_net_value number ≥ 0, ≤ 1 Your calibration Optional
scenarios array of objects (2 fields) Evidence Yes
shared_cost_scenarios array of number ≥ 2 items Evidence Yes
tail_probability number > 0, ≤ 0.5 Your calibration Optional

Each benefit_sources record

Field Type Required
allocation_by_function object Yes
causal_evidence_weight number (≥ 0, ≤ 1) Yes
id string (non-empty) Yes
realized_incremental_value_scenarios array of number (≥ 2 items) Yes
Example input
{
  "benefit_sources": [
    {
      "allocation_by_function": {
        "completion-forecast": 0.6,
        "decision-policy": 0.4
      },
      "causal_evidence_weight": 0.8,
      "id": "delay-loss-avoided",
      "realized_incremental_value_scenarios": [
        100,
        60,
        -10
      ]
    },
    {
      "allocation_by_function": {
        "decision-policy": 0.8
      },
      "causal_evidence_weight": 1,
      "id": "incident-loss-avoided",
      "realized_incremental_value_scenarios": [
        50,
        20,
        0
      ]
    }
  ],
  "functions": [
    {
      "id": "completion-forecast",
      "implementation_cost": 20,
      "recurring_cost_scenarios": [
        10,
        10,
        10
      ]
    },
    {
      "id": "decision-policy",
      "implementation_cost": 10,
      "recurring_cost_scenarios": [
        5,
        5,

Truncated for display — the full payload is 69 lines.

What you get back

This is the actual output of running the example above — computed by the same function the platform calls, not an illustration.

Example output
{
  "benefit_source_diagnostics": [
    {
      "allocated_fraction": 1,
      "causal_evidence_weight": 0.8,
      "expected_evidence_adjusted_value": 52.8,
      "source_id": "delay-loss-avoided",
      "unallocated_fraction": 0
    },
    {
      "allocated_fraction": 0.8,
      "causal_evidence_weight": 1,
      "expected_evidence_adjusted_value": 31,
      "source_id": "incident-loss-avoided",
      "unallocated_fraction": 0.2
    }
  ],
  "configuration": {
    "maximum_tail_loss": null,
    "minimum_probability_positive_net_value": 0.7,
    "tail_probability": 0.1
  },
  "decision": "analytics_portfolio_realized_value_supported",
  "failed_gates": [],
  "function_attribution": [
    {
      "expected_allocated_benefit": 31.68,
      "expected_direct_cost": 30,
      "expected_direct_net_value_before_shared_cost": 1.68,
      "function_id": "completion-forecast"
    },
    {
      "expected_allocated_benefit": 45.92,
      "expected_direct_cost": 15,
      "expected_direct_net_value_before_shared_cost": 30.92,
      "function_id": "decision-policy"
    }
  ],
  "guardrails": [
    "Only finance-reconciled incremental benefit sources with a defensible causal evidence weight belong in realized ROI; commits, recommendations, usage and adoption are not monetary value.",
    "Each benefit source is counted once before allocation. Unallocated value remains visible, allocations cannot exceed one, and function attribution is accounting—not causal Shapley credit or employee performance.",
    "Scenario columns must describe coherent joint futures in the same currency, horizon and price basis. CVaR covers represented scenarios only and a supported portfolio result does not validate every component function."
  ],
  "method": "evidence_weighted_unique_benefit_source_scenario_roi_v1",

Truncated for display — the full payload is 60 lines.

How it works

Causal inference & experiment design — Separate what a change caused from what merely moved alongside it.

  1. 1 Freeze the active function perimeter, coherent finance scenarios, complete costs and a unique benefit-source ledger whose incremental values are resolved independently of engineering activity.
  2. 2 Apply the governed causal-evidence weight once per source, reject allocations above 100 percent, reconcile allocated and unallocated value, and calculate function-level accounting attribution.
  3. 3 Aggregate portfolio benefit, cost, net value, ROI, positive-value probability and weighted tail loss before applying executive value and risk gates.

Before you trust it

Every tool in the catalog ships with the conditions under which its answer is meaningful — and the conditions under which it should abstain instead of guessing.

Assumptions & guardrails

  • Assignment or adoption timing, interference policy, overlap, attrition, and outcome availability match the estimand encoded by the method.
  • Benefits are incremental, mature, finance-reconciled and unique; evidence weights reflect a governed causal design; scenario columns share currency, horizon and price basis; all implementation, operating and shared costs are included.
  • A causal label is warranted only when design and diagnostic requirements pass; otherwise treat the result as descriptive or abstain.
  • Usage, adoption, commits and recommendations are not value; allocation is financial reconciliation rather than causal credit, employee performance or proof that every component function is calibrated.

Minimum evidence

  • functions: at least 1 rows/items
  • benefit_sources: at least 1 rows/items
  • scenarios: required and organization-defined
  • shared_cost_scenarios: at least 2 rows/items

How to validate it

Preserve the assignment/adoption design and validate overlap, pre-period or placebo diagnostics, attrition, interference policy, and cluster-level uncertainty; never tune on the estimated effect.

Calibrating it to your org

Same for everyone

The mathematical kernel, validation rules, method version, and JSON output semantics are organization-independent; no tenant-trained coefficients or company benchmark is embedded in the function.

Specific to you

  • finance-reconciled analytics portfolio ledger joining deployed function versions and costs to mature unique outcome sources whose causal evaluation resolves after the decision, with coherent joint uncertainty scenarios
  • portfolio/cost/benefit perimeter, currency/horizon/price basis, causal evidence-weight policy, unique-source identity and allocation, shared cost, scenario law, positive-value probability, tail probability/loss and reporting authority

Calibration workflow

  1. 1 Define the management decision, target outcome, aggregate unit, privacy boundary, cadence, and prediction/intervention horizon for this organization.
  2. 2 Build a tenant-scoped historical cohort using only information available before each prediction or decision; preserve zero periods, censoring, assignment probabilities, and unresolved outcomes when the method requires them.
  3. 3 Estimate statistical parameters on training history, but obtain costs, utilities, risk tolerance, practical-effect thresholds, capacity, and policy constraints from accountable decision owners.
  4. 4 Validate on later time windows or held-out aggregate units at the deployment grain, against a simple baseline and the function-specific validation strategy.
  5. 5 Deploy only if the returned decision clears evidence, overlap, calibration, robustness, and guardrail checks; warning, unsupported, schema-gap, and fallback decisions are abstentions.
  6. 6 Monitor realized outcomes, data drift, coverage, and decision regret; recalibrate at a governed cadence or after a detected regime/definition change, never merely because a stakeholder dislikes the result.

Call it from your AI

You don't wire up 388 tools in your MCP client. The GitRevio MCP server exposes 18 tools, three of which let an agent search the catalog, read a tool's schema, and run it — so the assistant finds this one on its own.

gitrevio_capabilities_search
  { "q": "reconcile the analytics portfolios realized roi" }
  → finds "calculate_analytics_portfolio_realized_roi"

gitrevio_capability_describe
  { "capability_id": "calculate_analytics_portfolio_realized_roi" }
  → returns the input schema and agent guidance shown on this page

gitrevio_capability_run
  { "capability_id": "calculate_analytics_portfolio_realized_roi", "arguments": { ... } }
  → returns the result shown above

Works in Claude Desktop, Claude Code, Cursor, Cline, Continue.dev, Goose and Aider. See the MCP server.

Related tools

Audit analytics transportability

Audit whether locally calibrated analytical functions retain decision-loss improvement across target-similar operating environments using similarity-weighted random-effects meta-analysis, between-environment variance, I-squared, sign consistency and a conservative target prediction interval.

Forecasting & survival

Construct calibration shared evidence graph

Discover stable candidate relationships for shared calibration design by correlating standardized held-out loss improvement across common environments, resampling whole environments, stability-selecting practical edges, controlling sign discoveries with Benjamini-Hochberg FDR and returning connected components without claiming parameter transfer.

Network & dependency analysis

Audit analytical specification multiverse

Audit whether an analytical conclusion survives a prespecified multiverse of admissible windows, cohorts, metrics, and models using aligned bootstrap draws, a weighted specification curve, practical-effect support gates, and descriptive choice-influence diagnostics.

Statistical audit & measurement

Audit analytics challenger independence

Audit whether an analytical challenger supplies genuinely independent error information: use paired temporal moving-block bootstrap bounds on error correlation, incumbent-failure catch rate and common-mode joint failure, with simultaneous Bonferroni control across every screened challenger and explicit evidence gates.

Statistical audit & measurement

Audit analytics function calibration readiness

Gate analytical functions on paired out-of-time decision loss against a frozen baseline using temporal moving-block bootstrap, autocorrelation- and weight-adjusted effective sample size, evidence coverage, lower confidence bounds, improvement probability and recent degradation rather than declaring a model calibrated from training fit.

Statistical audit & measurement

Audit forecast ensemble lineage integrity

Audit whether a claimed forecast ensemble is a complete, independently sealed and point-in-time evidence set rather than duplicated consensus, then score only mature uncontaminated outcomes.

Forecasting & survival

See every tool in Analytics assurance & orchestration →

Ready to See Your Engineering work clearly?

Request a free demo