Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Transactions

Transaction settings control journal entry generation.

Configuration

transactions:
  target_count: 100000

  line_items:
    distribution: empirical
    min_lines: 2
    max_lines: 20

  amounts:
    min: 100
    max: 1000000
    distribution: log_normal
    round_number_bias: 0.15

  sources:
    manual: 0.3
    automated: 0.5
    recurring: 0.15
    adjustment: 0.05

  benford:
    enabled: true

  temporal:
    month_end_spike: 2.5
    quarter_end_spike: 3.0
    year_end_spike: 4.0
    working_hours_only: true

Fields

target_count

Total number of journal entries to generate.

PropertyValue
Typeu64
RequiredYes
transactions:
  target_count: 10000      # Small dataset
  target_count: 100000     # Medium dataset
  target_count: 1000000    # Large dataset

line_items

Controls the number of line items per journal entry.

distribution

ValueDescription
empiricalBased on real-world GL research
uniformEqual probability for all counts
customUser-defined probabilities

Empirical distribution (default):

  • 2 lines: 60.68%
  • 3 lines: 5.24%
  • 4 lines: 17.32%
  • Even counts: 88% preference
line_items:
  distribution: empirical

Custom distribution:

line_items:
  distribution: custom
  custom_distribution:
    2: 0.50
    3: 0.10
    4: 0.20
    5: 0.10
    6: 0.10

min_lines / max_lines

PropertyValue
Typeu32
Default2 / 20
line_items:
  min_lines: 2
  max_lines: 10

amounts

Controls transaction amounts.

min / max

PropertyValue
Typef64
RequiredYes
amounts:
  min: 100           # Minimum amount
  max: 1000000       # Maximum amount

distribution

ValueDescription
log_normalLog-normal distribution (realistic)
uniformEqual probability across range
customUser-defined
amounts:
  distribution: log_normal

round_number_bias

Preference for round numbers (100, 500, 1000, etc.).

PropertyValue
Typef64
Range0.0 - 1.0
Default0.15
amounts:
  round_number_bias: 0.15    # 15% round numbers
  round_number_bias: 0.0     # No round number bias

sources

Transaction source distribution (weights must sum to 1.0).

SourceDescription
manualManual journal entries
automatedSystem-generated
recurringScheduled recurring entries
adjustmentPeriod-end adjustments
sources:
  manual: 0.3
  automated: 0.5
  recurring: 0.15
  adjustment: 0.05

benford

Benford’s Law compliance for first-digit distribution.

benford:
  enabled: true       # Follow P(d) = log10(1 + 1/d)
  enabled: false      # Disable Benford compliance

Expected distribution (enabled):

DigitProbability
130.1%
217.6%
312.5%
49.7%
57.9%
66.7%
75.8%
85.1%
94.6%

temporal

Temporal patterns for transaction timing.

Spikes

Volume multipliers for period ends:

temporal:
  month_end_spike: 2.5    # 2.5x volume at month end
  quarter_end_spike: 3.0  # 3.0x at quarter end
  year_end_spike: 4.0     # 4.0x at year end

Working Hours

Restrict transactions to business hours:

temporal:
  working_hours_only: true   # Mon-Fri, 8am-6pm
  working_hours_only: false  # Any time

Examples

High Volume Retail

transactions:
  target_count: 500000

  line_items:
    distribution: empirical
    min_lines: 2
    max_lines: 6

  amounts:
    min: 10
    max: 50000
    distribution: log_normal
    round_number_bias: 0.3

  sources:
    manual: 0.1
    automated: 0.8
    recurring: 0.08
    adjustment: 0.02

  temporal:
    month_end_spike: 1.5
    quarter_end_spike: 2.0
    year_end_spike: 5.0

Low Volume Manual

transactions:
  target_count: 5000

  line_items:
    distribution: empirical

  amounts:
    min: 1000
    max: 10000000

  sources:
    manual: 0.6
    automated: 0.2
    recurring: 0.1
    adjustment: 0.1

  temporal:
    month_end_spike: 3.0
    quarter_end_spike: 4.0
    year_end_spike: 5.0
    working_hours_only: true

Testing/Development

transactions:
  target_count: 1000

  line_items:
    distribution: uniform
    min_lines: 2
    max_lines: 4

  amounts:
    min: 100
    max: 10000
    distribution: uniform
    round_number_bias: 0.0

  sources:
    manual: 1.0

  benford:
    enabled: false

Validation

CheckRule
target_count> 0
min_lines≥ 2
max_lines≥ min_lines
amounts.min> 0
amounts.max> min
round_number_bias0.0 - 1.0
sourcesSum = 1.0 (±0.01)
*_spike≥ 1.0

See Also