POLYTRADERBOT PAPER RUNNER 0.14.0 This free runner observes public market data and simulates virtual orders using the same rules as the browser simulator. It needs no wallet, licence or API key. It cannot place real trades. Paper results do not establish live profitability. 1. Install Node.js 22 or a later supported LTS release from https://nodejs.org/. 2. In the browser simulator, choose your strategy and select Auto trade for repeated rounds. Click Export strategy settings. For limit buys, Entry conditions includes Stop buys before close (sec). For example, 200 on a 5-minute round allows buys only during the first 100 seconds after open. Unfilled buys cancel at the cutoff; filled shares retain their exits. Older settings and saved runs keep the 90-second default. From 0.12.0 the exported settings also carry how the stop is measured (a fixed price, or cents / percent below your actual entry price), the trailing stop switch and the optional lowest buy price for range buys. The runner applies them exactly as the browser does. Settings exported from 0.12.0 need runner 0.12.0 or later; older settings and saved runs load unchanged. 3. Download paper-runner.mjs. Put it and polytrader-paper-settings.json in a dedicated folder on your always-on PC or VPS. 4. Open a terminal in that folder and run: node paper-runner.mjs --config polytrader-paper-settings.json --out paper-run.json The runner saves paper-run.json and paper-run-fills.csv after every observation, roughly every five seconds. Ctrl+C saves and pauses. To continue later: node paper-runner.mjs --resume paper-run.json SEVERAL COINS IN ONE RUNNER (0.13.0) Run the same settings on two or more coins at once, in one terminal window: node paper-runner.mjs --config polytrader-paper-settings.json --coins BTC,ETH,SOL --out paper-run.json Coins: BTC, ETH, SOL, XRP, DOGE, BNB, HYPE. Each coin keeps its own run, saved as paper-run-BTC.json and paper-run-BTC-fills.csv (and so on), so you can import any one of them into the browser. paper-run-summary.csv has one row per coin and a total row (closed rounds, wins, losses, win rate, P&L, average, fees, open rounds), updated after every observation: open it in Excel or Google Sheets. The window prints the same table every minute. To continue later: node paper-runner.mjs --resume paper-run.json --coins BTC,ETH,SOL With more than three coins each coin is sampled a little less often (every 6.7 seconds for four coins, 11.7 for all seven) to stay inside the market-data limit. A data problem on one coin is logged with that coin's name and retried; the other coins keep running. For different settings per coin, run one runner per settings file with its own --out file instead. To continue a browser run instead, first Pause it, Save full run, and copy that JSON file into the folder. Use --resume with its filename. Stop the original runner/browser before resuming elsewhere to avoid two independent copies. On a Linux VPS, tmux can keep the process running after you disconnect: tmux new -s paper node paper-runner.mjs --config polytrader-paper-settings.json --out paper-run.json Detach with Ctrl+B then D; return with tmux attach -t paper. This does not restart after a VPS reboot. On any platform the machine must stay awake and connected. The browser screen-awake option is optional and may be refused by the device; it cannot keep a browser running when the device sleeps or the tab is hidden. Auto mode retries temporary network errors while preserving this run. A permanent data error pauses and exits with a message. Inspect it before using --resume. After sleep, a restart or a data interruption, only current quotes are used; missed fills are never replayed. Brief crossings between the roughly five-second samples can be missed; stops use observed bid prices and can fill below the stop. The same sampling limits apply to the browser and runner. An eligible current round may be entered after reconnection. Existing positions and history remain in the same run. Import paper-run.json in the browser to view/export results. The import replaces that browser's saved run only after confirmation and always opens paused. It reads the local file; it does not upload your run or control a remote runner. Copy only a completed JSON save, preferably after stopping the runner. Import does not automatically refresh as the file changes. The runner refuses to overwrite an existing output for a new run. A .lock file prevents two processes writing the same output. A crash can leave the lock: confirm the old process has stopped and no runner uses the file before removing only its .lock file and resuming. Keep the JSON file and backups. Do not run multiple machines against the same network-shared output directory. Runs are bounded to 1,000 rounds / 15,000 events. Export and start a new file when full; history is never silently reset. No unattended service is installed by this download. Close other copies before moving a run between devices. Simulator: https://terminal.polytraderbot.com/terminal/paper.html