Getting Started with the Nanoconda Simulator
This tutorial walks you through downloading the Nanoconda Simulator CLI and sample data, compiling a plugin, and running the simulator with the GUI.
Prerequisites
System Requirements:
- OS: RHEL-compatible system (Rocky Linux, CentOs, Red Hat Enterprice Linux).
- C/C++ Development libraries
- HugePages enabled
- Nanoconda License File is present. (Sent as attachment to the confirmation email)
- Nanoconda CLI archive is present. (Link Sent in the confirmation email)
- Market Data Files are present (PCAP or DBN). (Link sent in the confirmation email)
Note
If you experience any issues or missing any of the above items, please contact support@nanoconda.com
Docker environment
If your host operating system is different from Rocky or Red Hat, it is possible to run the software inside your Docker environment.
Tip
Refer to Docker Docs to install Docker Engine on your OS.
On Windows, enable WSL before installing Docker. Refer to Windows WSL Docs.
Below is the list of commands required to run a Docker container:
sudo docker pull rockylinux:9
sudo docker run -it --name rocky_env -p 2345:2345 --mount type=bind,source=/dev/hugepages,target=/dev/hugepages rockylinux:9 /bin/bash
Notes
- Port
2345was mapped for future use by the GUI server. You may change it to any desired port. - HugePages must be configured on the host machine and
/dev/hugepagesmust be mounted to the container.
Installation
Follow instructions from your email to download simulator, sample data and the license file:
For the purposes of this totorial we placed all files that were supplied in the email inside our home directory.
Note
This tutorial describes use of sample Databento DBN files that were provided with a simulator license. Please refer to Quick Start guide for information on how to set up a PCAP replay version.
Extract sample files and cli archives:
After extraction, your home directory should contain two new directories:
Sample data contents
$ ls dbn-sample-data/ -l
dbn-backtesting.xml
dbn-publisher.xml
env.sh
glbx-mdp3-20260326.definition.dbn.zst
glbx-mdp3-20260326.mbo.dbn.zst
Nanoconda CLI contents
Source Environment Variables
Source both environment files to configure your shell session:
Supply Nanoconda License File
Set NANOCONDA_LICENSE variable with location of your license file.
Launching the application
Compile the Sample Plugin
The sample plugin source is located at src/naco-app.cpp. Compile it with:
Launch the dbnbacktester application:
cd ~/nanoconda
nanoconda-cli -a dbnbacktester -c ../dbn-sample-data/dbn-backtesting.xml -i src/naco-plugin.so
You should now see printouts of market data callbacks on your screen. You can modify src/naco-app.cpp with your logic and start sending orders.
Please check our Market Data and Order Entry API documentation.
This section covers running both the DBN Publisher and the Simulator together, then connecting via the web GUI.
Start the DBN Publisher
Run the DBN Publisher as a background process:
Configure the Simulator
Edit the simulator configuration file to set your network interface, port, and risk limits:
The relevant sections of the configuration file are shown below:
<Access logger="simulator-session.log" logger-level="debug"
account-id="useraccount1" username="username1"
passwordhash="5411718394350379800">
<Risk>
<Instrument symbol="ES" maxpositions="10" clipsize="10" />
<Instrument symbol="MES" maxpositions="100" clipsize="100" />
<Instrument symbol="NQ" maxpositions="20" clipsize="20" />
<Instrument symbol="MNQ" maxpositions="200" clipsize="200" />
<Instrument symbol="6E" maxpositions="400" clipsize="100" />
</Risk>
<Markets>
<Market code="XCME" />
</Markets>
<Gui intf="eth0" port="2345" cpu="-1"/>
<Credentials>
<User login="user-trader" passwordhash="5411718394350379800" role="trader" />
<User login="clearer" passwordhash="5411718394350379800" role="clearer" />
<User login="user-viewer1" passwordhash="5411718394350379800" role="viewer" />
<User login="user-viewer2" passwordhash="5421711394150379800" role="viewer" />
</Credentials>
</Access>
In this example the GUI is configured to listen on interface eth0 at port 2345. Adjust intf and port to match your environment.
Credentials
useraccount1is the account ID required to connect via the shared memory order entry session.username1is the username required for the shared memory entry session.- The password hash
5411718394350379800corresponds to the plain-text passwordpasswordand is applied to all sample credentials.
Start the Simulator
Both the DBN Publisher and the Simulator are now running.
Connect to the GUI
Open the Nanoconda GUI in your browser at gui.nanoconda.com and enter the following connection details under Advanced:
| Field | Value |
|---|---|
| Host | IP address of eth0 |
| Port | 2345 |
| Username | user-trader |
| Password | password |
Click Connect.
The user-trader login corresponds to the entry configured in the <Credentials> node:
At this point the GUI will show that your algo is offline, but you can already submit manual trades.
Step 6 — Compile and Launch the Algo
The sample algo source is located at src/bracketsalgo.cpp. Compile and run it:
cd ~/nanoconda/src/
make bracketsalgo
./bracketsalgo -e XCME -s ESM6 -u username1 -p password -a useraccount1
The GUI will now show your application as online.
Launch your first bracket order and explore!
Next Steps
- Now that your simulator is up and running, you're ready to start building your own algorithm. Refer to the Software Reference for detailed API documentation.
- If you need additional historical data, see the following guide: How to download more data from Databento Portal