Skip to content

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

-shared -fPIC -o myPlugin.so

Running the backtester

nanoconda-cli -a dbnbacktester -c configs/DBN-cme-playback.xml -i myPlugin.so -- userArg1 userArg2

Example Config for dbnbacktester

configs/DBN-cme-playback.xml
<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.

nanoconda-cli -a dbnpublisher -c configs/DBN-cme-publisher.xml 

Example Config for dbnpublisher

configs/DBN-cme-publisher.xml
<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