BTC Trio Confluence

A three-timeframe decision framework for BTC. The 1h decides whether you may trade at all, the 15m decides whether momentum has turned, the 5m decides the exact bar. If any layer disagrees, the answer is flat.

Finance & Tax Trend following Multi-timeframe Python · stdlib only Apache-2.0

Why split one decision across three timeframes

A single-timeframe breakout system has to choose between two bad options. Tune it tight enough to catch a move early and it drowns in false positives. Tune it loose enough to filter noise and it enters after the move is over. Splitting the decision lets each layer be tuned for the one question it is actually good at — and, just as importantly, it makes the failure legible. You can always say which layer said no.

LAYER 1 · 1H
Regime filter
Uptrend intact, but currently cheap. Stops the framework from buying an uptrend that is already extended.
LAYER 2 · 15M
Confirmation
Momentum actually turned — either an RSI cross or a reclaim of the fast EMA. Filters one-bar spikes.
LAYER 3 · 5M
Trigger
Fresh cross of the fast EMA only. Prevents entering ten bars into a move that already happened.

What you get

Measured selectivity

Replayed over 2,000 real BTCUSDT 5m bars (Binance archive, September 2026) with the shipped placeholder parameters:

ActionBarsShare
long40.20%
short00.00% (disabled by default)
flat1,99699.80%

Of the 1,996 flat bars, the regime layer blocked 1,212, the confirmation layer 623, and the trigger layer 161. Every gate is doing work rather than being decorative.

This is a signal-frequency measurement, not a performance claim. A low fire rate means the framework is selective. It says nothing about whether the signals it does emit are profitable. Reproduce it yourself before relying on it.

Honest scope

What this skill ships is the mechanism: three layers, three jobs, one decision. What it deliberately does not ship is a tuned parameter set. The thresholds in the package are round placeholder numbers chosen so the code runs, and they are labelled as such everywhere they appear.

That is a deliberate choice, not an omission. Parameters calibrated on one market regime fail exactly when that regime ends, and inherited parameters hide that failure from you. Calibrating is the work — references/params-template.md walks through it, including the 70/30 out-of-sample split that most people skip and that invalidates most backtests.

Requirements

Limitations

Not investment advice, not discretionary portfolio management, no profit guarantee, no custody of funds. Licensed Apache-2.0.