Optimize multi period capital allocation

Allocate indivisible project funding schedules across every period budget while respecting dependencies, exclusions, uncertain terminal value, discounting, and a retain-capital baseline.

What it's for

Turns a one-year project list into a period-by-period capital plan that cannot spend next quarter's money today or force cash into negative-value work.

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
discount_rate_per_period number ≥ -0.99, ≤ 10 Your calibration Optional
exact_project_limit integer ≥ 1, ≤ 22 Your calibration Optional
max_detail_rows integer ≥ 1, ≤ 500 Numerical control Optional
period_budgets array of number ≥ 1 item Evidence Yes
projects array of objects (6 fields) Evidence Yes
scenario_probabilities array of number ≥ 2 items Evidence Yes

Each projects record

Field Type Required
dependency_ids array of string Optional
exclusion_ids array of string Optional
id string (non-empty) Yes
period_funding_requirements array of number (≥ 1 item) Yes
terminal_value_scenarios array of number (≥ 2 items) Yes
value_realization_period integer (≥ 0, ≤ 120) Yes
Example input
{
  "discount_rate_per_period": 0.02,
  "period_budgets": [
    180,
    110,
    50
  ],
  "projects": [
    {
      "id": "platform",
      "period_funding_requirements": [
        80,
        60,
        20
      ],
      "terminal_value_scenarios": [
        350,
        260,
        180
      ],
      "value_realization_period": 3
    },
    {
      "dependency_ids": [
        "platform"
      ],
      "id": "product",
      "period_funding_requirements": [
        100,
        50,
        30
      ],
      "terminal_value_scenarios": [
        500,
        320,
        160
      ],
      "value_realization_period": 3
    },
    {
      "id": "campaign",
      "period_funding_requirements": [
        100,
        100,

Truncated for display — the full payload is 60 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
{
  "assumptions": [
    "Each project is an indivisible approved funding schedule with incremental terminal value, aligned scenarios, dependency/exclusion feasibility, and no double-counted portfolio benefit.",
    "Budgets represent genuinely available period capital after reserves and commitments; unused capital remains available rather than being forced into a negative-value project.",
    "The greedy fallback is a scalable heuristic without an optimality certificate; large material plans require an approved integer solver or shortlisted exact rerun."
  ],
  "configuration": {
    "discount_rate_per_period": 0.02,
    "period_count": 3,
    "scenario_count": 3
  },
  "decision": "multi_period_capital_allocation_supported",
  "method": "dependency_aware_multi_period_capital_allocation_v1",
  "period_allocation": [
    {
      "allocated": 180,
      "budget": 180,
      "period": 1,
      "remaining": 0,
      "utilization": 1
    },
    {
      "allocated": 110,
      "budget": 110,
      "period": 2,
      "remaining": 0,
      "utilization": 1
    },
    {
      "allocated": 50,
      "budget": 50,
      "period": 3,
      "remaining": 0,
      "utilization": 1
    }
  ],
  "project_diagnostics": [
    {
      "dependency_ids": [
        "platform"
      ],
      "discounted_expected_net_value": 115.868,
      "discounted_expected_value": 290.2353,
      "discounted_funding_cost": 174.3673,

Truncated for display — the full payload is 87 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 approved indivisible funding schedules, aligned incremental terminal-value scenarios, realization timing, period capital available after reserves, dependencies, exclusions, and discount convention.
  2. 2 Discount funding and expected value consistently, test every feasible project subset through the exact boundary, and retain capital whenever no positive expected-net-value set clears every period constraint.
  3. 3 Above the exact boundary disclose the dependency-closure value-density heuristic and require an approved integer optimizer or shortlisted exact rerun before material allocation.

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.
  • Project values are incremental without portfolio double counting, schedules are indivisible and executable, budgets are genuinely available by period, and scenario columns represent the same futures.
  • The recommendation is optimal only for its stated objective, feasible set, evidence, and solver guarantee; it is not a universal management optimum.
  • Expected value is not guaranteed, the fallback is not optimality-certified, and accounting budget availability does not prove organizational execution capacity.

Minimum evidence

  • projects: required and organization-defined
  • period_budgets: at least 1 rows/items
  • scenario_probabilities: at least 2 rows/items

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

  • finance-attributed incremental terminal-value scenarios aligned across projects and realization periods
  • capital perimeter, reserves, funding availability, scenario probabilities, value/cost attribution, realization timing, discount rate, feasibility relations, and exact-solver promotion boundary

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": "allocate indivisible project funding schedules across" }
  → finds "optimize_multi_period_capital_allocation"

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

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

Optimize risk mitigation portfolio

Select a dependency- and exclusion-feasible mitigation portfolio that maximizes expected net loss avoided within budget and an optional residual-CVaR ceiling.

Constrained optimization

Rank initiatives evidence adjusted value

Rank initiatives using an explicit mixture of finance-approved value scenarios and a skeptical prior weighted by backtested evidence reliability, with downside and CVaR gates.

Forecasting & survival

Allocate budget with CVAR constraint

Maximize expected portfolio return while keeping probability-weighted loss CVaR below a finance-owned tail-risk ceiling across aligned joint scenarios.

Constrained optimization

Audit budget constraint binding

Audit whether a claimed budget constraint genuinely blocks value after dependency-feasible portfolio reallocation, separating current-plan inefficiency from scarcity with scenario CVaR and a discrete budget shadow price.

Constrained optimization

Audit financing term sheet integrity

Audit startup financing terms as exact share, price, proceeds and ownership identities: include pre-money option-pool increases and converting instruments in the pricing denominator, keep secondary purchases out of company cash and post-money share creation, reconcile primary issuance, post-money equity value and reported investor ownership, and retain evidence failures and impossible fees or secondary sales.

Statistical audit & measurement

Audit fundraising pipeline integrity

Audit a fundraising pipeline as point-in-time evidence rather than CRM theater: reconstruct monotone stage events, terminal status and primary proceeds, retain open opportunities as censored, reject forecasts made after resolution, detect duplicate active investor accounts, and gate the portfolio on mature-forecast support, Brier loss and calibration gap.

Forecasting & survival

See every tool in Investment & portfolio choice →

Ready to See Your Engineering work clearly?

Request a free demo