- uses built-in Python multithreading
- monitors prices of arbitrage exchanges to make markets
- configurable slippages per market pair
- configurable asset allocation per market pair
- configurable reserve per currency
- configurable price and investment tolerances
- "dry run" mode - logs actions but does not place orders on exchange
- runs on its own thread with configurable monitor period
- maps foreign market pair names to qTrade market pairs
- manages market scrapers (exchange integrations) to collect bid/ask prices for configured market pairs
- runs on its own thread with configurable monitor period
- reads bid/ask prices from market data collector
- places buy and sell orders at configurable slippages
- caches and monitors placed orders to reduce API calls
- uses cost basis to track and report earnings
- use webhooks to monitor for trades rather than pulling all order data every tick
- allow rebalances by market pair