DataBento DBN
Feed Handler for DataBento DBN file (CLI Applications -a dbnpublisher and -a dbnbacktester).
For a general overview of NanoConda feed handlers and common configuration options, refer to the Feed Handler documentation.
The DBN feed handler is designed for working with historical market data obtained from DataBento.
Tip
You can learn how to download DBN files from the DataBento portal in our Journal article: Using DataBento DBN Files for Backtesting.
DBN-Specific Configuration:
The attributes dbn-file and dbn-instrument-file must be configured on the <Ingester> node.
Both files must correspond to the same date range to ensure correct instrument definitions and market data alignment.
DBN Backtester
The dbnbacktester application executes user-defined plugin code inline while reading DBN files. This enables high-speed backtesting without client-side latency concerns.
All trading activity is simulated using the in-memory NanoConda Simulator.
Plugin Initialization
Your plugin must define the following function, which the backtester will call to initialize the plugin. It receives a session object used for submitting simulated orders and must return a pointer to your custom listener:
extern "C" nanoconda::listener* init_nanoconda_plugin(int argc, char** argv, nanoconda::dmasession* session) {
_listenerS._session = session;
return &_listenerS;
}
To compile your plugin for use with the backtester, make sure to use the following compiler flags:
Compiling plugin
Running the backtester
Example Config for dbnbacktester
<Feed logger="dbn-marketdata-CME.log" logger-cpu="-1" logger-level="info" entitlement="XCME">
<Ingester cpu="-1" dbn-file="/location/glbx-mdp3-20260126.mbo.dbn.zst" dbn-instrument-file="/location/glbx-mdp3-20260125.definition.dbn.zst" dbn-speed="fast">
</Ingester>
<Instruments>
<Instrument symbol="ES" />
<Instrument symbol="NQH6" />
</Instruments>
</Feed>
DBN Publisher
The dbnpublisher reads DBN files and publishes normalized market data to shared memory, mimicking a production market data environment.
This mode is useful when:
- Running algorithms that consume shared memory
- Testing entitlement logic
- Simulating production-like deployment behavior
Entitlements
You must define user credentials in the <Entitlements> node to allow algorithms to access shared memory.
Example Config for dbnpublisher
<Feed logger="dbn-marketdata-CME.log" logger-cpu="-1" logger-level="info" entitlement="XCME" >
<Ingester cpu="-1" dbn-file="/location/glbx-mdp3-20260126.mbo.dbn.zst" dbn-instrument-file="/location/glbx-mdp3-20260125.definition.dbn.zst" dbn-speed="realtime" />
</Ingester>
<Instruments>
<Instrument symbol="ES" />
<Instrument symbol="NQH6" />
</Instruments>
<Entitlements>
<User username="hftclient" passwordhash="5411718394350379800" />
</Entitlements>
</Feed>
Note
For instructions on running the Simulator with a GUI connected to the DBN Publisher, refer to the Simulator documentation