Methodology
Project Duration Risk Planner methodology
Educational only: Business decision support, not accounting, tax or legal advice.
Privacy: Calculations run locally; Margin101 does not receive your commercial inputs.
Update policy: Reviewed when formulas or official dependencies change.
Scope: Market-neutral small-business planning using your own assumptions.
1. Formulas and units
riskAdjustedContribution = revenue โ probability-weighted delivery costWhere
- riskAdjustedContribution
- Risk Adjusted Contribution (currency units/project)Source: Calculated output
bestCaseContribution = revenue โ best months ร monthly costWhere
- bestCaseMonths
- Best-case months (months/project)Source: User assumption
- bestCaseContribution
- Best Case Contribution (currency units/project)Source: Calculated output
baseCaseContribution = revenue โ base months ร monthly costWhere
- baseCaseMonths
- Base-case months (months/project)Source: User assumption
- baseCaseContribution
- Base Case Contribution (currency units/project)Source: Calculated output
worstCaseContribution = revenue โ worst months ร monthly costWhere
- worstCaseMonths
- Worst-case months (months/project)Source: User assumption
- worstCaseContribution
- Worst Case Contribution (currency units/project)Source: Calculated output
expectedDurationMonths = ฮฃ(case months ร probability)Where
- expectedDurationMonths
- Expected Duration Months (months)Source: Calculated output
expectedDeliveryCost = expected duration ร monthly delivery costWhere
- monthlyDeliveryCost
- Monthly delivery cost (currency units/month)Source: Business record
- expectedDeliveryCost
- Expected Delivery Cost (currency units/project)Source: Calculated output
riskAdjustedMargin = risk-adjusted contribution รท contract revenueWhere
- contractRevenue
- Contract revenue (currency units/project)Source: Business record
- riskAdjustedContribution
- Risk Adjusted Contribution (currency units/project)Source: Calculated output
- riskAdjustedMargin
- Risk Adjusted Margin (decimal rate)Source: Calculated output
bufferedRevenue = contract revenue ร (1 + price buffer)Where
- contractRevenue
- Contract revenue (currency units/project)Source: Business record
- priceBufferRate
- Price buffer (proportion of expected delivery cost added as risk buffer)Source: User decision
- bufferedRevenue
- Buffered Revenue (currency units/project)Source: Calculated output
bufferedWorstCaseContribution = buffered revenue โ worst-case costWhere
- worstCaseContribution
- Worst Case Contribution (currency units/project)Source: Calculated output
- bufferedRevenue
- Buffered Revenue (currency units/project)Source: Calculated output
- bufferedWorstCaseContribution
- Buffered Worst Case Contribution (currency units/project)Source: Calculated output
downsideCoverage = buffered worst contribution โ unbuffered worst contributionWhere
- downsideCoverage
- Downside Coverage (currency units/project)Source: Calculated output
Money inputs and outputs use the currency selected in the scenario without changing the canonical methodology. Rates, margins, utilisation and buffers are entered as percentages and converted to decimal values for calculation.
2. Worked example
Input assumptions
The worked rows are rendered from the registered engine and visible default fixture.
- Contract revenue
- 100,000 currency units/project
- Monthly delivery cost
- 15,000 currency units/month
- Best-case months
- 3 months/project
- Best-case probability
- 0.2 decimal probability
- Base-case months
- 4 months/project
- Base-case probability
- 0.5 decimal probability
- Worst-case months
- 6 months/project
- Worst-case probability
- 0.3 decimal probability
- Price buffer
- 0.1 proportion of expected delivery cost added as risk buffer
Calculation and outputs
riskAdjustedContribution
riskAdjustedContribution = revenue โ probability-weighted delivery cost- Contract revenue
- 100,000 currency units/project
- Monthly delivery cost
- 15,000 currency units/month
- Best-case probability
- 0.2 decimal probability
- Base-case probability
- 0.5 decimal probability
- Worst-case probability
- 0.3 decimal probability
- expectedDeliveryCost
- 66,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
Engine result: 34,000
bestCaseContribution
bestCaseContribution = revenue โ best months ร monthly cost- Contract revenue
- 100,000 currency units/project
- Monthly delivery cost
- 15,000 currency units/month
- Best-case months
- 3 months/project
- Best-case probability
- 0.2 decimal probability
- Base-case months
- 4 months/project
- Worst-case months
- 6 months/project
- expectedDurationMonths
- 4.4 declared output unit
- expectedDeliveryCost
- 66,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
Engine result: 55,000
baseCaseContribution
baseCaseContribution = revenue โ base months ร monthly cost- Contract revenue
- 100,000 currency units/project
- Monthly delivery cost
- 15,000 currency units/month
- Best-case months
- 3 months/project
- Base-case months
- 4 months/project
- Base-case probability
- 0.5 decimal probability
- Worst-case months
- 6 months/project
- expectedDurationMonths
- 4.4 declared output unit
- expectedDeliveryCost
- 66,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
Engine result: 40,000
worstCaseContribution
worstCaseContribution = revenue โ worst months ร monthly cost- Contract revenue
- 100,000 currency units/project
- Monthly delivery cost
- 15,000 currency units/month
- Best-case months
- 3 months/project
- Base-case months
- 4 months/project
- Worst-case months
- 6 months/project
- Worst-case probability
- 0.3 decimal probability
- expectedDurationMonths
- 4.4 declared output unit
- expectedDeliveryCost
- 66,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
- bufferedWorstCaseContribution
- 20,000 declared output unit
Engine result: 10,000
expectedDurationMonths
expectedDurationMonths = ฮฃ(case months ร probability)- Best-case months
- 3 months/project
- Best-case probability
- 0.2 decimal probability
- Base-case months
- 4 months/project
- Base-case probability
- 0.5 decimal probability
- Worst-case months
- 6 months/project
- Worst-case probability
- 0.3 decimal probability
- bestCaseContribution
- 55,000 declared output unit
- baseCaseContribution
- 40,000 declared output unit
- worstCaseContribution
- 10,000 declared output unit
- bufferedWorstCaseContribution
- 20,000 declared output unit
Engine result: 4.4
expectedDeliveryCost
expectedDeliveryCost = expected duration ร monthly delivery cost- Monthly delivery cost
- 15,000 currency units/month
- expectedDurationMonths
- 4.4 declared output unit
Engine result: 66,000
riskAdjustedMargin
riskAdjustedMargin = risk-adjusted contribution รท contract revenue- Contract revenue
- 100,000 currency units/project
- riskAdjustedContribution
- 34,000 declared output unit
- bestCaseContribution
- 55,000 declared output unit
- baseCaseContribution
- 40,000 declared output unit
- worstCaseContribution
- 10,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
- bufferedWorstCaseContribution
- 20,000 declared output unit
Engine result: 0.34
bufferedRevenue
bufferedRevenue = contract revenue ร (1 + price buffer)- Contract revenue
- 100,000 currency units/project
- Price buffer
- 0.1 proportion of expected delivery cost added as risk buffer
Engine result: 110,000
bufferedWorstCaseContribution
bufferedWorstCaseContribution = buffered revenue โ worst-case cost- Contract revenue
- 100,000 currency units/project
- Monthly delivery cost
- 15,000 currency units/month
- Best-case months
- 3 months/project
- Best-case probability
- 0.2 decimal probability
- Base-case months
- 4 months/project
- Base-case probability
- 0.5 decimal probability
- Worst-case months
- 6 months/project
- Worst-case probability
- 0.3 decimal probability
- bestCaseContribution
- 55,000 declared output unit
- baseCaseContribution
- 40,000 declared output unit
- worstCaseContribution
- 10,000 declared output unit
- expectedDeliveryCost
- 66,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
Engine result: 20,000
downsideCoverage
downsideCoverage = buffered worst contribution โ unbuffered worst contribution- Worst-case months
- 6 months/project
- Worst-case probability
- 0.3 decimal probability
- riskAdjustedContribution
- 34,000 declared output unit
- bestCaseContribution
- 55,000 declared output unit
- baseCaseContribution
- 40,000 declared output unit
- worstCaseContribution
- 10,000 declared output unit
- bufferedRevenue
- 110,000 declared output unit
- bufferedWorstCaseContribution
- 20,000 declared output unit
Engine result: 10,000
Example
The worked rows are rendered from the registered engine and visible default fixture.
- Best Case Contribution
- 55,000 currency units/project
- Base Case Contribution
- 40,000 currency units/project
- Worst Case Contribution
- 10,000 currency units/project
- Expected Duration Months
- 4.4 months
- Expected Delivery Cost
- 66,000 currency units/project
- Risk Adjusted Contribution
- 34,000 currency units/project
- Risk Adjusted Margin
- 34%
- Buffered Revenue
- 110,000 currency units/project
- Buffered Worst Case Contribution
- 20,000 currency units/project
- Downside Coverage
- 10,000 currency units/project
The exact engine-derived outputs are shown in the labelled rows below.
Interpretation
The project duration risk result uses only the entered commercial assumptions.
Scenario study: project decision boundary
Separate labour, capacity and cash effects of delay
Only costs caused by the delay belong in the incremental scenario. Test direct labour, displaced capacity and receipt timing separately before combining them.
Input basis
- Fictional delay labour: 16 extra hours at 80 CU per hour.
- The same project baseline, currency, period and indirect-tax basis remains in force.
- No displaced contribution or funding effect is added without separate evidence.
| Layer | Intermediate calculation / evidence | Result or stop |
|---|---|---|
| Incremental labour | 16 ร 80 | 1,280 CU |
| Capacity displacement | Named feasible alternative ร evidenced contribution | Unresolved until evidenced |
| Cash timing | Dated outflows โ dated receipts | Hand off to cash timeline |
Interpretation
The direct labour effect is 1,280 CU. It is not the full delay cost unless capacity and cash effects are separately supported and not counted elsewhere.
Boundaries and next step
- A longer calendar period does not make every overhead cost incremental.
- Do not assume every delay loses another job or that every invoice is paid on time.
Continue with Project Duration Risk Planner, Progress Billing Cash Planner or project quote-risk guide.
3. Validation and boundary checks
- Inputs must be finite and remain within the visible boundaries.
- Rates are decimal values and all monetary inputs use one consistent currency and period.
- Whole operational capacity is rounded only where the engine explicitly applies floor or ceiling.
- Contract revenue minimum
contractRevenue โฅ 0 currency units/projectโ A lower value is rejected before calculation.- Contract revenue maximum
contractRevenue โค 10,000,000 currency units/projectโ A higher value is rejected before calculation.- Monthly delivery cost minimum
monthlyDeliveryCost โฅ 0 currency units/monthโ A lower value is rejected before calculation.- Monthly delivery cost maximum
monthlyDeliveryCost โค 10,000,000 currency units/monthโ A higher value is rejected before calculation.- Best-case months minimum
bestCaseMonths โฅ 0 months/projectโ A lower value is rejected before calculation.- Best-case months maximum
bestCaseMonths โค 10,000,000 months/projectโ A higher value is rejected before calculation.- Best-case probability minimum
bestCaseProbability โฅ 0 decimal probabilityโ A lower value is rejected before calculation.- Best-case probability maximum
bestCaseProbability โค 0.99 decimal probabilityโ A higher value is rejected before calculation.- Base-case months minimum
baseCaseMonths โฅ 0 months/projectโ A lower value is rejected before calculation.- Base-case months maximum
baseCaseMonths โค 10,000,000 months/projectโ A higher value is rejected before calculation.- Base-case probability minimum
baseCaseProbability โฅ 0 decimal probabilityโ A lower value is rejected before calculation.- Base-case probability maximum
baseCaseProbability โค 0.99 decimal probabilityโ A higher value is rejected before calculation.- Worst-case months minimum
worstCaseMonths โฅ 0 months/projectโ A lower value is rejected before calculation.- Worst-case months maximum
worstCaseMonths โค 10,000,000 months/projectโ A higher value is rejected before calculation.- Worst-case probability minimum
worstCaseProbability โฅ 0 decimal probabilityโ A lower value is rejected before calculation.- Worst-case probability maximum
worstCaseProbability โค 0.99 decimal probabilityโ A higher value is rejected before calculation.- Price buffer minimum
priceBufferRate โฅ 0 proportion of expected delivery cost added as risk bufferโ A lower value is rejected before calculation.- Price buffer maximum
priceBufferRate โค 0.99 proportion of expected delivery cost added as risk bufferโ A higher value is rejected before calculation.
4. Assumptions and source classification
- All costs, prices, hours, probabilities and volumes are user-supplied; no market benchmark is inferred.
- Tax is outside these neutral commercial comparisons.
- The engine retains full precision; formatting never feeds back into calculation.
This planner has no current policy-data dependency. Its commercial assumptions are user supplied. Registered family-level regression suites exercise the shared business-logic engine and worked-result reconciliation.
5. Limitations
- The model does not predict demand, delivery performance, contract enforceability or customer behaviour.
- It does not replace accounting, tax, legal or financial advice.
This is educational decision support, not tax, accounting, legal or financial advice. Check the treatment of your actual transactions under the rules that apply to your business and seek qualified advice where appropriate.
6. Update and evidence policy
Registered family-level suites test formula invariants and example reconciliation; the release ledger records that coverage without claiming a separate oracle for every line of public copy. There is no official threshold or benchmark to refresh for this planner. Commercial inputs remain user-supplied because they vary by business and contract.
Change history
- : Initial public release of the planner and methodology after pre-launch calculation, content, source and interaction review.
Related reading
Guides to interpret the decision and its assumptions.
- How to Price a Project Quote With Scope Risk
Map scope uncertainty, cost the agreed delivery boundary and choose a commercial response before calculating the exact quote.
Read guide