The Setup: What I'm Actually Running
Strategy: USDJPY momentum + seasonal model Experiment size: SGD 200 per signal Go-live: December 2024 January 2026 P&L: -$2.26 USD (2 trades: 1 win, 1 loss)Yes, January was slightly negative. That's real trading โ not every month is green. The important part: the system executed exactly as designed, risk per trade stayed within limits, and I didn't blow up.
Why IB for a Systematic Strategy
I evaluated 4 brokers before going live on IB: OANDA, Saxo, FXCM, and Interactive Brokers. IB won on three criteria:
1. API quality: IB's TWS API, accessed via the Pythonib_insync library, is the gold standard for retail algo trading. It's not pretty โ the official docs feel like they were written in 2015 โ but it works reliably. I wrote a complete guide to the IB Python API if you want to see what building a live system actually looks like.
2. Cost: IB charges 0.20 basis points (0.002%) of trade value on FX spot, with a minimum of $2.00 per order. For a $50,000 USDJPY trade, that's $1.00 in commission โ often hitting the $2 minimum instead. On OANDA or Saxo, the spread alone would cost more than IB's combined spread + commission. Over 20-30 trades per year, this compounds meaningfully.
3. Custody: IB is an SIPC-member US broker, publicly traded on NASDAQ (IBKR). For a strategy running 24/7 with automation, I want the broker to still be there when I wake up. IB has been around since 1978 and manages over $400 billion in client assets. That's a different risk profile than a 3-year-old fintech broker.
4. Product breadth: IB gives access to 150+ markets in 34 countries โ stocks, options, futures, bonds, FX, and more. Even though I'm only trading USDJPY now, having the option to add equity positions or futures without opening another account matters for long-term strategy expansion.
The Real Python Setup

My trading daemon connects to IB Gateway (not TWS โ it's lighter, more stable for headless servers). The core connection:
from ib_insync import IB, Forex, MarketOrder
ib = IB()
ib.connect('127.0.0.1', 4001, clientId=1)
# USDJPY contract
forex = Forex('USDJPY')
ib.qualifyContracts(forex)
# Market order for signals
order = MarketOrder('BUY', 50000) # 50k base
trade = ib.placeOrder(forex, order)
The daemon runs as a systemd service, checks signals every 60 seconds, and executes when conditions are met. Uptime since December: 99.2% (one restart for IB Gateway 2FA refresh).
For more detail on the actual strategy code โ including signal generation, position sizing, and monthly drawdown limits โ see the IB Python momentum strategy walkthrough.
Reporting automation: IB's Flex Query system lets you pull detailed trade reports programmatically. I use this to generate weekly P&L summaries without logging into TWS. See our Flex Query + Python guide for the setup.The 2FA Problem (and My Workaround)
This is IB's biggest pain point for automated trading. Every time IB Gateway reconnects โ after a restart, weekly maintenance, or timeout โ you need to authenticate on your phone via IB Key.
My workaround: I run a monitoring cron that Telegram-alerts me when the connection drops. I have 15 minutes before the strategy would miss a signal window. In practice, scheduled maintenance is weekly (Saturdays), and I've never missed a trade because of it.
Is this annoying? Yes. Is it a dealbreaker? No. It's the cost of using an institutional broker at retail prices. For a deeper dive into common IB Key issues and solutions, see our 2FA troubleshooting guide.
Real Fee Comparison: USDJPY Trade
| Broker | Spread (typical) | Commission | Total on $50k notional | Notes |
|---|---|---|---|---|
| Interactive Brokers | 0.2-0.5 pips | $2.00 min | ~$3.00-$4.50 | Raw spread + commission |
| OANDA | 0.8-1.2 pips | $0 | ~$4.00-$6.00 | Spread-only model |
| Saxo Bank | 0.7-1.0 pips | ~$1.50 | ~$5.00-$6.50 | Spread + small commission |
| IG Group | 0.6-0.9 pips | $0 | ~$3.00-$4.50 | Spread-only model |
| FXCM | 0.5-0.8 pips | ~$0.40 | ~$2.90-$4.40 | Low spread + commission |
January 2026: Month-by-Month Reality
My strategy trades in February, June, and October (seasonal long months) and July (seasonal short, when momentum aligns). January was a 'monitor only' month โ but I had two legacy positions close.
Both trades from the December entry:
- Trade 1: Long USDJPY @ 152.1 โ exit @ 155.4 โ Win
- Trade 2: Long USDJPY @ 153.8 โ exit @ 153.2 โ Loss (hit monthly stop)
This kind of transparency โ showing losing months, not just cherry-picked winners โ is why I built this site. If a trading review only shows green numbers, walk away.
Like what you're reading? Try it yourself โ this link supports ChartedTrader at no cost to you.
Open an IBKR Account โ Earn up to $1,000 in IBKR Stock โTWS vs IBKR Desktop vs Web Portal
IB offers three interfaces, each with different strengths:
| Interface | Best For | Pain Points |
|---|---|---|
| TWS (Trader Workstation) | Full-featured trading, API gateway | Complex UI, Java-based, slow startup |
| IBKR Desktop | Modern charting, heatmaps, portfolio view | Newer, some features still missing |
| Web Portal | Account management, reports, simple trades | Limited charting, no API |
| IB Gateway | API-only headless connection | No UI, requires TWS/Desktop for manual trades |
Market Data: What You Actually Need
IB's market data subscription model is confusing. You can subscribe to dozens of data feeds, each at $1-$15/month. Most retail traders only need 1-2.
For USDJPY trading, I use the "Ideal FX" feed โ included free with your account. No additional subscription needed for major currency pairs.
For US stocks, you need at least the "US Securities Snapshot & Futures Value Bundle" (~$10/mo). We broke down all the options in our IB market data subscription guide.
The Referral Program
IB pays up to $200 cash for each friend you refer, and your friend gets up to $1,000 in IBKR stock. This is one of the more generous referral programs among brokers โ no trade volume requirements, just account opening and funding. Details in our IBKR referral program breakdown.
AI-Assisted Trading on IB
The AI trading space is evolving fast. IB recently launched Ask IBKR, an AI assistant for portfolio analysis. On the open-source side, tools like OpenClaw + Xerolite let you connect AI agents to IB for semi-autonomous trading.
My own setup uses an AI agent for signal generation and logging, but execution is still rule-based through the Python daemon. Fully autonomous AI trading on IB is possible but requires careful security practices โ especially around API key management and position limits.
Who IB Is Actually For
Use IB if:- You're running automated strategies via API (this is IB's primary advantage)
- You're trading FX, futures, or options with meaningful size
- You're comfortable with a technical setup and occasional manual authentication
- You want the lowest execution costs at retail level
- You need multi-asset access across global markets
- You want a clean mobile UI (IB's is genuinely bad โ they're improving, but slowly)
- You want 24/7 automation with zero manual intervention (the 2FA requirement rules this out)
- You're trading mostly crypto (use OKX or Hyperliquid instead)
- You're a complete beginner who wants guided onboarding (try Robinhood or eToro)
> New to IBKR? Open an account through our link and get up to $1,000 in free IBKR stock (NASDAQ: IBKR). No catch โ it's part of their official referral program.
---
*This article contains affiliate links. If you sign up through our links, we may earn a commission at no extra cost to you.*
---
Just Signed Up? Here's What to Do Next
Interactive Brokers: Follow our IBKR setup guide โ application, funding (you can get up to $1,000 in IBKR stock), and your first trade.---