Skip to content
Silicon Wok Hawker Heritage
Menu
Contents

G.9Reproducibility

Anyone can rebuild every number in this library from the repository, and the browser simulator gives the same answers as the Python to the cent. That is the promise this section keeps.

G.9.1Parity

The models are written twice: once in Python, which builds the documents, and once in JavaScript, which runs the simulator and the website. Two tests hold them together, and this volume is built only after both pass. They ran as this volume was built:

  • Follow the Plate. Python and model.js agree on 608,767 values: the 6 stall types and 3 cases in every policy, shock and suite, and 240 stalls edited at random as a viewer would edit them. The largest relative difference is zero: they agree exactly. The test fails at one part in 1,000,000, which on the largest stall's yearly sales is $0.32, so a pass means they agree to the cent.
  • Follow the Gift. Python and funding.js agree on 35,577 values over 40 random cases and the central run, twenty-one years each. The largest relative difference is zero: they agree exactly, against the same tolerance.

The succession stress test has no browser port, so it has no parity test; E.1, Can the Business Pay for Its Own Succession?'s results are read from its own output file. g9-parity.csv

G.9.2How to run the models

Or run src/build_all.sh, which does all of it and composes the library. The Monte Carlos use fixed seeds (20261026 for the stalls and the funding futures, 20261027 for the hand-overs), so two runs give the same numbers. The code needs Python 3.11 with NumPy and Node 18.

G.9.3The downloads

Every table above, as CSV with a JSON twin, under /data/g/ on the website and site/public/data/g/ in the repository; index.json lists them with their columns, units and a checksum of each file. The data dictionary is G.1.3.

30 files, 2,286 rows in all, generated with this volume. Each CSV has the JSON twin of the same name; the series file is the curated source itself.

G.9 Reproducibility: table 1
FileSectionWhat it holdsRowsColumnsMark
g1-parameters.csvG.1Every parameter of the three models2957mixed
g1-stall-inputs.csvG.1.2Every input of the six stall archetypes and the prologue's three cases2912mixed
g2-pnl.csvG.2.1The stall P&L by archetype, a month and a year1914Derived
g2-illness.csvG.2.2What days closed for illness cost the hawker in a year309Derived
g2-newcomer.csvG.2.3The newcomer's rent path for three bids613Derived
g3-net.csvG.3Net income: deciles, quartiles and the mean, 5,000 simulated stalls a type716Derived
g3-hours.csvG.3Hours: deciles, quartiles and the mean, 5,000 simulated stalls a type714Derived
g3-rent.csvG.3Rent: deciles, quartiles and the mean, 5,000 simulated stalls a type714Derived
g3-inputs.csvG.3The Monte Carlo's inputs: each draw as the code writes it, and its 10th, 50th and 90th percentiles by stall type1720Assumption
g4-ledgers.csvG.4.1Every pilot centre and the national core: every line, every year, 0–20 (long format)7296Derived
g4-stacks.csvG.4.2The four funding stacks, Years 0–3: two, three, four and five pilot centres1616Derived
g4-plan.csvG.4.3The central plan, Years 0–20: every inflow and every use2129Derived
g4-endowment-paths.csvG.4.4The endowment paths, Years 0–20, with the probability of holding real value8412Derived
g4-chua.csvG.4.5Heritage Plate licensees that fail each year: none, a third, half (Chua, 2024)316Derived
g4-maintenance.csvG.4.4The maintenance rate from Year 4: 10% to 40% of the planning count46Derived
g5-schedules.csvG.5.1Succession Mortgage schedules under the adopted terms, by stall type, year by year1357Derived
g5-summary.csvG.5.1Succession Mortgage by stall type: goodwill, payment, payoff and royalty710Derived
g5-royalty.csvG.5.2The Family Name Royalty's ten years and what is left at each anniversary664Derived
g5-licences.csvG.5.3Heritage Plate licence income and its three shares, by failure rate246Derived
g6-regulars.csvG.6.1The Regulars' List in orders: every stall and dish type1120Assumption
g6-tiers.csvG.6.1The Regulars' List thresholds43Assumption
g6-baseline.csvG.6.2The Year 0 stall baseline: sample sizes, interview hours and cost by centre57Assumption
g6-publishes.csvG.6.2What the baseline publishes, as distributions73Assumption
g7-sensitivity.csvG.7One at a time: every parameter tested, its range and what it does to the four-year total and the endowment3010Derived
g8-rents.csvG.8Rents, 2012–2026129mixed
g8-fees.csvG.8Fees and wages, 2012–2026159mixed
g8-prices.csvG.8Prices, 2012–20261513mixed
g8-sales.csvG.8Real sales, 2012–2026149mixed
g9-parity.csvG.9.1Parity between the Python models and the browser ports18Derived
g8-series.csvG.8Every series value, with its unit, mark, source and note (data/curated/series.csv)66610mixed

G.9.4Version and independence

This volume belongs to version 1.9.3 of the library. The version, its date and its repository tag are printed on the cover, in the footer and on the Document Control page, and the PDF's metadata carries a fingerprint of the source it was built from, so a reader can tell whether a copy is current. Every change from version 1.0 is recorded in the Version and Change Control Log.

This is a working paper for public discussion. Every number in it is an invitation to improve it. Corrections and better data are welcome.