The Bot That Survived February
Help My Bot
Session #1 paper trading
01
What happened today
I didn't start this session with a bot. I started it with a question: is it actually possible to build a trading bot from scratch, with no prior experience in quantitative finance, without losing money in the process?
The answer, as of today, is: maybe. The bot is running. It's made one trade. It's up $3.58. I'm choosing to call that a win.
The session was long. We went from the basics — what is a trading pair, what is a limit order, what does the Binance API actually allow — all the way to a working paper trading system deployed on a Google Cloud VM in São Paulo. In between, there was a lot of calibration, a couple of conceptual mistakes I'm glad I caught before putting real money in, and one moment where I almost pushed a password to a public GitHub repository. Almost.
The bot is now running 24/7, monitored via a password-protected web dashboard, and configured to restart automatically if anything goes wrong. I didn't expect to get this far in a single session. Neither did the bot, probably.
02
Technical parameters
Entry conditions — all must be true simultaneously
- RSI < 45
- Price at or below Bollinger Band inferior × 1.005
- ATR current > ATR average (6-week rolling window)
- Volume current > 20-period average
- MM50 current > MM50 10 candles ago
- ATR current < ATR average × 1.7 (no spike)
Exit conditions — any one triggers the exit
- RSI > 70
- Price at or above Bollinger Band superior × 0.995
- Stop-loss: price 1.8% below entry
- ATR < 70% of average AND position negative
- ATR > ATR average × 1.7 (spike lock with open position)
Other parameters
- Timeframe: 30 minutes
- Pair: BTC/USDT
- Stop-loss: 1.8%
- Fee per cycle: 0.20% (Binance maker)
- Breakeven win rate: 52.6%
- Capital: $1,000 (simulated)
03
Numbers
Operations
1
Win rate
100%
Capital
$1,003.58
Result
+0.36%
04
What the data showed
The backtesting was the most revealing part of the session. Running the strategy over 6 weeks of BTC/USDT data produced 31 operations with a 64.5% win rate and a +8.77% net result. Promising — but I wanted to stress-test it.
When I extended the backtest to 12 weeks, the period included February 2026, when BTC dropped 34% in a matter of weeks. The result dropped to +4.16% — but it stayed positive. More importantly, the bot had almost no activity during the worst of the drawdown. The MM50 trend filter quietly kept it on the sidelines while the asset was in freefall.
That was the finding I needed. The bot doesn't beat the market in a bull run. But it also doesn't bleed out when everything collapses. For a first version, I'll take that.
05
What I decided
I decided to keep the MM50 trend filter as a permanent entry condition, even though it makes the bot significantly more conservative.
Without it, the bot opened 58 operations over 12 weeks but nearly broke even at +0.1%. With it, only 22 operations — but a 63.6% win rate and a cleaner +4.16%. The filter isn't reducing opportunities. It's removing the ones that were quietly destroying the results. Fewer trades, better trades. That's the trade I'm willing to make.
06
What's next
Run a 2-year backtest with simulated 6-week recalibration cycles to validate the strategy across full market regimes — not just the last three months.
07
Backlog snapshot
| Item | Status |
|---|---|
| Define strategy concept and parameters | done |
| Run 6-week backtesting | done |
| Run 12-week backtesting with stress test | done |
| Deploy paper trading bot to production | done |
| Build web dashboard with authentication | done |
| Run 2-year backtest with rolling recalibration | pending |
| Add Telegram notifications | pending |
| Expand to ETH/USDT and SOL/USDT | pending |
What should I do next?
Leave your comment below — all feedback welcome, technical or not.
Comentários
Postar um comentário