Documentation

User Guide

Setup, strategy, and troubleshooting for Battalion.

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 crypto binary markets. Each market resolves YES or NO based on whether the asset's price is above its market-open strike at the close of the window. Battalion currently uses a late-window directional strategy: it waits until the final minutes, buys the leading side only when price and strike-distance filters agree, 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)

  1. Sign up at dotsena.com — free 14-day trial, no card required
  2. Create a Kalshi API key at kalshi.com/account/profile → API Keys → New Key
  3. Paste the key + private PEM into the Battalion API Keys tab and Save
  4. Adjust risk settings in the Risk tab (or pick a preset)
  5. Choose Dry Run or Live in the API Keys tab, then toggle Bot ON

The scanner starts watching the live Kalshi crypto markets immediately. Trades fire only when the late-window 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 ProfileAPI 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 .pem file 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 to the API Keys tab and choose your execution mode:

  • Dry Run — tracks signals without placing real Kalshi orders. This is the default for new users.
  • Live — places real Kalshi orders through your saved API key.

Then click the yellow enable button.

The bot is now live. You'll see:

  • Bot Status: Active — Trading 24/7
  • Live Scanner: market cards pulsing through, showing current prices, open positions, and strike-filtered signals

What you'll see on the dashboard

Overview tab

  • Live Scanner — the bot scans live crypto markets every few seconds. Each card shows current YES/NO prices, open position state, and recent performance for 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
  • Choose Dry Run or Live execution mode
  • 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 ($29.99/month) before trial ends
  • Manage billing via Stripe Customer Portal

How the bot trades

Entry rules

The bot trades a single, simple late-window strategy:

  1. Watch the final minutes of each 15-minute Kalshi crypto market
  2. Identify the leading side priced in the configured entry band
  3. Check the market-open strike against current spot price
  4. LONG = buy YES only when spot is above strike and the YES side is leading
  5. SHORT = buy NO only when spot is below strike and the NO side is leading
  6. Skip if the market is too early, too late, outside the entry band, missing strike data, or too far from the strike

The current production setup is tuned around the final 1 to 4 minutes before expiry, with leading-side entries in the 82¢ to 95¢ band and a tight strike-distance filter. Outside those rules, 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:

  1. On Telegram, search for @userinfobot and send /start
  2. Copy the numeric ID it returns
  3. Paste into the Telegram Chat ID field on the API Keys tab
  4. 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 is Dry Run mode? Dry Run mode lets you monitor signals without placing real Kalshi orders. Switch to Live only when you are ready for the bot to trade with real funds.

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 the market is in the late window, the leading side is in the configured entry band, and spot is on the correct side of the strike without being too far away. 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


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.