Last 12 months · ending Apr 30, 2026

Predictions

Move the per-channel handles. The spider updates the proposed allocation; the horizon cards and 12-month forecast roll up the math live. Hit 'Reset to optimal' to snap to the Lagrangian-allocator solution at your current total.

Monthly budget

301K

current spend

12-mo revenue · projected

8M

no change

Blended ROAS · 12 mo

2.22×

Avg marginal ROAS

1.58×

across active channels

Channels active

10

0 locked

spider · current vs proposed

Drag the per-channel handles on the right. The radar updates the proposed polygon.

CurrentProposed
  • Meta

    Meta

    $60,000

    Predicted 97.4KMarginal 0.77×
  • Google

    Google Search

    $45,000

    Predicted 93.9KMarginal 1.03×
  • YouTube

    YouTube

    $25,000

    Predicted 64.6KMarginal 1.43×
  • Google

    Google Display

    $12,000

    Predicted 22.3KMarginal 1.44×
  • LinkedIn

    LinkedIn

    $80,000

    Predicted 145.9KMarginal 0.88×
  • TikTok

    TikTok

    $12,000

    Predicted 20KMarginal 0.99×
  • Reddit

    Reddit

    $7,000

    Predicted 15.7KMarginal 1.39×
  • Email

    $5,000

    Predicted 32.3KMarginal 4.32×
  • Events

    $25,000

    Predicted 85.2KMarginal 1.71×
  • Partnerships

    $30,000

    Predicted 90.8KMarginal 1.87×

cumulative revenue at horizon

How the next year plays out at this allocation.

1 month

668.1K

42 deals · 2.22× blended

3 months

2M

125 deals · 2.22× blended

6 months

4M

251 deals · 2.22× blended

12 months

8M

501 deals · 2.22× blended

forecast · 24 months

Twelve months historical · twelve months forecast.

Solid line · forecast at proposed allocation. Dashed · what would happen if you kept current spend.

response curves · adstock ⊕ hill

Where each channel bends.

α (max revenue)

260K

K (half-saturation)

64K/mo

γ (steepness)

1.10

λ (adstock decay)

0.82

Marker shows the channel's current monthly spend on the fitted curve.

how this works

Real math, on seeded data.

Adstock.Geometric carry-over. When you raise a channel's spend, the new revenue arrives over a few months — quickly for short-decay channels (Email · λ=0.45), slowly for long-decay ones (Events · λ=0.88). The horizon cards apply this ramp explicitly so the 1-month number isn't the same as the 12-month one.

Hill saturation.R = α · S^γ / (K^γ + S^γ). Three numbers describe each channel's curve. α is the ceiling. K is the spend at half-saturation. γ is how sharply the curve bends.

Allocator."Reset to optimal" runs Lagrangian bisection on μ — at the optimum, every active channel hits the same marginal ROAS. The bisection converges in under 50ms. Manual handles let you override any channel.

Demo data