Version 0.6-draft. The data will change before version 1. Every change is listed in CHANGELOG.md.
This folder holds the generator of the FPABench datasets. The datasets are downloaded or generated, never stored in the repo.
The company is invented. It makes food, drinks, home care and personal care products and sells them in Croatia, Slovenia and Slovakia, which use the euro, and in Poland, Czechia and Hungary. Its customers are retail chains, wholesalers, web shops, independent shops, and hotels, restaurants and cafes.
Sizes
| 10m | 100m | 1b | 10b | |
|---|---|---|---|---|
| Model cells | 10.0 M | 99.7 M | about 990 M | about 10 B |
| Input cells | 0.6 M | 5.1 M | about 54 M | about 540 M |
| Country | 6 | 6 | 6 | 6 |
| Region | 12 | 30 | 54 | 102 |
| Customer Group | 48 | 102 | 204 | 408 |
| Customer | 115 | 3,350 | 26,000 | 186,000 |
| Category | 8 | 10 | 13 | 16 |
| Subcategory | 24 | 37 | 60 | 94 |
| Brand | 20 | 39 | 80 | 154 |
| Product Line | 120 | 289 | 757 | 1,823 |
| SKU | 1,000 | 3,000 | 10,000 | 30,000 |
| Material | 1,869 | 5,573 | 18,449 | 55,271 |
| Cost Center | 72 | 72 | 72 | 72 |
| Sales rows, actuals | 88,730 | 1,316,496 | 13,965,293 | 139,290,264 |
| Other actual rows | 191,729 | 507,979 | 1,580,087 | 4,652,065 |
| Plan rows typed, Budget | 19,344 | 44,753 | 120,562 | 346,938 |
| Plan rows typed, FC 3+9 | 10,179 | 18,393 | 41,437 | 111,022 |
| Plan rows typed, FC 6+6 | 6,949 | 12,710 | 28,675 | 76,830 |
| Plan rows typed, What-if | 6,924 | 12,675 | 28,759 | 76,968 |
Files
UTF-8 CSV with a header row, commas and a decimal point. Months are 2024-03. Codes are text and keep their leading zeros. schema.json gives every column's type, and manifest.json every file's SHA-256. An empty field means no value. Amounts are in the country's currency, except in columns that end in _eur.
| Folder | What it holds |
|---|---|
master/ | Members and their parents: countries, regions, customer groups, customers, the product hierarchy, SKUs with their attributes and weights, materials, cost centers |
actuals/ | Monthly totals from January 2023 to June 2026. sales.csv holds almost all rows, one per customer, material and month. The rest are rebates, growth bonus, trade fees, OPEX, marketing, list prices, standard costs, exchange rates and control totals. |
plan/ | One file per planner input, one row per typed cell, for Budget, FC 3+9, FC 6+6 and What-if in 2026. Plus the two version flags. |
picks.json | The picks of the tests: for each test, the cells it writes, the values, and how often it runs. picks.mjs makes them from the input cells, as the last step of generate.mjs. |
increments/ | Later loads for the tests: July 2026 actuals, a correction of March 2026 with its restated control totals, master data changes and a new price list. Corrections and new prices replace the old values. |
Every code in the actuals is in the master data, and every check of the model is empty or zero on this data.
Download
The datasets and RAMA's expected answers are public on Cloudflare R2, by generator version and size. Each folder holds the dataset as one archive, expected.json for runner/run.mjs --expected, and SHA256SUMS.
B=https://pub-508fd3a914ed495baefdd48005785ed9.r2.dev/data-0.6-draft/10m
curl -O $B/fpabench-10m.tar.gz -O $B/expected.json -O $B/SHA256SUMS
shasum -a 256 -c SHA256SUMS
tar -xzf fpabench-10m.tar.gz
runner/run.mjs --dataset 10m downloads and checks them itself. 10m, 100m and 1b are there so far. The same size and version always give the same bytes, so generate.mjs makes the same dataset too.
How it is built
Each customer is simulated month by month. It buys from a core assortment that changes slowly and from extras that change faster. Units follow the customer's size, the SKU's popularity, the season, the trend and promotions. Some purchases come back later, so a month can be negative. Rebates, fees, OPEX and marketing follow the sales. The plan follows stated rules from last year's actuals.
Every number that shapes the data is in params.mjs, with its public source or marked as an assumption. The sources are Eurostat, the ECB and annual reports of public consumer goods makers. Every random draw depends only on the seed and its own keys, and the generator uses its own log and exp, so any machine writes the same bytes.
Licence
The generator is licensed under Apache 2.0. The data is licensed under CC BY 4.0. Exchange rates are the euro reference rates of the European Central Bank. Source: ECB.