Optimize reserve follow on allocation

Solve a two-stage follow-on capital problem: choose how much reserve to hold now, then choose at most one funding tier per company conditional only on the signal partition genuinely observable later, with coherent scenario value, opportunity cost, CVaR, a reserve Pareto frontier, value of available information, and exact-or-disclosed supported-policy search.

What it's for

Lets startup investors and tech CEOs price reserve strategy and contingent follow-on choices without granting the model future knowledge or hiding downside and opportunity cost inside a static company score.

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
candidate_reserve_amounts array of number ≥ 1 item Evidence Yes
companies array of objects (1 field) ≥ 1 item Evidence Yes
funding_options array of objects (5 fields) ≥ 1 item Evidence Yes
max_detail_rows integer ≥ 1, ≤ 500 Numerical control Optional
maximum_cvar_loss number ≥ 0 Your calibration Optional
maximum_exact_states integer ≥ 2, ≤ 1000000 Numerical control Optional
minimum_expected_net_value number Your calibration Optional
reserve_opportunity_cost_rate number ≥ 0 Your calibration Yes
risk_aversion number ≥ 0 Your calibration Optional
scenarios array of objects (3 fields) ≥ 2 items Evidence Yes
tail_probability number > 0, ≤ 0.5 Your calibration Optional

Each funding_options record

