#
Configuration
#
Reference
#
Configuration Overview
The Nekuti Matching Engine is configured through a series of feature blocks, each controlling specific aspects of the engine's behavior. Most settings are hard-coded as part of each client's optimized software package. Settings can be changed or exposed as runtime configuration parameters on request. Below is a comprehensive reference of all configuration options.
#
Environment Variables
The following environment variables can be used to control specific engine behaviors:
#
THREAD_MODEL
Controls the engine's threading behavior.
- Values:
dev-laptop
|production
- Default:
production
- Note: The
dev-laptop
setting is for testing purposes onlyproduction
: Runs multi-threaded and optimizes for latency by utilizing 4 CPU coresdev-laptop
: Runs single-threaded without CPU core optimization
#
DISABLE_PERSISTENCE
Controls persistence behavior of the engine.
- Values:
yes
|no
- Default:
no
- Note: Setting to
yes
is for testing purposes only- Starts engine with no persisted state
- Prevents command persistence and snapshot generation
- Enables runtime exchange data wiping without process restart
#
ABANDONMENT_TIMEOUT_MS
Configures recovery behavior for abandoned command files after hard exits.
- Values: Time in milliseconds
- Default: Not set
- Enables recovery of command files from failed instances
- Waits specified duration and verifies no writes occurred before takeover
- See Multiple Instance Protection and Recovery for detailed documentation
#
Core Features
#
Clock
Controls the temporal granularity of the system.
Clock[tickFrequency=PT0.01S]
tickFrequency
: Maximum duration between clock tick events (Shown in ISO-8601 duration format)
#
Engine
Defines core engine behavior parameters.
Engine[commandQueueCapacity=1000000]
commandQueueCapacity
: Maximum number of pending commands before backpressure is applied- When queue is full, REST calls will block until capacity becomes available
#
Persistence
Controls how the engine persists data.
Persistence(
path=persistence/,
archivePath=persistence/archived,
commandFileBaseName=commandLog,
fileSystem=NativeFilesystem,
incompatibleCommandFilePolicy=FatalError
)
path
: Directory for active persistence filesarchivePath
: Directory for archived command and snapshot filescommandFileBaseName
: Base name for command log filesfileSystem
: Filesystem implementation to useincompatibleCommandFilePolicy
: How to handle incompatible command files
#
CommandFileReading
CommandFileReading[
preferredReadChunkSize=524288,
shouldDropSubscriptionsFromPersistedState=true
]
preferredReadChunkSize
: Optimal chunk size for file reads (in bytes)shouldDropSubscriptionsFromPersistedState
: Whether to maintain subscriptions across restarts. Always true
#
CommandFileWriting
CommandFileWriting[
preferredWriteChunkSize=2097152,
fileMaxSize=1073741824
]
preferredWriteChunkSize
: Optimal chunk size for file writes (in bytes)fileMaxSize
: Maximum size of command files before rolling over (in bytes)
#
Data Management
#
DefaultMessageStore
DefaultMessageStore[
maxHoldingPeriod=PT24H,
purgeInterval=PT21M39.827S
]
The default message store is created only when the engine starts from zero with nothing persisted.
maxHoldingPeriod
: How long messages are retainedpurgeInterval
: Frequency of message purging operations
#
OrderPurging
OrderPurging[
orderPurgeInterval=PT9M59S,
orderPurgeAge=PT10M
]
orderPurgeInterval
: Frequency of order purging operationsorderPurgeAge
: Age threshold for purging final-state orders- Affects orders in filled, canceled, or expired states
- Purged orders will return
UnknownOrderId
orUnknownClOrdId
on amendment attempts
#
System Optimization
#
PreventRuntimeAllocations
PreventRuntimeAllocations[]
Ensures fixed heap size by asserting starting and maximum heap sizes are identical.
#
ReadModels
ReadModels[includeOrders=true]
includeOrders
: Enables historical order querying- Required for querying final-state orders
- Orders become unqueryable immediately upon reaching final state if disabled
#
SnapshotCommandGeneration
SnapshotCommandGeneration[snapshotInterval=PT8M7.349S]
snapshotInterval
: Frequency of snapshot generation
#
Logging
Logging[level=info, writingThread=true]
level
: Log level (info)writingThread
: Whether to use a background thread for log output
#
System Constants
These values are hardcoded and cannot be currently be configured. Future updates may include the ability to modify these settings:
- Market Order Slippage Limit: 5%
- Market orders will not fill beyond 5% from best bid/ask
- Order is partially filled and then canceled
- Dense Levels: 1 million
- Innermost price levels kept in dense array
- Optimizes performance at cost of memory usage