FP&A stands for financial planning and analysis. It is the budgets, forecasts and reports a company is run on. FPABench measures how fast FP&A, EPM and planning software loads, recalculates and queries a realistic P&L model.

Status: early draft, version 0.6-draft. The model is here, and so is a first draft of the data, the tests and the method. The systems and the results are not. Everything can still change.

Why

Planning tools advertise "billions of cells". Nobody can check that. FPABench gives a public model, public data and public scripts, so anyone can run any system and see the numbers for themselves.

Planning is more than queries. A planner changes one number, and everything that depends on it must be recalculated before the next report. Database benchmarks such as TPC-H and ClickBench do not time that. FPABench times the whole loop. That means loading data, changing inputs, reading results and changing the model itself.

FPABench follows the example of ClickBench.

Goals

The model

A consumer goods company sells food, drinks, home care and personal care products in six countries with four currencies. The model plans and reports its P&L per customer, product and month, from gross sales down to contribution margin and EBIT, in each country's currency and in euros. Actual, budget, two forecasts and a what-if sit side by side.

The model is written in FML, the Financial Modeling Language. FML is a small language for planning models. The model description explains the business, the calculation and how to read FML.

The repo

PathWhat it holds
model/The model in FML, and the members of its fixed dimensions
data/The data generator. The datasets are generated or downloaded, never stored here.
tests/The tests, their expected results, and the method that times and checks them
website/The website. node website/build.mjs builds it from these docs and the model into website/dist/.
scripts/Tools for the model, such as the FML reader
CHANGELOG.mdEvery change to the model, the data, the tests or the method

Systems get their own folder as they arrive.

Who made this

FPABench is made by Farseer. Farseer's own engine, RAMA, will be one of the entries. That is a good reason to check our work. Everything needed to do so will be in this repo.

Licence

Code in this repo is licensed under the Apache License 2.0. The model, the data and the documentation are licensed under CC BY 4.0.