Field Type Required
company_id string (non-empty) Yes
eligible_scenarios array of boolean (≥ 2 items) Yes
follow_on_amount number (> 0) Yes
gross_terminal_value_scenarios array of number (≥ 2 items) Yes
id string (non-empty) Yes
Example input
{
  "candidate_reserve_amounts": [
    5
  ],
  "companies": [
    {
      "id": "company-a"
    },
    {
      "id": "company-b"
    }
  ],
  "funding_options": [
    {
      "company_id": "company-a",
      "eligible_scenarios": [
        true,
        true
      ],
      "follow_on_amount": 5,
      "gross_terminal_value_scenarios": [
        12,
        1
      ],
      "id": "a-follow-on"
    },
    {
      "company_id": "company-b",
      "eligible_scenarios": [
        true,
        true
      ],
      "follow_on_amount": 5,
      "gross_terminal_value_scenarios": [
        8,
        6
      ],
      "id": "b-follow-on"
    }
  ],
  "maximum_cvar_loss": 0,
  "reserve_opportunity_cost_rate": 0,
  "scenarios": [
    {

Truncated for display — the full payload is 56 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
{
  "company_allocation_diagnostics": [
    {
      "company_id": "company-a",
      "expected_follow_on_spend": 2.5,
      "expected_gross_terminal_value": 6,
      "probability_funded": 0.5
    },
    {
      "company_id": "company-b",
      "expected_follow_on_spend": 2.5,
      "expected_gross_terminal_value": 3,
      "probability_funded": 0.5
    }
  ],
  "decision": "allocate_signal_contingent_follow_on_reserve",
  "guardrails": [
    "Every follow-on policy is constant inside the submitted signal partition; outcomes unavailable at the decision time cannot create a clairvoyant allocation.",
    "Gross terminal values, eligibility, dilution, ownership effects, opportunity cost, and scenario probabilities require point-in-time finance and investment-committee governance.",
    "Heuristic mode returns a deterministic supported policy and never claims global optimality or a complete Pareto frontier.",
    "Company allocation is a portfolio capital decision under submitted economics, not a founder, employee, nationality, integrity, or misconduct score and never authorizes an investment automatically."
  ],
  "method": "two_stage_signal_partition_follow_on_reserve_optimization_v1",
  "reserve_pareto_frontier": [
    {
      "clears_gates": true,
      "cvar_loss": 0,
      "expected_net_value": 0,
      "reserve_amount": 0,
      "risk_adjusted_value": 0,
      "value_of_available_signal": 0
    },
    {
      "clears_gates": true,
      "cvar_loss": -1,
      "expected_net_value": 4,
      "reserve_amount": 5,
      "risk_adjusted_value": 4,
      "value_of_available_signal": 2
    }
  ],
  "scenario_diagnostics": [
    {
      "follow_on_spend": 5,

Truncated for display — the full payload is 114 lines.

How it works

Constrained optimization — Pick the best feasible option under real limits — budget, headcount, dependencies, capacity — rather than ranking a list and hoping it fits.

  1. 1 Freeze companies, executable funding tiers, gross terminal values, eligibility, coherent scenarios, and the signal partition observable before each follow-on decision; scenarios inside one signal cell must share one policy.
  2. 2 For every candidate reserve, solve a conditional multiple-choice capital allocation inside each signal cell, subtract follow-on spend and the ex-ante reserve opportunity cost, and propagate that non-clairvoyant policy back through all joint scenarios.
  3. 3 Compare reserve sizes on expected net value, CVaR loss, risk-adjusted value, and a supported Pareto frontier; calculate the value of the submitted signal against one blind policy and disclose whether enumeration certifies the optimum or a deterministic heuristic only supports it.

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

  • Objectives use commensurable locally governed value units, constraints reflect real feasibility, and uncertainty covers plausible adverse inputs.
  • Signal release truly precedes allocation; funding tiers are executable and mutually exclusive per company; gross value includes dilution and terminal-value semantics consistently; eligibility, probabilities, shared shocks, reserve cost, investment horizon, and constraints are complete and point-in-time valid.
  • The recommendation is optimal only for its stated objective, feasible set, evidence, and solver guarantee; it is not a universal management optimum.
  • The policy may condition only on the declared pre-action signal; it never authorizes an investment, and company allocation is portfolio finance under submitted economics—not a founder, employee, nationality, loyalty, integrity, or misconduct ranking.

Minimum evidence

  • companies: at least 1 rows/items
  • funding_options: at least 1 rows/items
  • scenarios: at least 2 rows/items
  • candidate_reserve_amounts: at least 1 rows/items
  • reserve_opportunity_cost_rate: required and organization-defined

How to validate it

Backtest the chosen action against simple feasible baselines on held-out scenarios, sweep costs/constraints/risk tolerance, and require constraint feasibility under adverse inputs.

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

  • investment-committee scenario tree joining dilution-adjusted terminal value, ownership rights, milestone and financing signals, shared market shocks, eligibility, timing and reserve carry cost without future leakage
  • fund/company perimeter, currency/horizon, valuation/dilution semantics, eligible tiers, signal release lineage, scenario law, reserve candidates/cost, value/CVaR gates, risk aversion, solver boundary, conflicts and human 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": "solve a twostage followon capital problem" }
  → finds "optimize_reserve_follow_on_allocation"

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

gitrevio_capability_run
  { "capability_id": "optimize_reserve_follow_on_allocation", "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

Estimate budget contingency reserve

Size an engineering or investment contingency reserve from one coherent joint cost distribution, stress represented scenario probabilities inside a governed total-variation radius, preserve natural offsets, and exactly reconcile robust tail overrun to aggregate cost items.

Statistical audit & measurement

Estimate estimate at completion distribution

Turn bottom-up component actuals and locally calibrated remaining-cost p50/p90 estimates into a correlated Gaussian-copula lognormal estimate-at-completion distribution with antithetic simulation, budget-breach probability, CVaR, correlation uplift, finite-draw error, and exactly reconciled component tail contributions.

Forecasting & survival

Audit commercial technical commitment integrity

Audit signed commercial promises against explicitly allocated technical scope, dependency order, funded capacity, acceptance criteria and evidence; expose orphan scope, double allocation, cycles, late plans and maximum contractual penalty without interpreting legal rights from engineering activity.

Constrained optimization

Audit decision execution fidelity

Audit whether approved decisions actually became verified implementation at the promised aggregate-unit and component grain, with whole-unit bootstrap uncertainty and simultaneous gates for fidelity, overdue scope, unverifiable evidence, exceptions and critical gaps.

Statistical audit & measurement

Audit KPI threshold bunching

Detect a post-target excess concentration immediately above a governed KPI threshold: compare within-unit pre/post local mass and above-versus-below mirror asymmetry, bootstrap whole units, report density bins and a smoothed log-density jump, and explicitly refuse to equate bunching with individual gaming or intent.

Statistical audit & measurement

Audit release risk prediction integrity

Audit a complete eligible-change release-risk cohort for point-in-time prediction lineage, exact change-to-deployment linkage, mature mutually exclusive outcomes, selective labels, score-triggered intervention contamination, calibration and false alarms before the score influences a release decision.

Forecasting & survival

See every tool in Delivery forecasting & commitments →

Ready to See Your Engineering work clearly?

Request a free demo