sha256:9f96d43e4f992aef48d44fffb9cc520f6c7b42bdc39a95fb0c926ec14691b681
Last pushed
2 months by devslaveux
Type
Compose
Manifest digest
sha256:9f96d43e4f992aef48d44fffb9cc520f6c7b42bdc39a95fb0c926ec14691b681
# KalshiBot5k — one-command deploy (OCI artifact, no files to ship).
#
# Publish (maintainer, after ./publish.sh pushes the images):
# docker compose -f dist/docker-compose.yml publish -y --with-env devslaveux/kbot-stack:latest
#
# Run on ANY machine (after `docker login -u devslaveux` with a read-only token):
# docker compose -f oci://docker.io/devslaveux/kbot-stack:latest up -d
# -> open http://localhost:8080 and install your Kalshi key in Settings.
#
# Settings + credentials + trade data persist in named volumes (kbot-config, kbot-data) — there
# are NO host files to copy. The `environment:` block is the baked default config (safe: demo +
# dry-run + paused); anything you save in the dashboard is written to the volume and overrides it.
name: kalshibot5k
services:
backend:
image: devslaveux/kbot-backend:v3
pull_policy: always
environment:
TZ: UTC
# settings (.env) + private key live in the persisted volume; the dashboard writes them
KBOT_ENV_FILE: /app/config/.env
KALSHI_PRIVATE_KEY_PATH: /app/config/kalshi_private_key.pem
# --- safe defaults for a fresh deploy (dashboard-saved values override these) ---
KALSHI_ENV: demo
DRY_RUN: "true"
START_PAUSED: "true"
RESET_ON_START: "false"
LOSS_CAP_ENABLED: "true"
MAX_DAILY_LOSS_DOLLARS: "15.0"
MAX_CONCURRENT_POSITIONS: "10"
# --- churned micro-cashout strategy ---
STRATEGY_MODE: scalp
SCALP_MAKER: "true"
SCALP_TAKER_ENTRY: "true" # hybrid: buy in immediately (no adverse selection) + fee-free maker TP
SCALP_NO_OPPOSING: "true" # never hold YES + NO at once across the correlated crypto book
SCALP_SIGNAL_MODE: recent15m
SCALP_RECENT_CLOSES_N: "3"
SCALP_PROFIT_TARGET_CENTS: "6"
SCALP_STOP_ENABLED: "true"
SCALP_MAX_ENTRIES_PER_WINDOW: "3"
SCALP_MIN_ENTRY_MINS_LEFT: "5"
SCALP_CONTRACTS_15M: "1"
SCALP_CONTRACTS_1H: "2"
PRICE_MIN_CENTS: "40"
PRICE_MAX_CENTS: "60"
SCALP_MAX_SPREAD_CENTS: "6"
SCALP_FORCE_EXIT_MINS: "2.0"
SCALP_MAX_HOLD_SEC: "6600" # must exceed SMART_AGE_TIGHTEN_SEC (90) or the age-tightened
# stop is unreachable (near-close gating skips the smart branch)
SCALP_ENTRY_FRAC: "1.0"
SCALP_STAGGER_SEC: "5.0"
STOP_CHECK_INTERVAL_SECONDS: "0.25"
SCAN_INTERVAL_SECONDS: "4"
ONE_POSITION_PER_EVENT: "true"
WATCH_SERIES: KXBTC,KXETH,KXSOL,KXXRP,KXDOGE,KXBTC15M,KXETH15M,KXSOL15M,KXXRP15M,KXDOGE15M
DISCOVERY_MODE: hybrid
DISCOVERY_CATEGORIES: Crypto
MIN_VOLUME: "50"
volumes:
- kbot-config:/app/config # .env + private key (dashboard-managed; persisted)
- kbot-data:/app/data # trade/state files (persisted)
ports:
- "8000:8000"
restart: unless-stopped
dashboard:
image: devslaveux/kbot-dashboard:v3
pull_policy: always
ports:
- "8080:80" # open http://localhost:8080
depends_on:
- backend
restart: unless-stopped
volumes:
kbot-config:
kbot-data:
docker compose -f oci://devslaveux/kbot-stack:v3 upUse the above command to pull and run the Compose file. Learn more.