← Back to all articles

Test Data · 2024-03-11 · 3 min read

Synthetic Data Generation – Part 2: Visual Distribution Modelling with Synner

In Part 1, we covered synthetic data creation using Plaitpy, a lightweight Python library. Here in Part 2, we explore Synner—an open-source tool with a rich visual UI for designing statistical data distributions.

Refresher: The FX Futures Volume Problem

Imagine an FX futures broker launching a new desk with projected 1-year and 5-year transaction volumes across different maturities (6M, 1Y, 5Y) and notional trade brackets (200k, 1M, 10M). Because it is a brand-new desk, there is no historical production data to sample from—we have to generate realistic Day-Zero test data from scratch.


Modelling Conditional Distributions in Synner

Once Synner is built and running, you can define the distribution of trade amounts across the brackets using a helper column (_above) and then attach a Gaussian distribution conditional on that bracket.

Better still, for the 5-year volume scenario—where the split of trade sizes changes depending on whether the maturity is 6M, 1Y, or 5Y—Synner allows you to make _above directly dependent on the Maturity column.

You can either generate the dataset directly from the UI or export the model as a JSON file and run it headlessly from the command line (see our example model files on GitHub).


Conclusion on Synner

Pros:

  • Clear visual representation of statistical distributions as you design them
  • Rich support for conditional dependencies and custom distribution profiles
  • JSON model files can be version-controlled in Git
  • Easily reproducible and scriptable in CI/CD pipelines

Cons:

  • Requires some technical effort to compile and set up initially
Stay in the loop

Enjoyed this technical breakdown?

Subscribe for occasional engineering field notes on load testing, synthetic data, and observability—or talk to us about your system.