← Command view
CRYPTO · 24/7 · PAPER

Crypto Momentum Suite

Always-on momentum bots scanning and executing across BTC, ETH, and SOL — sized by volatility, monitored around the clock.

◇ SIMULATED PAPER TRADING — demonstration only, not financial advice.
View source — prometheus-algo-trader
Equity
—
Total Return
—
Today
—
Open Positions
—
Uptime
—
What it does

The job, in plain English

This system runs continuously, watching price and volume action across major crypto assets. When conditions line up, it opens a position sized to current volatility, then manages the exit automatically — no manual intervention, no emotion.

Built to run headless and unsupervised: if a process dies it restarts itself, it recovers cleanly after a crash, and it reports its state on an interval so I always know what it is doing.

How it runs

Architecture

Runtime: a Python service running an async scan/execute loop, deployed as a systemd job on a Linux VM so it runs 24/7 with the machine headless.

Data & execution: live market data in, orders routed to an Alpaca paper account out. State and history persisted to SQLite.

Resilience: a watchdog auto-restarts on failure, with crash recovery and a remote kill/pause control.

Telemetry: writes a stats.json snapshot every ~60s (the data this page reads) and pushes alerts to Telegram.

PythonasyncioAlpaca Crypto APISQLitesystemdTelegram Bot API
Guardrails

Rules & risk controls

  • Per-position risk capped as a fixed % of equity
  • Portfolio-level exposure ceiling across all open trades
  • Position size scaled to recent volatility
  • Automated stop / exit logic on every position
  • Global kill switch + remote pause
  • No leverage in the paper configuration
Under the hood

Illustrative structure

The shape of the code — enough to show how it is engineered, with the actual strategy logic redacted. The edge stays private.

  crypto_suite.py
# crypto_suite.py — illustrative structure (strategy logic redacted)
async def run_cycle(assets):
    for sym in assets:
        bar = await data.latest(sym)
        # --- proprietary momentum scoring: REDACTED ---
        signal = strategy.score(bar)          # internal
        if signal.enter and risk.ok(sym):
            size = risk.size_by_vol(sym, equity)   # vol-scaled
            await broker.submit(sym, size, "buy")   # Alpaca paper
        manage_open_positions(sym)            # auto exits
    telemetry.write("data/stats.json")        # this page reads it