Revenue forecasting
Merchant Revenue Forecasting
Benchmarking forecasting methods across a heterogeneous merchant portfolio
Self-directed portfolio project using synthetic data. Merchant-level revenue forecasting with model benchmarking, forecast-error analysis, and FP&A / revenue-planning decision support.
View PDF View GitHub Back to selected work
Business Question
How can Finance improve monthly merchant revenue forecasting across a diverse merchant portfolio while balancing accuracy, stability, and interpretability?
Context / Data
The fixture includes 50 synthetic merchants, 60 months of history (2020–2024), and 3,000 merchant-months. Evaluation used MAPE, RMSE, and MAE on a common 12-month holdout.
Synthetic data designed to mimic FP&A challenges, not represent a real portfolio. Results may not generalize to real merchant businesses. No production deployment is claimed.
Approach
Nine methods were benchmarked on the same holdout: Naive, Seasonal Naive, SMA(3), WMA, SES, Holt, Holt-Winters, SARIMA, and Linear Regression. The review looks at both average forecast error and the distribution of merchant-level error, rather than relying only on a portfolio-wide score.
Key Findings
Holt achieved the lowest mean MAPE at 8.64%, versus 12.47% for the Seasonal Naive baseline — about a 31% relative reduction in mean MAPE. More complex models did not automatically outperform simpler, interpretable approaches.
| Model | Mean MAPE |
|---|---|
| Holt | 8.64% |
| SES | 9.08% |
| SMA(3) | 9.34% |
| Holt-Winters | 9.54% |
| WMA | 9.60% |
| Linear Regression | 9.66% |
| Naive | 11.68% |
| SARIMA | 11.81% |
| Seasonal Naive | 12.47% |
Portfolio averages can hide merchant-level variation. SARIMA (~11.81% mean MAPE) was not among the strongest average performers in this benchmark. This does not mean Holt will always be best for every merchant or future period.
Financial / Business Implications
More reliable merchant-level forecasts can improve revenue planning. Forecast-error monitoring can help Finance distinguish predictable merchants from higher-uncertainty merchants. Model benchmarking provides a disciplined baseline before introducing additional complexity. Forecast performance should be refreshed as new actuals arrive. Different merchant behaviors may justify different models rather than forcing one methodology across every merchant.
Recommendation
- Use a common holdout and more than one error metric before preferring a more complex forecasting method.
- Review both average error and the merchant-level error distribution when setting forecast governance.
- Identify merchants with greater uncertainty rather than relying solely on one portfolio-wide score.
- Refresh model rankings as new observations arrive; rankings can change.
Visuals
Average MAPE by method, merchant-level error distributions, and an illustrative merchant path (M001) are in the Merchant Revenue Forecasting PDF.
Technical Methodology
Tools used: Python, pandas, statsmodels, scikit-learn, and matplotlib. The analysis does not claim causal interpretation of drivers or interventions. External drivers may improve forecasts but were not the focus of this benchmark.
GitHub Repository
Methodology and code: github.com/ecastillo081/Merchant_Revenue_Forecasting.