Why Trailing Averages Fail for a Self-Employed Earnings Spreadsheet
The intuition behind using trailing income is reasonable: you take Q1–Q3, divide by 3, project Q4. The problem is that self-employed income doesn't mean-revert on a quarterly cadence — it lands in lumps when contracts close. A $45K SOW at 60% probability of closing in Q4 changes your expected income by $27K. A trailing average will miss that entirely, or worse, it'll include a one-time project from Q2 that has zero chance of recurring.
The second failure mode is symmetric. If you had a strong Q2 ($52K) and a weak Q3 ($28K), the average is $40K. But if you have two contracts actively in negotiation totaling $60K at 70% close probability, your pipeline-based expected value is $42K — and the $40K trailing figure will slightly undershoot. Neither number is catastrophically wrong, but the pipeline model is built from forward-looking information you already have.
A trailing average treats your income as if you have no information about the future. You almost always do.
Building the Expected Earnings Spreadsheet Structure
Three tabs, clearly separated:
Pipeline — one row per potential engagement. Columns: client name, contract value, close probability (%), expected quarter of payment, and computed expected value (=C2*D2). Total expected value per quarter via =SUMIFS(Pipeline!E:E, Pipeline!F:F, "Q3 2026").
Cash — confirmed income only. Invoices sent, payments received, date cleared. This feeds your safe harbor calculation. Total confirmed YTD: =SUMIFS('Cash'!C:C, 'Cash'!B:B, ">=" & Assumptions!$B$3, 'Cash'!B:B, "<=" & Assumptions!$C$3).
Tax — quarterly estimated payment logic. The formula that matters:
=MAX(
(('Pipeline'!B42 + 'Cash'!B30) * Assumptions!$D$2) / 4,
('Cash'!B30 * 1.1) / 4
)
Where Assumptions!$D$2 is your blended effective rate (SE tax at 15.3% on the first $168,600 of net earnings as of 2025, plus your marginal income tax rate — combined typically 36–40% for income between $100K–$200K). The * 1.1 branch is the 110% safe harbor threshold that applies once prior-year AGI crosses $150,000, per IRS Schedule SE and Form 1040-ES instructions.
Scenario Table on the Pipeline Tab
A single expected value per quarter gives you a point estimate — the same conceptual mistake as the trailing average, just built from better inputs. The number that matters for tax planning isn't just the expected value; it's the range of plausible outcomes and where your tax payment falls within that range.
Add a scenario block directly below your pipeline summary:
| Scenario | Pipeline Adjustment | Expected Q Income | Est. Quarterly Tax |
|---|---|---|---|
| Bear (close rate −20%) | $46,336 | $46,336 | $17,408 |
| Base (modeled close rates) | $57,920 | $57,920 | $21,751 |
| Bull (close rate +15%) | $66,608 | $66,608 | $25,003 |
The bear case applies a uniform 20% haircut to every close probability — useful for quarters where your sales cycle is longer than usual or you have a major anchor client with an uncertain renewal. The bull case applies a 15% boost, appropriate when you have warm referrals or late-stage contracts that have been verbally confirmed.
Build it with named ranges so it recalculates automatically:
Bear expected value:
=SUMPRODUCT(Pipeline!C2:C20, MIN(Pipeline!D2:D20 * 0.8, 1), (Pipeline!F2:F20 = "Q3 2026") * 1)
Bull expected value:
=SUMPRODUCT(Pipeline!C2:C20, MIN(Pipeline!D2:D20 * 1.15, 1), (Pipeline!F2:F20 = "Q3 2026") * 1)
The MIN(..., 1) wrapper prevents any adjusted probability from exceeding 100%.
Now your tax tab has three payment options instead of one. The practical move: pay the base-case tax, hold the delta between base and bull in a separate savings line, and release it at year-end if the bull scenario materialized. The bear case defines your minimum safe harbor commitment.
Close Rate Benchmarks by Stage
The model is only as good as your probability inputs. From what I've seen across agency and consulting work, these are reasonable defaults:
| Stage | Description | Close Rate |
|---|---|---|
| Discovery call scheduled | No requirements shared | 20–30% |
| Proposal requested | Client asked for pricing | 45–55% |
| Proposal sent, no response | Under 2 weeks | 50–65% |
| Proposal sent, active discussion | Back-and-forth on scope | 70–85% |
| Verbal yes, contract not signed | They said yes, you're waiting | 70–85% |
| Contract out for signature | DocuSign sent | 90–95% |
That 70–85% range for verbal commitments will feel low the first time you look at it. It shouldn't. Contracts that have been "about to be signed" for three weeks are not 95% close probability — clients get budget freezes, procurement delays, internal reorgs. Discount them. Your tax payment doesn't care about their intentions.
Where This Gets Tedious
Updating close probabilities every week across 15 active prospects is where most people abandon the model and go back to guessing. The three-tab SUMIFS logic means any change to the Pipeline tab cascades correctly to Cash and Tax, but you still have to open the sheet and make the updates. ModelMonkey can recalculate the entire pipeline and regenerate the scenario table from a chat message — you describe what changed ("moved the Acme contract to 85%, pushed the Novo project to Q4"), and it rewrites the cells. Try ModelMonkey free for 14 days — it works in both Google Sheets and Excel.