C++ Developer for Stock Backtesting System

Job ID: 39728658

Budget: $30 – $250 USD

We are seeking a skilled C++ developer to modify our existing stock backtesting backend system.
The ideal candidate should have experience with C++ and must be very comfortable with modern c++ (templates, classes, build-systems, etc)

Intro to codebase:
https://github.com/ntorm1/Atlas/blob/main/util/archive/first-post.md

High level features needed:
- convert to make build system
- strategy will be fed as a JSON graph (We would need to “compile” the JSON into an Atlas AST made of a few new primitives, then let Eigen do the heavy lifting. )
- build a HistoricalData class/module that caches the stock data both on disk and ram
- graph traversal can be done as multi-threaded
- compile to WASM
- test driven design, excellent unit tests and good coverage (googletest)

---

Milestones:
Atlas Repo (we need to fork this):
[https://github.com/ntorm1/Atlas/blob/main/util/archive/first-post.md](https://github.com/ntorm1/Atlas/blob/main/util/archive/first-post.md)

Work needed to do:

1. Implement SmallStrategy.json in Atlas, with Tests
- [SmallStrategy.json](https://gitlab.com/hassan789/old_julia_backtester/-/blob/main/App/Tests/E2E/JSONs/SmallStrategy.json)
-. [Expected Returns](https://gitlab.com/hassan789/old_julia_backtester/-/blob/main/App/Tests/E2E/ExpectedFiles/SmallStrategy.json) (must match exactly)
-. Ensure we have tests to track how fast graph can run
2. Switch to Ninja+Cmake; Get rid of QT/GUI, Python interface, etc
3. Create HistoricalData class to lazy-load sock data at runtime (using DuckDB)
-. we can get data from [yahoofinance-huggingface index](https://huggingface.co/datasets/bwzheng2010/yahoo-finance-data)
-. We need to ensure data is always in RAM for fastest backtest
-. But we should cache on local disk to avoid re-downloads
4. Complete Implementation of all nodes and node-tests
-. [Node Logic](https://gitlab.com/hassan789/old_julia_backtester/-/tree/main/App/NodeProcessors)
-. [Tests](https://gitlab.com/hassan789/old_julia_backtester/-/tree/main/App/Tests/NodeTests)
5. Implement & Test all remaining tests
-. MediumStrategy.json
-. LargeStrategy.json
-. Smoke
-. [etc (all tests)](https://gitlab.com/hassan789/old_julia_backtester/-/tree/main/App/Tests)
6. Speed up graph backtesting using multi-processing
7. Cross-compile to WASM and ensure we can fetch data and run from browser
1. fetching data via the same HistoricalData

Other requirements:


* all code and features written MUST have unit test, and ensure good code-coverage

* we must have high level integration/smoke tests that cover overall basic usage

* performance is critical; each new PR must provide results on performance. e.g.:

* how long it took to backtest 5 years of data...
* cold start (no stock data on disk, none in ram)
* warm start (stock data on disk, not in ram)
* hot start (stok data in ram)
* etc