*! syndatakit v0.3.0 15 March 2026

Title

syndatakit -- Generate synthetic econometric and financial data

Syntax

syndatakit, profile(name) [options]

Required
profile(name) dataset profile to generate; see sdkprofiles

Size
n(#) number of synthetic rows to generate; default is 1000

Scenario
scenario(name) economic scenario: recession, severe,
rate_shock, or expansion

intensity(#) scenario intensity from 0.0 to 1.0; default is 1.0

Reproducibility
seed(#) random seed for exact reproducibility

Privacy
dp enable formal (epsilon, delta) differential privacy

epsilon(#) privacy budget epsilon; default is 1.0; lower = more private

Data management
clear clear current dataset before loading

replace allow replacing output file if saving

nogen display profile metadata without generating data

Description

syndatakit calls the syndatakit
Python package to generate synthetic tabular data calibrated to the
statistical properties of real econometric and financial datasets. Generated
data preserves marginal distributions, Spearman rank correlations, VAR(1)
temporal dynamics, and GARCH volatility structure. It contains zero real
individuals and requires no data use agreements.

Eighteen built-in profiles cover macroeconomic indicators (FRED), mortgage
origination (HMDA), bank call reports (FDIC), equity returns, corporate bonds,
insurance, real estate, tax statistics, and commodity markets. Each profile
is calibrated against published aggregate statistics from U.S. federal agencies
and international statistical bodies.

Fidelity scores range from 81.7% (IRS SOI, limited by extreme income tail)
to 95.0% (CFTC, FDIC). The fidelity score combines marginal moment agreement
(45%), KS distributional fit (30%), and Spearman correlation distance (25%).
Full reproduction code is available at
https://github.com/Nityahapani/syndatakit/blob/main/validation/.

To list all available profiles with fidelity scores, sources, and variable
counts, run sdkprofiles.

Options

Required

profile(name) specifies which dataset profile to generate. Use
sdkprofiles to see all available profiles. Example profiles include:
fred_macro (8 macroeconomic variables), hmda (7 mortgage variables),
equity_returns (11 return and risk factor variables).

Size

n(#) specifies the number of synthetic rows to generate. The Python
package has no practical upper limit; very large values (> 1,000,000) may
require significant memory. Default is 1,000.

Scenario

scenario(name) applies an economic scenario shift to all generated
variables. Available scenarios:

recession - moderate demand contraction, rising unemployment

severe - severe recession, financial stress conditions

rate_shock - rapid interest rate increases, credit tightening

expansion - above-trend growth, falling unemployment

intensity(#) scales the scenario shift continuously from 0.0 (no shift)
to 1.0 (full scenario). Allows generating intermediate stress scenarios.
Default is 1.0.

Reproducibility

seed(#) sets the Python random seed before generation. Using the same
profile, n, and seed produces identical output on any machine with the same
syndatakit version installed. Recommended for replication packages.

Privacy

dp enables formal (epsilon, delta)-differential privacy using the
Laplace mechanism on marginal statistics and the Wishart mechanism on the
correlation matrix. Privacy budget is tracked and reported.

epsilon(#) sets the privacy budget. Smaller values mean more privacy
and lower fidelity. epsilon = 1.0 is a standard moderate-privacy setting.
epsilon = 0.1 is strong privacy with noticeable fidelity reduction.
epsilon = 10.0 provides minimal privacy but near-nominal fidelity.
Default is 1.0.

Data management

clear clears the current dataset in memory before loading synthetic
data. Equivalent to running clear before syndatakit.

nogen displays metadata for the requested profile (source, variable
count, fidelity score, variable descriptions) without generating any data.
Useful for exploring available profiles.

Examples

Generate 1,000 rows of FRED macroeconomic indicators:

. syndatakit, profile(fred_macro) n(1000) clear

Generate 10,000 mortgage applications under a rate shock scenario:

. syndatakit, profile(hmda) n(10000) scenario(rate_shock) intensity(0.8) clear

Generate equity return data with a reproducibility seed:

. syndatakit, profile(equity_returns) n(5000) seed(2026) clear

Generate FDIC call report data with differential privacy (epsilon = 0.5):

. syndatakit, profile(fdic) n(2000) dp epsilon(0.5) clear

View profile metadata without generating data:

. syndatakit, profile(irs_soi) nogen

List all 18 available profiles:

. sdkprofiles

Generate BLS employment data and immediately run a regression:

. syndatakit, profile(bls) n(3000) clear

. regress weekly_wage avg_weekly_hours labor_force_part

Installation

Requirements: Stata 16 or later with Python integration enabled.
Python 3.8 or later with syndatakit installed.

Step 1: Verify Python is available in Stata:

. python query

Step 2: Install the syndatakit Python package:

. python: import subprocess; subprocess.run(["pip", "install", "syndatakit"])

Step 3 (once published on SSC):

. ssc install syndatakit

Step 3 (manual installation):

Copy syndatakit.ado and syndatakit.sthlp to your personal ado directory.

On Unix/Mac: ~/ado/personal/

On Windows: C:\ado\personal\

Citation

If you use syndatakit in published research, please cite:

Hapani, N. (2026). syndatakit: Production-grade synthetic data generation
for econometrics and finance. Journal of Open Source Software.
https://doi.org/10.XXXXX/joss.XXXXX

BibTeX:

@article{hapani2026syndatakit,

author = {Hapani, Nitya,

title = {{syndatakit: Production-grade synthetic data generation for econometrics and finance,

journal = {Journal of Open Source Software,

year = {2026,

doi = {10.XXXXX/joss.XXXXX

Author

Nitya Hapani

nitya@syndatakit.com

https://github.com/Nityahapani/syndatakit

Also see

sdkprofiles: List all available syndatakit profiles

python: Stata Python integration

https://github.com/Nityahapani/syndatakit/blob/main/validation/: Full fidelity validation code