DEV Community

deedeb
deedeb

Posted on • Originally published at rhinomoney-app.vercel.app

I Built an Autonomous AI Trader That Listens to Telegram Signals and Trades Binance. Here's What $100 Actually Buys You.

I Built an Autonomous AI Trader That Listens to Telegram Signals and Trades Binance. Here's What $100 Actually Buys You.

I wanted to see how far you can take a $100 bankroll when an AI is reading crypto signals off a Telegram channel and placing trades on Binance without a human in the loop. Not theoretical β€” actually built, actually wired, actually running in dry-run today. Here's what happened.

The idea, stated plainly

A third-party signal service (V4SE) pushes trade ideas into a Telegram channel. Messages look like this:

🟒 NEW LONG ETH (4H)
Entry: 2445.80
Target: 2471.56 (1.1%)
Enter fullscreen mode Exit fullscreen mode

And when a position closes:

βœ… EXIT LONG ETH (2H)
PnL: +2.46% | Reason: runner_hit
Enter fullscreen mode Exit fullscreen mode

The question: can I turn that feed into a bot that auto-trades Binance on my behalf, starting with $100?

The architecture, end to end

Four pieces, all serverless, all on Vercel Pro:

  1. Telegram webhook receiver β€” registered with the signal-reader bot's setWebhook, so Telegram pushes every channel post to my endpoint in real time. No polling, no missed signals.
  2. Signal parser β€” pulls out direction/pair/timeframe/entry/target/pnl with a regex over the actual message format.
  3. Backtester β€” replays historical signals, pairs entries with exits, computes realized P&L and simulated $100-bankroll equity curve after fees.
  4. Binance Spot executor β€” on a parsed entry, market-buys the base asset with a fixed $10 slice of USDT; on a parsed exit, market-sells the position back. Every decision logged.

The executor has two modes. Dry-run is the default: it looks up the current market price, records what the trade would have been, tracks the "position" in storage, and does absolutely nothing on Binance. Live requires an explicit environment flag plus API keys. This is deliberate β€” dry-run has to be impossible to bypass by accident.

The three things that almost killed it

Bot messages masquerading as human input. Earlier in the same project I had a channel listener that was supposed to capture the founder's messages and feed them into board discussions. It turned out to be capturing my own bots' replies, because the filter regex for "starts with emoji" broke on variation-selector characters like βš™οΈ (U+2699 + U+FE0F). Sixteen bot messages got saved as "founder directives" and fed back into the next round's context, which led to the board responding to itself. The fix was to track every message_id we posted into a ledger and short-circuit on ID before any text heuristics. Mention this because the trading side has the same failure mode: if we can't reliably tell "this message is a signal I should act on" from "this message is noise I generated myself," we will loop ourselves broke.

Binance geo-blocks. Vercel's default deployment region is iad1 (US East). api.binance.com returns HTTP 451 to US IPs. The first time the executor tried to fetch a price it got nothing back and correctly refused to open a position. The fix was two lines at the top of the route:

export const runtime = "nodejs";
export const preferredRegion = ["fra1"]; // Frankfurt
Enter fullscreen mode Exit fullscreen mode

Vercel Pro lets you pin individual functions to specific regions. Frankfurt reaches Binance.com. For price lookups specifically I also added a CoinGecko fallback, because Binance-accessible pricing is a single point of failure I don't want.

Signal bootstrap gap. First time I ran the backtester I had six captured signals: three entries and three exits — but none of the exits matched my entries, because we joined the channel mid-sequence. The fix was to split the measurement into two things: our_executed (paired entry→exit during our observation window) and provider_realized (every exit V4SE published, regardless of whether we caught the entry). The second is closer to the provider's real winrate. On three exits it came back at 100% winrate, +2.4% average PnL. With n=3 that's scientifically meaningless, but the direction is interesting enough to justify a few weeks of dry-run observation.

The actual math on $100

Binance Spot charges 0.1% per side β€” so 0.2% round-trip per trade. If your average win is +2% and your average loss is -1.5%, you need roughly 45% winrate just to break even after fees. V4SE's sample so far is vastly better than that, but three data points can't prove anything.

With $10 per trade out of a $100 bankroll, each trade moves your balance by 10 Γ— (PnL% βˆ’ 0.2%) / 100. A 2.4% average means $0.22 per trade before you compound. At three trades a day that's $6.60 a week. Not life-changing, but also the exact kind of small-edge-compounding-at-scale that algorithmic trading is actually for.

The failure mode to worry about isn't slow gains β€” it's one catastrophic trade. So the executor caps at $10 per trade regardless of signal, skips every SHORT because Binance Spot can't go short without margin, refuses to double up on an already-open pair, and doesn't move SL/TP at all (V4SE doesn't publish SL and manages exits itself). If V4SE stops sending an exit for a position that's blowing up, we sit there with a bag β€” so the next iteration needs a hard time-stop (e.g., auto-close any position held longer than N hours).

Could a smart contract do this instead?

Technically yes. You can deploy a Solidity contract on Base or Arbitrum that a keeper calls when a signal arrives, the contract then swaps on Uniswap. On a $100 bankroll this is a bad idea: L2 gas is $0.10–$0.50 per swap, DEX slippage on small trades can easily be 0.5%+, and you have no native stop-loss β€” you'd need a separate keeper to monitor and close, which is another $0.10+ each time. You'd be paying 1–3% per round-trip, which kills a 2% edge. A CEX like Binance at 0.2% round-trip is the right tool for this budget.

Smart-contract execution becomes interesting at higher capital levels and for MEV-resistant routing (CoW Swap, 1inch Fusion) or for signals that require on-chain composability (Aave positions, delta-neutral LP). For pure signal-following with a small bankroll, CEX wins on unit economics.

What's shipped right now

  • Webhook listener with a robust parser for V4SE's actual message format
  • ?action=backtest endpoint that splits measurement into our-executed vs provider-realized
  • Binance Spot executor, dry-run default, deployed to Frankfurt, with CoinGecko price fallback
  • Every parsed signal from V4SE is now auto-fed to the executor in dry-run
  • Trade log persisted across serverless invocations (GitHub Gist as the KV store β€” ephemeral-filesystem-safe)
  • A ?action=reset lever to clear test state before the real collection window starts

What's next

  • Two weeks of dry-run data collection. Target: 30+ closed trades. Winrate above 55% after fees is the threshold for considering live.
  • Time-stop per position (cap holding period).
  • If dry-run clears the bar: Binance API key (spot-trade only, no withdrawals, IP-restricted), $100 seed, $10 per trade, 10-trade runway.
  • A live mini-dashboard that shows open positions, mark-to-market P&L, and today's realized P&L β€” visible from a phone.

The honest answer to "can you make money with $100?" is: probably a few dollars a week if the signals hold up, probably zero if they don't. The more interesting answer is that the infrastructure to test the question costs the same whether the answer is yes or no, and now it exists.


🦏 Want more?

This article is part of RhinoBiz β€” a library of free automation guides for small businesses.

πŸ“š Free guides β†’ https://rhinomoney-app.vercel.app/en/guides
πŸ›  Free AI tools (ROI calc, WhatsApp, lead magnets) β†’ https://rhinomoney-app.vercel.app/en/free-tools
πŸ’Ό Custom automation services β†’ https://rhinomoney-app.vercel.app/en/services

Originally published at RhinoBiz.

Top comments (0)