Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/backtest-kit/backtest-kit-minio-s3-docker/llms.txt

Use this file to discover all available pages before exploring further.

backtest-kit MinIO S3 Docker is a persistence layer for backtest-kit that swaps the default ./dump/ file storage for MinIO (S3) as the source of truth and Redis as a time-ordered index. All 16 IPersist* adapter contracts are fulfilled on top of these two services — your strategy code, runners, and CLI entry points stay completely unchanged.

Quickstart

Spin up MinIO and Redis, build your strategy bundle, and run your first backtest in minutes.

Architecture

Understand how MinIO and Redis work together as a two-layer persistence system.

Persistence Adapters

Explore all 16 IPersist adapters and their MinIO object key schemas.

Deployment

Deploy with Docker Compose — one command to run backtest, live, or paper mode.

Why MinIO + Redis?

This project occupies a deliberate middle ground between the built-in file adapter and a full database.
Default ./dump/MinIO + Redis (this project)PostgreSQL / MongoDB
InfrastructureNone2 containersDatabase + cache
Source of truthJSON files on local diskJSON objects in S3 bucketRows / documents
DurabilitySingle host, manual backupS3 semantics: versioning, replication, lifecycleDB tooling: dumps, replicas
Newest-first listingsDirectory scanRedis minute-index, O(limit)ORDER BY … LIMIT, O(log n)
Sweet spotLocal runs, CIFat JSON snapshots, S3-native infraHundreds of millions of candles
Choose this variant when you want S3-grade durability and zero schema management, but a full DBMS would be overkill.

Key Features

16 Persist Adapters

Full coverage of the backtest-kit IPersist contract — candles, signals, risk, logs, notifications, memory, sessions, and more.

Inverted Timestamp Keys

Object keys embed an inverted timestamp so lexicographic S3 listing is already newest-first — no sort step needed.

Redis Time Index

One Redis SET per minute keeps newest-first listings at O(limit) for Log, Notification, and Storage entities.

Cold-Index Fallback

If Redis is flushed, listings fall back to the bucket LIST and automatically re-warm the index on read.

Idempotent Upserts

Deterministic object keys mean every write is a pure PUT — no read-before-write races, no duplicate conflicts.

Docker Compose

Separate Compose files for MinIO and Redis let you mix local and containerized infrastructure freely.

Get Started

1

Start MinIO and Redis

Launch both services with Docker Compose:
docker-compose -f docker/minio/docker-compose.yaml up -d
docker-compose -f docker/redis/docker-compose.yaml up -d
2

Configure your environment

Copy .env.example to .env and set your MinIO and Redis credentials:
cp .env.example .env
3

Build and run a backtest

npm run start -- --entry --backtest --ui ./build/index.cjs
4

Open the web UI

Navigate to http://localhost:60050 to view the backtest results in the built-in web UI.
For a fully containerized deploy — including the backtest-kit runner itself — see the Full Docker Deployment guide.

Build docs developers (and LLMs) love