AI FX Bot Lab: Real Trading Experiments

Kimi | Japan FX Bot Lab

Can AI really trade forex? AI FX Bot Lab is a real-time experiment from Japan, where I build and test AI-assisted FX trading bots using MT5, Python, machine learning, and local LLM tools. I share live results, failures, risk lessons, and bot improvements from rule-based, AI-driven, and ML + LLM hybrid systems. Not financial advice. fxaibotlab.substack.com

  1. The Best Trade Was the One That Got Blocked: Four MT5 LLM Bots on June 15

    14h ago

    The Best Trade Was the One That Got Blocked: Four MT5 LLM Bots on June 15

    June 15, 2026Running log: Day 1Cumulative realized P/L: +282 yenEquity impact including open positions: +46 yen The portfolio finished green, but the most interesting part of the day was not the profit. It was the restraint. Four MT5 bots ended with +282 yen in realized P/L, yet open positions dragged -236 yen, leaving the equity impact at only +46 yen. That number made the day feel thinner than the win rate suggested. The cleanest lesson came from the logs. BoundSniper executed its TradingView signals cleanly, MLScore allowed one BUY but blocked other high-score candidates, and LLMBridgeTrader had one AI plan rejected because the proposed risk settings were invalid. The line that stuck with me was not a winning exit. It was the safety layer saying: sl_pips out of range: -12.34; reward/risk too low: -1.30. Bot Results ■ GateGrid AI +67 yenPair: GBPUSD-Closed trades: 8Record: 6W / 2LWin rate: 75.0%Gross profit: +461 yenGross loss: -394 yenPayoff ratio: 0.39Max closed loss: -264 yenFloating P/L: 0 yen ■ BoundSniper Bot +182 yenPair: USDJPY-Closed trades: 2Record: 2W / 0LWin rate: 100.0%Gross profit: +182 yenGross loss: 0 yenPayoff ratio: N/AMax closed loss: 0 yenFloating P/L: -34 yen ■ LLMBridgeTrader +33 yenPair: EURUSD-Closed trades: 2Record: 2W / 0LWin rate: 100.0%Gross profit: +33 yenGross loss: 0 yenPayoff ratio: N/AMax closed loss: 0 yenFloating P/L: -141 yen ■ MLScore GF-T4 GB 0 yenPair: GBPJPY-Closed trades: 0Record: 0W / 0LWin rate: N/AGross profit: 0 yenGross loss: 0 yenPayoff ratio: N/AMax closed loss: N/AFloating P/L: -61 yen ■ Total +282 yenClosed trades: 12Record: 10W / 2LWin rate: 83.3%Gross profit: +676 yenGross loss: -394 yenPayoff ratio: 0.34Max closed loss: -264 yenFloating P/L: -236 yenEquity impact: +46 yen Today’s Theme: Score Is Not Permission MLScore GF-T4 GB gave the day a sharper angle. Its guard settings were explicit: score threshold 80, max spread 20 points, max 4 new entries per day, and strategy-level entry limits. Then the live log showed a BUY with score 85.33 marked trade=done, while later candidates such as SELL score 96.24 and BUY score 84.32 were marked trade=blocked. That is a good kind of friction. A high score was not allowed to become an automatic order just because the number looked strong. LLMBridgeTrader showed a similar kind of guardrail, but from a different layer. The AI produced a confident-looking plan: Strong bullish trend with ADX and rising MACD, with signal BUY, action OPEN, confidence 85, and setup trend_follow. Then the validator killed it because sl_pips was negative and the reward/risk calculation was broken. I liked that more than I expected. A model can sound convincing, but the system still needs a boring rule that says no. Later, another LLMBridgeTrader plan did open a BUY: Oversold RSI 33 with bullish zone signal despite bearish trend, confidence 72, setup mean_reversion, SL 15 pips and TP 30 pips. That trade was still open at the report cut and showed -141 yen floating P/L. This is where the day stops being neat. The same bot had a safety layer strong enough to reject a bad AI plan, but the accepted plan still left the biggest floating wound of the day. Bot-by-Bot Analysis GateGrid AI did the most trading and carried the only closed losses. Six wins out of eight sounds comfortable, but the payoff ratio was only 0.39. The -264 yen loss made me stop for a second, because it outweighed several of the small wins. GateGrid’s design is built around not entering bad environments, using CatBoost and Ollama-style filters, but once a grid leg goes wrong, the loss profile still matters more than the headline win rate. BoundSniper Bot was the clean execution story. The monitor showed public health as OK, and the recent trade decisions were all marked Request executed. It opened a short, closed it, opened a long, closed it, and later opened another short that remained floating at -34 yen. Since this bot is not trying to predict the market itself, I read the day as a clean bridge between TradingView signals and MT5 execution. LLMBridgeTrader was the most revealing bot. Its realized result was 2W / 0L for +33 yen, but the open EURUSD position sat at -141 yen. The AI side did something right by having one bad plan blocked, yet the accepted mean-reversion BUY was still underwater at the cut. The uncomfortable question is not whether the AI can enter. It is whether the exit logic can stop a valid-looking idea from quietly overstaying. MLScore GF-T4 GB had no closed result, but its log was probably the most useful one for design review. A BUY score of 85.33 became a live trade, while higher-scoring or still-qualified signals were blocked. That feels annoying in the moment, but it is exactly the kind of behavior a real-money bot needs. The -61 yen floating loss is small, though I would not ignore it just because the realized P/L is zero. Summary The day ended green, but the strongest signal was restraint. The realized win rate was 83.3%, yet the payoff ratio was only 0.34 and the floating drag nearly erased the closed profit. The bots can win trades. The better question now is which guardrails deserve to be stricter, and which ones are already saving the account from trades that looked good on paper. This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  2. A Win Rate of 80% Still Lost Money: Four MT5 Bots Finished the Day at +3 Yen

    3d ago

    A Win Rate of 80% Still Lost Money: Four MT5 Bots Finished the Day at +3 Yen

    Conclusion Today’s combined result for the four MT5 auto-trading bots was +3 yen. On the surface, that is almost flat, and I paused for a second because the number looks too small to say much. But the inside of the day was not small at all. GateGrid AI finished at -304 yen. The other three bots absorbed that loss with a combined +307 yen, leaving the portfolio slightly positive. This was not a big winning day. It was a day that showed why I do not want to judge these bots by win rate alone. Series status: operation day not supplied / input-based cumulative P&L: +3 yen. Bot-by-bot results ■ GateGrid AI -304 yenRecord: 4W / 1LWin rate: 80.0%Gross profit: +197 yenGross loss: -501 yenPayoff ratio: 0.10Max loss: -501 yen ■ MLScore GF-T4 GB +189 yenRecord: 1W / 1LWin rate: 50.0%Gross profit: +202 yenGross loss: -13 yenPayoff ratio: 15.54Max loss: -13 yen ■ LLMBridgeTrader +32 yenRecord: confirmed trades onlyWin rate: not calculatedGross profit: +32 yenGross loss: unconfirmedPayoff ratio: not calculatedMax loss: unconfirmed ■ BoundSniper +86 yenRecord: aggregate result onlyWin rate: not calculatedGross profit: +86 yenGross loss: unconfirmedPayoff ratio: not calculatedMax loss: unconfirmed ■ Total +3 yenRecord: not comparable because reporting depth differs by botWin rate: not comparableGross profit: +517 yenGross loss: -514 yenPayoff ratio: not comparableMax loss: -501 yen Today’s theme The theme today is simple, but it hurts a bit: win rate lied. GateGrid AI won 4 out of 5 trades. An 80.0% win rate looks clean on paper. MLScore GF-T4 GB, on the other hand, went 1 win and 1 loss, only 50.0%. If I only looked at win rate, GateGrid would look like the better bot. The money said something else. GateGrid AI ended at -304 yen, while MLScore GF-T4 GB ended at +189 yen. The difference was not entry frequency. It was the shape of the exits: one bot let a single loss become too large, while the other kept the losing side almost harmless. The log also makes this day more interesting. MLScore printed: [2026-06-12 22:15:04] GBPJPY M15 | candidate=BUY decision=ENTER signal=BUY score=96.43 trade=done. Later, it also printed a high-score blocked signal: [2026-06-12 22:45:01] GBPJPY M15 | candidate=SELL decision=ENTER signal=SELL score=95.9 trade=blocked. That second line matters. The engine found a candidate, the score was high, but the guard did not let it through. Today, that kind of refusal may have been as valuable as the entry itself. GateGrid AI GateGrid AI ended at -304 yen. The four winning trades were +83 yen, +16 yen, +80 yen, and +18 yen. Total profit was +197 yen. That part was not bad. Then came the -501 yen loss, and I honestly stopped there for a moment. One losing trade erased all four wins and pushed the bot negative. This is the weak point of the day. GateGrid AI can take small profits, but today’s exit behavior did not protect the session. Average profit was 49.25 yen. The largest loss was -501 yen. That gap is too wide for an 80% win rate to rescue. The design of GateGrid AI is not just a plain grid. It combines CatBoost entry gating, local Ollama judgment, ATR checks, spread monitoring, session thresholds, and grid management. The idea is to avoid bad entries and build only when the environment is acceptable. But today’s issue was probably not the entry gate. It was the point where the bot should have stopped holding the pain. For the next iteration, I would look at loss containment before tuning entries. A time-based exit, a tighter grid-level drawdown stop, or a rule that prevents one position from destroying the whole day may matter more than trying to improve the already high hit rate. MLScore GF-T4 GB MLScore GF-T4 GB ended at +189 yen. The trade split was almost too clean: +202 yen and -13 yen. One win, one loss. A 50.0% win rate. And still, this was the best-shaped result of the day. The payoff ratio was 15.54. That is the number I care about here. The losing trade was kept tiny, while the winning trade had enough room to matter. This is what GateGrid AI did not do today. The score log supports that reading. A BUY with score 96.43 went through and was executed. Other SELL candidates with scores above 90 were blocked several times. I cannot say every blocked signal would have lost, but I can say the guard was active. It was not blindly following every high score. That is a good sign for live operation, because a score engine without refusal quickly becomes overconfident. LLMBridgeTrader LLMBridgeTrader ended at +32 yen on the confirmed result. It was not a large contribution, but on a day where GateGrid AI lost 304 yen, even +32 yen had a role. This bot is the one where I most want to keep watching the reasoning, not just the trade result. LLMBridgeTrader is designed to let the AI choose more than BUY, SELL, or NONE. It can decide OPEN, HOLD, CLOSE, REVERSE, and NONE. That means the important question is not only “did it enter correctly?” The better question is “did it know when to stop holding?” Today’s confirmed +32 yen is small, but the experiment remains valuable. Once the full OPEN / HOLD / CLOSE / REVERSE logs are reviewed trade by trade, the real story will be whether the AI’s exit reason matched the actual price behavior. That part still needs more evidence. BoundSniper BoundSniper ended at +86 yen. BoundSniper is different from the AI-heavy bots. It receives TradingView signals through a webhook and sends the corresponding orders to MT5. Its job is not to predict the market. Its job is to execute the signal path cleanly. The recent monitor showed OPEN_LONG and CLOSE_LONG events being executed, with Request executed appearing on both order send and position close. That is boring in the best possible way. On a live bot, boring execution is useful. Today, BoundSniper did not need to be the star. It just had to be different from GateGrid AI, and it was. That +86 yen helped turn a losing single-bot day into a barely positive portfolio day. Summary The total was only +3 yen, but the day gave me a clear read. GateGrid AI had the higher win rate and still lost. MLScore GF-T4 GB had the lower win rate and won because the loss stayed small. The next improvement target is not “more wins.” It is the size of the one bad loss. If GateGrid AI can reduce that -501 yen type of trade, the same 4W / 1L day could look completely different. Today was not a strong profit day. It was a useful warning disguised as a tiny green number. This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  3. Turning Red Days into Training Data: The June 11th AI Bot Trade

    4d ago

    Turning Red Days into Training Data: The June 11th AI Bot Trade

    Turning Red Days into Training Data: The June 11th AI Bot Test In today’s episode, we break down the June 11th live test of our four MT5 automated trading bots. The portfolio ended the session with a total realized loss of -1,295 JPY, representing a daily return of about -0.75%. But as we discuss in today’s podcast, in the world of machine learning, a losing day isn’t just a failure—it’s highly valuable, labeled training data. We dive into the completely different behaviors of each bot to uncover what went wrong and what went right: * GateGrid AI (GBPUSD): The only profitable bot of the day, securing a clean +279 JPY. It perfectly executed two short trades with zero losses, proving that its strict, multi-layered entry filtering works effectively to capture controlled profits. * BoundSniper (USDJPY): Finished at -282 JPY. With one win and one loss, it highlighted that while the MT5 execution layer is working, the upstream TradingView signal logic needs a better risk-to-reward balance. * LLMBridgeTrader (EURUSD): Ended at -283 JPY. Despite maintaining a 50% win rate across six trades, the size of the losses simply outweighed the wins. It clearly showed that while the AI can make winning decisions, its overall expectancy and risk-reward structure still require adjustment. * MLScore GF-T4 (GBPJPY): Took the hardest hit of the day at -1,009 JPY from two stopped-out trades. However, this provided the clearest and most valuable learning sample for our machine learning model. These clean losing patterns are exactly the feedback the model needs to analyze what market structures failed and improve its future predictions. The ultimate goal of this project isn’t to perfectly avoid losing days—that is impossible. The real goal is to build automated systems that record, analyze, and learn from them. Join us as we explore how we use a “data-rich” red day to build smarter trading bots! #FX #MT5 #AITrading #MachineLearning #AlgorithmicTrading #SystemTrading This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  4. Diversification Saved the Day: The Power of a Multi-Bot Portfolio [June 10th Trade]

    5d ago

    Diversification Saved the Day: The Power of a Multi-Bot Portfolio [June 10th Trade]

    In today’s episode, we break down the June 10th parallel test of our four MT5 automated trading bots. The total realized profit for the day was a modest +333 JPY, representing a +0.19% return on the portfolio. While it wasn’t a massive windfall, this session perfectly demonstrated a vital concept: the power of diversification. We dive into the performance of each bot to see how portfolio structure mattered more than individual bot performance: * GateGrid AI (GBPUSD): The only losing bot today, finishing at -153 JPY. It opened positions on both the buy and sell sides but was caught in a difficult zone without enough follow-through, signaling a need to review its dual-position exit logic. * BoundSniper (USDJPY): The most stable performer of the day. Acting as a pure execution bot, it closed three clean, winning trades for +172 JPY. It proved that sometimes simple, rule-based execution beats complex AI planning. * LLMBridgeTrader (EURUSD): Delivered the highest absolute profit of +182 JPY. It caught several great trades, but a late -193 JPY loss reduced its earlier gains, highlighting the need for stronger “daily profit protection” rules once a target is reached. * GBPJPY Bot: Added a +132 JPY profit to the portfolio. While it was only a single closing transaction, it perfectly executed its role by helping offset the losses from GateGrid AI. The biggest lesson from today’s session? One bot lost, but the portfolio still won. By running completely different logics—rule-based execution, AI-driven trade planning, and machine-learning grid filters—across multiple currency pairs, we absorbed individual weaknesses and maintained a positive balance. Join us as we discuss why a controlled, diversified green day is the ultimate goal for a live automated trading system! #FX #MT5 #AITrading #AlgorithmicTrading #Diversification #RiskManagement This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  5. Live Data Beats Backtests: Measuring Real EV After a Red Day [June 9th ]

    6d ago

    Live Data Beats Backtests: Measuring Real EV After a Red Day [June 9th ]

    In today’s episode, we break down the June 9th parallel test of our four MT5 automated trading bots. The portfolio ended the session with a combined realized loss of -1,432 JPY. At first glance, it looks like a simple losing day, but the detailed results revealed exactly what we need to do next to improve our systems. We dive into the distinct performances of each bot to uncover why live data is far more valuable than historical optimization: * GateGrid AI (GBPUSD): The main source of today’s deficit, suffering a -1,602 JPY loss on a single trade. This taught us a critical lesson: actual execution quality—such as spreads, volatility, and LLM judgment delays—can drastically alter real-world outcomes. Moving forward, we are running this bot at 0.01 lot to measure its true Expected Value (EV) in live conditions for the next few weeks. * BoundSniper (USDJPY): Finished at -278 JPY. Despite maintaining a good win rate with two winners and one loser, the single losing trade wiped out the gains. It serves as a textbook example of why win rate alone isn’t enough, highlighting the urgent need to rebalance its payoff ratio and exit rules. * LLMBridgeTrader (EURUSD): Ended almost perfectly flat at -6 JPY when factoring in unrealized profits. It effectively avoided large losses, suggesting that its AI-driven position management for holding and closing trades is functioning as a solid defensive mechanism. * MLScore GF-T4 GB (GBPJPY): The undisputed MVP of the day, securing a solid +496 JPY realized profit and reaching +615 JPY with open positions included. It successfully capitalized on the high volatility of GBPJPY, effectively carrying the weight of the entire portfolio today. The ultimate takeaway from today’s session is that while past optimization shows what worked historically, live trading shows what is working right now. Today’s loss was not just a loss—it was highly valuable data. Join us as we discuss our strategic pivot toward live EV measurement and how we use red days to build smarter bots! #FX #MT5 #AITrading #AlgorithmicTrading #MachineLearning #SystemTrading This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  6. The Day the Gate Worked: Why Doing Nothing is a Winning Strategy [June 8th Trade]

    Jun 8

    The Day the Gate Worked: Why Doing Nothing is a Winning Strategy [June 8th Trade]

    In today’s episode, we break down the June 8th parallel test of our four MT5 automated trading bots. The portfolio ended the day with a solid realized profit of +1,189 JPY. But the real success story wasn’t just about the money we made—it was about the money we didn’t lose, thanks to our newly implemented safety layers. We dive into the performance of each bot to see how they executed their distinct roles perfectly: * GateGrid AI (GBPUSD): The top earner of the day, securing +643 JPY. It executed two highly efficient, short-term trades and closed them quickly in profit, leaving no open exposure. * BoundSniper (USDJPY): Finished at +294 JPY. It perfectly demonstrated the resilience of rule-based execution, absorbing two tiny initial losses (-4 JPY each) before catching three solid profitable exits. * MLScore GF-T4 (GBPJPY): Secured a +252 JPY realized profit on a short trade while holding only a microscopic -7 JPY open drawdown. * LLMBridgeTrader (EURUSD): The most important bot of the day—because it didn’t trade at all. While the LLM generated three “BUY” signals, our newly built Machine Learning (ML) safety gate blocked every single one of them due to candidate and direction mismatches. The ultimate lesson from today’s session is simple: in automated trading, a blocked trade can be just as valuable as a winning trade. Our portfolio won today not by being aggressive, but by letting each bot do its job and allowing the ML gate to say “no” when confirmation was missing. Join us as we discuss how giving our AI bots the power to hit the brakes is taking our system stability to the next level! #FX #MT5 #AITrading #MachineLearning #AlgorithmicTrading #RiskManagement This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  7. Why AI Trading Bots Need Brakes: The June 1–5 Weekly Review

    Jun 7

    Why AI Trading Bots Need Brakes: The June 1–5 Weekly Review

    In today’s episode, we review the weekly performance of our four MT5 automated trading bots from June 1 to June 5. The portfolio ended the week with a combined realized loss of -3,307 JPY. While it wasn’t a profitable week financially, it was arguably our most valuable week for system development. We break down each bot’s behavior to understand why giving AI complete autonomy is a risky game, and why the ultimate feature of a trading bot is a reliable “brake”: * GateGrid AI: The clear winner of the week, finishing at +707 JPY. Its multi-layered filtering system proved that a bot’s true power lies not only in finding entries, but in its ability to say “do nothing” and avoid bad trades. * BoundSniper: Finished at -868 JPY. As a pure execution bot, its losses confirmed that the MT5 execution layer is doing its job, but the upstream TradingView signal logic needs serious refinement and better filtering. * LLMBridgeTrader: Took a hard hit at -1,399 JPY. It clearly demonstrated that giving an AI full autonomy over position management (OPEN, HOLD, CLOSE, REVERSE) is dangerous without a strict “ML gate” to reject weak trading plans before they reach the market. * MLScore GF-T4: Ended at -1,747 JPY. It exposed a critical structural flaw: re-entering the market under the same unfavorable conditions immediately after a stop-loss. It highlighted the urgent need for re-entry logic, cooldown rules, and daily risk limits. The biggest takeaway from this week? AI can create brilliant trading plans, but the system still needs the final authority to hit the brakes. Join us as we discuss how we are using this week’s “valuable losses” as direct training and debugging data to build smarter, safer trading systems! #FX #MT5 #AITrading #AlgorithmicTrading #MachineLearning #SystemTrading This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min
  8. Turning Losses Into Training Data: The Evolution of AI Bots [June 5th Trade]

    Jun 6

    Turning Losses Into Training Data: The Evolution of AI Bots [June 5th Trade]

    In today’s episode, we break down the June 5th parallel test of our four MT5 automated trading bots. The portfolio finished the session with an overall loss of -1,068 JPY. At first glance, it looks like a tough day. But for an AI-driven project, a red day with a clear diagnosis is far more valuable than a lucky green day. We dive into the distinct behaviors of each system and the major structural upgrades they inspired: * GateGrid AI (GBPUSD): The only profitable bot today, securing +199 JPY. Its conservative, multi-layered decision structure (combining CatBoost and Ollama) proved its worth by taking small profits and effectively staying out of trouble. * BoundSniper (USDJPY): Finished with a minor -100 JPY loss. As a pure execution bridge, its loss simply tells us that the upstream TradingView signal logic needs better exit controls, rather than indicating an execution failure. * LLMBridgeTrader (EURUSD): Took the hardest hit at -675 JPY. The AI’s immense freedom became a liability. In response, we discuss our massive upgrade: implementing a Machine Learning (ML) Gate powered by CatBoost to strictly filter the LLM’s “OPEN” and “REVERSE” trade plans before they reach MT5. * MLScore GF-T4 (GBPJPY): Ended at -492 JPY, but received the biggest structural overhaul. We’ve upgraded this bot to differentiate between “Breakout” (trend-following) and “Range” (mean-reversion) setups. With new historical backfill data, strategy-specific TP/SL settings, and strict daily safety limits, it’s evolving from a bot that simply guesses into a bot that learns from its logs. The ultimate lesson from today’s session is that our systems are shifting toward a new phase of development. Join us as we discuss how we are literally turning today’s financial losses into tomorrow’s training data! #FX #MT5 #AITrading #MachineLearning #AlgorithmicTrading #SystemTrading This is a public episode. If you would like to discuss this with other subscribers or get access to bonus episodes, visit fxaibotlab.substack.com

    2 min

About

Can AI really trade forex? AI FX Bot Lab is a real-time experiment from Japan, where I build and test AI-assisted FX trading bots using MT5, Python, machine learning, and local LLM tools. I share live results, failures, risk lessons, and bot improvements from rule-based, AI-driven, and ML + LLM hybrid systems. Not financial advice. fxaibotlab.substack.com