Vigil.
Most trading automation is too simple to be useful or too complex to maintain. Vigil was designed around one constraint: if something breaks at 3 AM, you find and fix it in minutes. The whole system is a single Python process, five modular strategies feeding one orchestrator that decides every 60 seconds.
The design problem
Complexity is the enemy of lean operations.
Most algorithmic trading frameworks are built for large teams, microservices, message queues, container orchestration that needs specialists to debug under pressure. For a lean desk, that complexity isn’t a feature. It’s a liability.
The guiding principle: every file has one job, and you should be able to describe what it does in one sentence. If you can’t, it’s doing too much and needs splitting.
The result is a system a lean team can fully understand, modify, and debug from memory, because the whole architecture fits in working memory at once.
Three design rules
Every module is a Python file
No Django, no FastAPI, no microservices, no Kubernetes. Each module is a .py file with a class. If you can read Python, you can read the whole system.
All modules speak dictionaries
Every piece of data is a Python dict with a defined schema. No custom objects, no protobuf, no serialisation layers.
Skills never talk to each other
Strategies only talk to the orchestrator. You can delete, add, or rewrite any strategy without touching another file.
Architecture
Brain, eyes, hands. Cleanly separated.
The orchestrator runs one complete cycle every 60 seconds: classify the market, collect data, run all five strategies, pass each proposal to the risk manager, execute what’s approved, log everything. Then wait and repeat. That heartbeat never changes.
- 1
Market State Classification
Classifies current conditions as trending, ranging, or volatile and passes that to all five strategies, so each adjusts without running its own analysis.
- 2
Data Collection
OHLCV via WebSocket streams, funding rates across exchanges, on-chain whale movement, and sentiment feeds, all pulled fresh each cycle.
- 3
Strategy Execution
All five strategies run on the current state and data. Each returns a trade proposal or nothing. Strategies never know about each other.
- 4
Risk Management
Every proposal passes the risk manager, position sizing, exposure limits, open positions. The sentiment veto can block any proposal regardless of signal strength.
- 5
Execution & Logging
Approved trades execute via ccxt. Every trade is logged with full context, strategy, market state, risk evaluation, outcome, tracked per strategy.
The five strategies
Strategy 1
Funding Rate Arbitrage
Captures funding-rate differentials across exchanges with neutral market exposure.
Strategy 2
Smart Money Tracking
Monitors on-chain whale movement and exchange flows; coordinated moves generate directional signals.
Strategy 3
Momentum & Breakout
Detects breakouts from consolidation with volume confirmation. Only active in trending states.
Strategy 4
Mean Reversion
Trades overextension back to the mean. Only active in ranging states, the inverse of strategy 3.
Strategy 5, Veto
Sentiment Filter
Not a signal, a blocking layer. At extreme fear/greed or liquidation thresholds, it vetoes every proposal.
Technology
25 files. One job each.
Vigil runs as a single Python process on a single VPS, a deliberate constraint, not a limitation. No inter-process communication, no network calls between modules. When something fails, you look in one place.
The Telegram bot is the entire control interface: status, position queries, and a kill switch that halts the orchestrator mid-cycle, all from a phone, no SSH required.
Why no framework?
Frameworks are for teams and APIs. Vigil has one operator and no external API surface. Every framework you add is another thing to learn, maintain, and debug under pressure.
What we learned
Architecture decisions have long shadows.
Simplicity is a competitive advantage for lean operations. Every framework and abstraction layer is technical debt that arrives at the worst possible time. Vigil is the simplest thing that could work correctly.
Independent modules are worth the upfront planning. Because strategies never talk directly, adding or removing one took under an hour instead of tracing dependencies across the system.
A veto layer is more valuable than another signal layer. A sixth signal adds noise. A blocking filter that prevents execution under adverse conditions is real risk reduction.
Mobile control matters more than a dashboard. A terminal dashboard you can't reach without a laptop isn't a control interface. The Telegram kill switch halts the system from anywhere with signal.
Need a monitoring system built for your operation?
Vigil's pattern, a central orchestrator with modular, pluggable strategies, applies anywhere you monitor signals, apply rules, and act automatically. Tell us the problem.