research: test `FinancialForecastModel` on a real monthly revenue series

Open
#350 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
python

Research direction

Start with philanthropy/models/_forecast.py to see how FinancialForecastModel produces forecasts, then check docs/results/ for the write-up format. Pick a licensed monthly revenue series and load it from a local file, with no download code. Run a rolling-origin evaluation over the last 12 months comparing MAE against a 12-month mean and last-year-same-month. Done means the result is recorded in the docstring and Results pages, whether or not the model wins.

Written by the indexing model from the issue text.

Description

enhancement help wanted roadmap
Goal

Find out whether FinancialForecastModel beats a 12-month moving average on real fundraising revenue, since it has only been checked on synthetic data.

Acceptance criteria
  • Pick a public monthly series with clear licence terms and read it from a local file; no download code in the package. Say in the write-up how close it is to an organisation's own gift revenue: 360Giving GrantNav, for example, is grants awarded by funders, so summed by month it is a sector series, not one fundraiser's income. One organisation's own series is better if a licence allows it.
  • Rolling-origin evaluation: forecast each of the last 12 months from the data before it; report MAE for the model, a 12-month mean, and last-year-same-month. fit(X, y) takes a per-period feature matrix and predict_revenue_forecast(X, horizon) rolls forward from the context in X (see the docstrings in _forecast.py); state the X you built.
  • Record the result. If the model loses, say so in its docstring and the Results pages rather than leaving the claim untested. It is Tier 3 in docs/reference/index.md, so a losing result can also update that row's "Why" text.
Scope

Evaluation only. No new dependency: no statsmodels, no torch (see AGENTS.md).

Where to start
  • philanthropy/models/_forecast.py
  • docs/results/ for how results are written up
Dependencies
  • None

Phase order is a release plan, not a rule against picking up independent work early. Comment on this issue before you start so two people don't build the same thing.

Dominant language
Python
Stars
11
Forks
23
Avg merge
15h 13m
Merged PRs (30d)
30

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from PhilanthroPy-Project/PhilanthroPy

All issues in PhilanthroPy-Project/PhilanthroPy

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.