Battalion User Guide
A 24/7 algorithmic trading bot for Kalshi 15-minute crypto prediction markets. This guide walks you through setup, configuration, and what to expect once the bot is running.
What Battalion does
Battalion automatically places trades on Kalshi's 15-minute BTC, ETH, SOL, XRP, BNB, and DOGE binary markets. Each market resolves YES or NO based on whether the asset's price is above its strike at the close of the window. Battalion uses an EMA crossover signal on Binance 15-minute candles to decide direction, then enters within a strict price and timing band, holds to expiry, and resolves at $1 per winning contract or $0 per losing contract.
You connect your own Kalshi account via API key. Battalion never holds your funds — all balances stay on Kalshi.
Quick start (5 steps)
- Sign up at dotsena.com — free 14-day trial, no card required
- Create a Kalshi API key at kalshi.com/account/profile → API Keys → New Key
- Paste the key + private PEM into the Battalion API Keys tab and Save
- Adjust risk settings in the Risk tab (or pick a preset)
- Toggle Bot ON in the Overview tab
The scanner starts watching all 6 markets immediately. Trades will fire when the strategy conditions match.
Step-by-step setup
1. Sign up
- Go to dotsena.com and click Start Free 14-Day Trial
- Enter email and password (or sign in with Google)
- Confirm your email if prompted
- You'll land on the Dashboard
2. Get your Kalshi API key
You'll need an active Kalshi account with funds. If you don't have one yet:
- Sign up at kalshi.com
- Verify your identity (KYC)
- Deposit USD via ACH
To create the API key:
- Log in to Kalshi
- Go to Profile → API Keys (or visit kalshi.com/account/profile/api)
- Click Create New API Key
- Copy the Key ID (UUID format —
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) - Download the Private Key PEM file (this is shown only once — save it)
⚠️ Treat the PEM like a password. Anyone who has it can place trades on your account.
3. Connect to Battalion
- On the dashboard, click the API Keys tab
- API Key ID → paste the UUID
- Private Key (PEM) → open the downloaded
.pemfile in any text editor and paste the entire contents (including the-----BEGIN RSA PRIVATE KEY-----and-----END RSA PRIVATE KEY-----lines) - Telegram Chat ID (optional) → if you want trade alerts on Telegram, message @userinfobot on Telegram and copy your chat ID
- Click Save
You should see "● Saved" badges next to each field once stored. The PEM is encrypted at rest and never displayed back to you.
4. Configure risk
Go to the Risk tab. You have two options:
Use a preset:
- Conservative — $1 per trade, $5 daily max loss, 5 trades/day
- Standard — $5 per trade, $25 daily max loss, 15 trades/day
- Aggressive — $20 per trade, $100 daily max loss, 30 trades/day
Or customize:
- Size Per Trade — dollar amount risked per entry. Lower = safer.
- Daily Max Loss — bot stops trading for the day if losses exceed this. Hard stop.
- Daily Max Trades — bot stops after this many entries, even if not losing.
- Contracts Per Trade — number of Kalshi contracts. 1 contract = $1 max win. Higher = bigger swings.
The "Max daily exposure" calculator shows the worst-case dollar exposure given your settings.
Click Save Settings.
5. Enable the bot
Go back to the Overview tab. You'll see a yellow Enable Bot button. Click it.
The bot is now live. You'll see:
- Bot Status: Active — Trading 24/7
- Live Scanner: 6 market cards pulsing through, showing the current EMA signal for each asset
What you'll see on the dashboard
Overview tab
- Live Scanner — the bot scans BTC, ETH, SOL, XRP, BNB, DOGE every 3 seconds. Each card shows the current EMA signal (LONG / SHORT / NEUTRAL), confidence, and fair value estimate. Yellow dot = open position on that asset.
- Bot Status — green pulsing badge when running, orange "Paused" when off, yellow "No API Key" when keys aren't configured.
- Performance cards — Balance, Total Trades, Total PnL, Daily PnL, Wins, Losses, Win Rate, Win Streak. Refresh every 30 seconds.
- Recent Activity — last 10 settled trades with ticker, time, and PnL.
API Keys tab
- View masked API Key ID
- See "● Saved" status for the PEM
- Update keys at any time by pasting new values
- Reference for env var names (for advanced users)
Risk tab
- Sliders for the four risk parameters
- Quick presets
- Live exposure calculator
Subscription tab
- Current plan and trial status
- Upgrade to Pro ($49/month) before trial ends
- Manage billing via Stripe Customer Portal
How the bot trades
Entry rules
The bot trades a single, simple strategy across all 6 markets:
- Pull the last 120 Binance 15-minute candle closes for the asset
- Compute EMA9 and EMA21
- If EMA9 > EMA21 → look for a LONG entry (buy YES)
- If EMA9 < EMA21 → look for a SHORT entry (buy NO)
- If |EMA9 − EMA21| < $0.10 → skip (no clear trend)
The bot only enters between 5 and 10 minutes before the market expires, and only when the side it wants to buy is priced between 55¢ and 75¢. Outside that band, it skips.
Exit rules
- The bot holds every position to expiry. No take-profit, no stop-loss, no hedging.
- Winning side pays $1.00 per contract. Losing side pays $0.
- Settlement happens automatically on Kalshi.
Risk caps
The bot will stop trading for the rest of the day if any of these are hit:
- Total daily loss exceeds your Daily Max Loss setting
- Total daily trades reach your Daily Max Trades setting
- Global circuit breaker triggers (3 consecutive losing settlements)
Trading resumes the next UTC day.
Telegram alerts (optional)
If you set a Telegram Chat ID, you'll receive messages for:
- ✅ Trade entered (asset, ticker, direction, entry price, contracts)
- 🏁 Trade settled (W/L, PnL)
- ⛔ Bot blocked (daily loss cap, circuit breaker, etc.)
- ⚠️ System alerts (API errors, settlement issues)
To set this up:
- On Telegram, search for
@userinfobotand send/start - Copy the numeric ID it returns
- Paste into the Telegram Chat ID field on the API Keys tab
- Save
You also need to start a chat with the Battalion bot itself so it can message you (the bot username is shown in your welcome email).
FAQ
Does Battalion hold my money? No. All funds stay in your Kalshi account. Battalion only places API orders on your behalf using the key you provided.
Can Battalion withdraw funds? No. Kalshi API keys cannot initiate withdrawals — only place trades.
What happens during the trial? Full access for 14 days from signup. Bot trades normally. After day 14, the toggle locks until you subscribe.
Can I pause the bot? Yes — flip the toggle off any time. Open positions hold to expiry; no new entries.
What if I run out of Kalshi balance? Orders will fail and Battalion will skip them. Top up Kalshi and they'll resume.
Can I trade more than 1 contract at a time? Yes — adjust Contracts Per Trade in the Risk tab. Each contract is up to $1 risk.
What's the minimum Kalshi balance? Start with at least $20 if you're using Conservative settings, $100+ for Standard, $500+ for Aggressive.
Can I see exactly what the bot did? The Overview tab shows recent settled trades. For full audit, your Kalshi account history has every fill.
Does Battalion work outside trading hours? The strategy runs 24/7. Kalshi 15-minute crypto markets are open continuously.
What if I lose money? Trading involves risk. The bot has hard caps to limit downside, but every strategy has losing days. Past performance does not predict future results. Don't trade more than you can afford to lose.
How do I cancel? Subscription tab → Manage Billing → Cancel. Bot disables at end of current billing period.
Troubleshooting
"Could not save profile settings" Refresh the page. If it persists, your PEM may be malformed — re-download it from Kalshi and paste again. Make sure to include the BEGIN/END lines.
Bot says "Paused" after I clicked Enable Hard-refresh (Cmd+Shift+R / Ctrl+Shift+R). The badge usually updates within 30 seconds otherwise.
Live Scanner shows "Connecting…" forever The bot's market feed is briefly unavailable. Wait 1 minute. If still stuck, contact support.
No trades for hours This is normal. The bot only enters when EMA spread > $0.10 AND price is in the 55-75¢ band AND there's 5-10 min left in the window. Some windows have no setup. Check the Recent Activity log to see when it last fired.
Trade settled at a different price than I expected Kalshi sometimes auto-nets positions or has slippage between order accept and fill. Final settlement is from Kalshi's record, not Battalion's.
Support
- Email: support@dotsena.com
- Twitter: @dotsena
- Status page: status.dotsena.com
Battalion is software that places trades on your behalf. You are responsible for your account, your funds, and your tax reporting. We do not provide financial advice.