OCTOBOT INTEGRATION

Send your OctoBot backtest results to Kiploks for robustness and risk analysis. Read-only: the script only reads exported files from your OctoBot profile.

What you get

  • Robustness and risk analysis from your backtest exports
  • One or multiple runs: point to a single run folder or parent backtesting folder
  • Analyze links in Kiploks - no research_id needed

Repository

Clone or download the script from kiploks/kiploks-octobot and place the kiploks-octobot folder in your OctoBot project root.

Prerequisites

  • OctoBot: Run a backtest from the OctoBot UI. Export structure: profile folder contains backtesting/ with metadata.json and backtesting_1/, backtesting_2/, …
  • Python 3.9+: No extra packages required (stdlib only).

Quick Start

Add the Kiploks OctoBot script (kiploks-octobot folder with run.py and kiploks.json) to your OctoBot project. Copy the example config and edit kiploks.json.

Config

Terminal
$cp kiploks.json.example kiploks.json

Run (from OctoBot root, same idea as Freqtrade – via bash)

Terminal
$chmod +x kiploks-octobot/run.sh
$./kiploks-octobot/run.sh
python kiploks-octobot/run.py
Kiploks Integration Bridge (OctoBot) v1.0.0
-----------------------------------------
Loading...
Scanning backtesting folder...
[trade_mapping] 17 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 14 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 1 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 4 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 18 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 6 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 17 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 14 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 1 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 4 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 7 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 18 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 6 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 18 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 14 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 17 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 14 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 1 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 4 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 7 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 18 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 6 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 18 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 14 buy fill(s) unclosed at end of backtest (ignored)
[trade_mapping] 17 sell fill(s) had no matching buy (unmatched)
[trade_mapping] 14 buy fill(s) unclosed at end of backtest (ignored)
[OK]Backtest loaded: BTCUSDC | 15m | 2025-04-28 -> 2026-02-28
Trades: 2979 | Return: -14.0% | DD: -34.2%
WinRate: 53.5% | PF: 0.84 | Sharpe: -37.68
[OK]Equity curve: reconstructed (398 pts)
[OK]Walk-Forward detected: 3 window(s)
Performance Transfer: 3 window(s) (IS/OOS equity curves)
W1 opt +0.3% | val -0.6%
W2 opt +4.8% | val +6.5%
W3 opt -19.0% | val -18.7%
[OK]Data Quality: available after upload (Kiploks Cloud)
Exported payload to .../kiploks-octobot/export_octobot_result.json
[run] Uploading to Kiploks...
ADVANCED ANALYSIS (Kiploks Cloud)
-----------------------------------------
DQG verdict, WFE, retention/decay,
PSI, overfitting probability,
final deployment grade
Open the analyze link(s) below to see full analysis.
https://kiploks.com/analyze/[id]
---

Or run with python kiploks-octobot/run.py from the OctoBot root. With a valid api_token, the script POSTs to Kiploks and prints the analyze URL(s). You can also see results on the Data page when logged in.

Windows

From the OctoBot root (e.g. C:\octobot), use Command Prompt or PowerShell. No bash script - run Python directly.

Command Prompt
C:\octobot>copy kiploks.json.example kiploks.json
C:\octobot>python kiploks-octobot\run.py

Configuration

Required

  • api_token - API key from Kiploks. Get it in Header - API Keys. Required for upload.
  • backtesting_path - Path to a single backtesting_N folder or to the backtesting/ parent. Relative to OctoBot root (the directory from which you run the script). Absolute paths and ~ are supported.

Optional

  • api_url - Kiploks API base (default https://kiploks.com).
  • top_n - When path is the parent folder, number of runs to use by date (latest N). Default 3.
  • wfaPeriods, wfaISSize, wfaOOSSize - WFA window settings.
  • skip_already_uploaded - Skip POST when this run set is already in uploaded.json (default true).

Known limitations

  • Parameter Sensitivity: Empty. OctoBot does not export hyperopt/optimizer results; we only have one parameter set per run.
  • Walk-Forward: With one run we send a single period. Full WFA requires several runs (different windows) when pointing to the parent folder with metadata.json.
  • Benchmark: Kiploks typically uses BTCUSDT. If your backtest is BTC/USDC we send BTCUSDC; a small symbol mismatch is possible.
  • Fee: Average over all fills in all_trades. GridTradingMode round-trips use FIFO; with partial fills, net_return may be approximate.

API errors

  • 401
    • Missing Authorization header (Bearer API key required)
    • Invalid or expired API token – generate a new key in Kiploks → API Keys and update api_token.
  • 403
    • results must be a non-empty array – ensure backtesting_path points to valid run data.
    • Maximum number of stored tests reached – delete some tests on the Data page, then retry.
  • 400
    • Result at index N is missing required data for analysis – check run_data.json and exchange folder.
    • Benchmark is required; payload must have date range and timeframe – backtest must have start/end and timeframe in run_data.
  • 429
    • Only one analyze request per minute is allowed – wait and retry.
  • 502
    • Failed to submit results – retry later; check Kiploks status.

Other

backtesting_path not found – run the script from the OctoBot root so relative paths resolve. Use ./kiploks-octobot/run.sh from that root.

OctoBot integration - Kiploks Robustness Engine