The reforecasts got close to the actual by the end, but mostly because more months had closed, not because the forecasting got better. Revenue was forecast too high in every version until the last one.

The script ran cleanly. It confirmed that every closed month matches the P&L actual and that the Budget version matches the P&L budget.

**Revenue** (FY actual $11,238K):

| Version | FY forecast | Variance | MAPE | Bias |
| --- | --- | --- | --- | --- |
| Budget | $11,600K | $362K, or 3.2% | 3.7% | 3.2% |
| 3+9 | $11,415K | $177K, or 1.6% | 3.3% | 2.1% |
| 6+6 | $11,396K | $158K, or 1.4% | 2.9% | 2.8% |
| 9+3 | $11,241K | $3K, or 0.02% | 0.63% | 0.10% |

MAPE is the typical size of a monthly miss. Bias is whether the misses leaned high (positive) or low (negative) overall.

- **Revenue was forecast too high in every version until 9+3.** The typical monthly miss stayed between 3.7% and 2.9% through 6+6. The full-year gap shrank mainly because closed months, which carry the actual, replaced forecast months.
- **9+3 was the most accurate version for both revenue and operating expenses.** But it had only 3 months left to forecast, so its accuracy reflects that short horizon as much as skill.
- **July missed twice.** It was the worst month for both Budget ($132K, or 15.0%) and 3+9 ($80K, or 9.1%). That points to a July assumption that never got corrected.
- **6+6 had one big miss in September:** $151K, or 15.0%, far above its 2.9% MAPE. That's a single miss, not a trend.
- **The operating expenses Budget looks exact for the year but wasn't.** It was off by only ($1K) in total, yet its typical monthly miss was 4.1%. Large misses cancelled out, the worst in May at $32K, or 15.7%.

For FY2026, I'd anchor on 9+3 for the run-rate but check the revenue build for the same upward bias. The data doesn't explain why July and September missed; the forecast assumptions for those months would.

Files are in `output/`:
- accuracy-note.md
- accuracy.json