The Number I Believed for 6 Months

For six months, I told myself a story. The story went like this:

My trading system was profitable. The MP Tuned B algorithm had a 72.4% verified win rate with a 99% confidence interval. The journal showed +1,323.2 pips across 76 closed trades. The OMNI v10 multi-specialist ensemble was racking up +7.9 pips in its first nine trades. Everything was trending in the right direction.

I quoted these numbers in articles. I referenced them in system audits. I built my confidence β€” and my identity as a trader β€” around them.

Then on August 8, 2026, I did something I'd been avoiding for months.

I connected directly to my FxPro MT5 terminal and ran a query on account 514517088. Not the paper journal. Not the runner logs. Not the performance dashboard. The actual broker data.

+1,323.2
Paper Journal (Pips)
-$2,035.74
Broker Statement (USD)
5,770
Total Deals
$0.00
Current Balance

The gap between those two numbers β€” +1,323.2 pips of paper profit and $2,035.74 of real-dollar losses β€” is the subject of this article. It's not just my story. It's a systematic failure in how most algorithmic traders verify their performance. And if you're running an automated system without auditing your broker data, you might be telling yourself the same kind of story I was.

The Paper Journal: How +1,323 Pips Was Born

The MP signal journal wasn't fake. Every entry traced back to an actual signal generated by the algorithm at a specific time with a specific price, stop loss, and take profit. The journal recorded:

  • 76 closed trades with defined entry, exit, and resolution (TP HIT or SL HIT)
  • 55 wins, 21 losses β€” a 72.4% win rate
  • +1,323.2 pips total profit
  • Average win: +39.2 pips (ranging from +5 to +148)
  • Average loss: -39.8 pips (ranging from -5 to -112)

On paper, this looked great. A system with a 72.4% win rate and near-1:1 reward-to-risk ratio producing triple-digit pip gains over six months? Sign me up.

The problem wasn't the data in the journal. The problem was what the journal didn't tell me.

⚠️ The Critical Distinction

The MP journal tracks signal outcomes β€” hypothetical trades that the algorithm identified. It does NOT track whether those signals were actually executed, with what position size, at what spread, with what slippage, or whether a human override intervened. A signal journal is not a trade ledger. Confusing the two is the single most expensive mistake I've made as an algorithmic trader.

The OMNI v10 journal was even worse. It tracked exactly 9 of 31 resolved trades, selectively capturing a +7.9 pip subset while missing 22 trades that were disproportionately losers. When I backfilled the journal from the runner logs β€” extracting every RESOLVE_ALERT_QUEUED entry β€” the full picture emerged: 28 trades, 34.6% win rate, -38.5 pips.

And then there was the autotrade daemon. It ran every 15 seconds for months. Its log file had 26,009 lines. I searched for ORDER_SENT. FILLED. EXECUTED. mt5.order_send.

Zero matches. Not a single real trade execution.

The autotrade daemon was a ghost. It cycled, it analyzed, it produced signals β€” but it never actually placed a single order. The paper journal tracked signals that never met the market.

The Broker Audit: Opening the Black Box

On August 8, I connected to my live FxPro MT5 terminal β€” a Wine-based instance running terminal64.exe on a virtual display β€” and queried account 514517088 directly through the MetaTrader5 Python API.

This is what I extracted:

$6,728.73
Total Deposited
-$4,692.99
Total Withdrawn
$2,035.74
Net Deposits
-$2,035.74
Net Trading P&L

Let that sink in. Every single dollar that was deposited and not withdrawn was lost in trading. The account did not break even on commission. It did not bleed out through swap fees ($2.79 total swap cost across 5,770 deals β€” essentially zero). It did not slowly decay. It was systematically consumed by trading losses that my paper journals had classified as profitable.

πŸ’‘ The Arithmetic Is Brutal

$6,728.73 deposited βˆ’ $4,692.99 withdrawn = $2,035.74 left in the account. Trading profit: βˆ’$2,032.95. Swap: βˆ’$2.79. Commission: $0.00. Net result: $0.00 balance. The account ate exactly what it was fed. Not a dollar more, not a dollar less.

What 5,770 Trades Actually Look Like

The terminal returned 5,770 individual deals spanning January through August 2026. Breaking them down by type:

Deal TypeCountDescription
BUY entries2,503Long position openings
SELL exits2,643Position closures (both long and short)
Balance operations624Deposits, withdrawals, credits

Of the 2,643 SELL exits β€” the closures that determined profit or loss β€” 463 were profitable and 576 were losses. That's a 44.6% trade win rate on the live account. Compare that to the paper journal's 72.4%. The gap isn't sampling error. It's the difference between hypothetical signal outcomes and actual executed trades with real spreads, real slippage, and real market conditions.

But the most revealing breakdown was by symbol:

SymbolTrades (SELL exits)P&L (USD)% of Volume
GOLD2,525-$970.2295.5%
BITCOIN83-$89.993.1%
US3018-$7.660.7%
NAS1009+$0.840.3%
GER405-$1.550.2%
US5003-$2.880.1%

Gold was 95.5% of all trading volume. And gold lost $970.22. The other symbols were noise β€” Bitcoin lost $89.99, the indices collectively lost about $11. Gold was the entire story.

P&L by trading symbol β€” Gold dominates volume and losses at -$970.22 across 2,525 trades, with all other symbols near zero

Figure 1: Trading P&L by symbol. Gold consumed 95.5% of all trades and accounted for the overwhelming majority of losses. All other symbols combined lost approximately $101 on 118 trades.

The Gap Between Paper and Reality

How do you get from +1,323 pips in a journal to -$2,035.74 in a broker account? Three mechanisms, each compounding the others:

πŸ“ Paper Journal Says

Win Rate72.4%
Total P&L+1,323.2 pts
Trades Tracked76
Avg Win+39.2 pts
Avg Loss-39.8 pts
ExecutionSignal only
Position SizingNot recorded

πŸ’° Broker Terminal Says

Win Rate44.6%
Total P&L-$2,035.74
Trades Executed5,770
Largest LoserGOLD: -$970
Swap Cost-$2.79
ExecutionLive fills
Account Status$0.00

Mechanism 1: The Signal-Execution Gap

Not every signal becomes a trade. Not every trade fills at the signal price. The paper journal assumes instant execution at the moment the signal fires. In reality, the autotrade daemon β€” the component that was supposed to translate signals into orders β€” ran 26,009 cycles without placing a single trade. The signals that the journal counted as "wins" never actually entered the market. The signals it counted as "losses" never actually lost money because they were never opened.

But the account was trading something. Manual trades. Human decisions. Entries that didn't go through the signal pipeline at all. Those are the 5,770 deals in the terminal β€” a mix of algorithm signals (the ones that DID execute) and discretionary entries that bypassed all journaling.

Mechanism 2: The Journal Only Tracks What It Wants To

The OMNI v10 journal captured 9 trades and then silently stopped. Those 9 trades showed +7.9 pips and a 55.6% win rate β€” selectively recording the profitable early phase while ignoring the 22 subsequent trades that were net losers. The runner log continued recording every resolution β€” 31 total, 35.5% win rate, -35.7 pips β€” but nobody was reading the runner log. Everyone was looking at the journal.

Mechanism 3: Position Sizing Makes Pips Meaningless

The paper journal tracked pips. The broker tracks dollars. You can win +1,323 pips on 0.01 lot positions and lose $2,035 on 0.10 lot positions. Without position size records, pip counts are directionally useful and financially meaningless. My journal had zero position sizing data.

πŸ’‘ The Core Lesson

Three independent failures β€” signal-execution disconnect, selective journaling, and missing position sizing β€” each sufficient to create a false picture of profitability. Together, they painted a +1,323 pip mirage over a -$2,035.74 crater. Any one of these failures, caught early, would have revealed the problem. But nobody was looking.

Gold Was the Weapon, and the Killer

2,525 gold trades. -$970.22 lost. A 44.6% overall win rate dragged down primarily by gold's performance.

This wasn't bad luck. This was systematic. Gold volatility punishes two things mercilessly: entries at extremes and position sizing that ignores ATR expansion. My OMNI v10 algorithm had a structural bias toward buying at H4 zone tops β€” exactly where gold reversals are most violent. We found and fixed this in the three-layer defense architecture (detailed in our previous article), but the damage was already done across thousands of trades.

Cumulative P&L timeline showing deposits, withdrawals, and trading losses from January through August 2026

Figure 2: Cumulative account flow January–August 2026. Deposits (green), withdrawals (orange), and trading P&L (red). The red line mirrors the net deposits almost perfectly β€” $2,035.74 deposited and not withdrawn = $2,035.74 lost in trading.

The pattern is stark: every wave of deposits was followed by a wave of gold-trading losses. The deposits weren't funding profitable scaling. They were feeding a machine that consumed capital.

Where Did $6,728 Go?

Let's follow every dollar from deposit to zero:

StageAmountDirection
Total Deposits$6,728.73IN
Total Withdrawals-$4,692.99OUT
Net Funds Left to Trade$2,035.74β€”
Trading Profit/Loss-$2,032.95LOST
Swap/Overnight Fees-$2.79LOST
Final Balance$0.00ZERO

There's a second pattern in the data worth examining: the balance operations. Among the 624 balance entries, I found hundreds of small OTXX-labeled transactions β€” deposits of $4 to $31 labeled "OTXX-DP" and withdrawals of $8 to $20 labeled "OTXX-WD" β€” plus micro-credits from something called "NBP-bot" ranging from $0.01 to $3.67.

These aren't normal client deposits and withdrawals. They look like automated account cycling β€” possibly a deposit bonus system or a fund recycling mechanism. I flagged this as "needs investigation" but it doesn't change the core finding: all net funds were consumed by trading losses regardless of how they arrived.

Why Most Algorithm Developers Don't Do This Audit

I didn't avoid this audit because I was lazy. I avoided it because it's psychologically brutal.

Here's what it feels like to run that broker query: you're sitting there, Python terminal open, mt5.history_deals_total() returning 5,770 results, and you suddenly realize that every single trade you've been tracking in your journal might be wrong. Not slightly wrong. Directionally inverted. Profitable β†’ unprofitable. Working β†’ broken.

And the worst part? You could have checked at any time. The terminal has been running the whole time. The API was there. The data was there. You just didn't want to know.

I think this is why most algorithmic trading content online is suspicious. People publish backtests and journal screenshots. Almost nobody publishes broker statements. The gap between what people show and what their broker sees is the most under-discussed topic in trading.

"The market is the ultimate auditor. It doesn't care about your journal, your backtest, your confidence interval, or your GitHub stars. It knows exactly how much money you've made or lost. And if you haven't checked your broker statement, you're the last person to find out."

The 4-Step Audit Anyone Can Do

If you're running an algorithmic trading system β€” or even a manual strategy β€” here's a framework to verify whether your numbers are real. This is what I wish I'd done six months ago.

Step 1: Extract Every Deal From Your Broker

Connect to your broker API (MT5, cTrader, Interactive Brokers β€” they all have Python libraries) and dump the complete deal history. Every entry. Every exit. Every balance operation. Do not filter. Do not "clean" the data. Raw extraction only. For MT5: mt5.history_deals_total() and mt5.history_deals_get() with a date range covering your entire trading history.

Step 2: Reconcile Every Trade Against Your Journal

Match each broker deal to a journal entry by timestamp and symbol. Categorize every trade as "journal-matched," "journal-missing" (trade executed but never recorded), or "journal-only" (signal recorded but never executed). The ratio of these categories will tell you exactly how big your tracking gap is. If "journal-only" exceeds 10%, your signal journal is fiction.

Step 3: Calculate Real P&L by Symbol and Strategy

Group trades by symbol to identify concentration risk (one symbol shouldn't be 95%+ of volume). Group by strategy or signal source to find which components are actually profitable. My OMNI v10 was -38.5 pips. My manual gold trades were -$970. Both needed to be known separately. The journal lumped everything together.

Step 4: Audit Your Autotrade Execution Log

If you have an automated execution system, search its logs for order placement keywords: ORDER_SENT, FILLED, order_send, execution_report. If you find zero matches across tens of thousands of cycles β€” as I did β€” your autotrade system is a display piece, not a trading engine. Fix it or acknowledge that you're trading manually.

4-step audit methodology flow diagram: Extract β†’ Reconcile β†’ Calculate β†’ Audit

Figure 3: The 4-step broker audit methodology. Run this monthly. The alternative is discovering a $2,035 gap six months late.

What Changed After This Audit

The audit didn't just reveal losses. It revealed systemic blind spots that I've since corrected:

BEFORE

Paper Journal as Primary Truth

The MP journal was treated as the source of trading truth. Weekly performance reports, daily summaries, and system health checks all referenced it. Nobody cross-referenced the broker terminal.

AFTER

Broker Terminal as Primary Truth

All performance reporting now starts with the broker terminal. The first number in every report is the live account balance and realized P&L. Paper journals and runner logs are supplementary β€” useful for debugging signal quality, but never presented as financial results. The OMNI v10 journal was backfilled to 28 trades with honest stats (34.6% WR, -38.5 pts). The distinction between "signal P&L" and "realized P&L" is now explicit in every communication.

BEFORE

Autotrade Assumed Working

The autotrade daemon ran for months. It cycled every 15 seconds. It logged activity. Everyone assumed it was placing trades because it was "running." Nobody checked the execution keywords.

AFTER

Execution Verification Built In

The autotrade log now includes explicit ORDER_SENT and FILLED markers. A watchdog cron job checks for these keywords daily. If 24 hours pass without a filled order, the system alerts. An autotrade system that doesn't trade is not a system β€” it's a screensaver.

BEFORE

Selective Journal Tracking

The OMNI v10 journal captured 9 of 31 trades before silently stopping. The missing 22 were disproportionately losers. The journal's +7.9 pips and 55.6% WR were a cherry-picked subset masquerading as the full picture.

AFTER

Full Journal Backfill + Auto-Logging

All 28 deduplicated OMNI v10 trades are now in the journal with complete stats. Runner logs are parsed for RESOLVE_ALERT_QUEUED entries to catch any trades that escape journaling. The system now alerts if journal entries and runner resolutions diverge for more than 24 hours.

Before-and-after comparison: paper journal vs broker-verified performance tracking system

Figure 4: Before and after the audit. Left side: signal journal as primary truth with no broker cross-reference. Right side: broker terminal as primary truth with explicit signal-vs-realized P&L separation.

The Architecture Principle

After the zone defense article and now this audit, a pattern has emerged in how I think about trading systems. It's not about entries and exits. It's about truth hierarchies.

Every trading system has multiple layers of data:

  1. Signal data β€” what the algorithm thinks it sees (cheapest to produce, most abundant, least reliable)
  2. Journal data β€” what was recorded as having happened (depends on logging discipline, subject to selective omission)
  3. Runner log data β€” what the system actually processed (harder to fake but still internal to your code)
  4. Broker data β€” what your counterparty recorded (external, authoritative, the only layer that determines your account balance)

πŸ’‘ The Truth Hierarchy Rule

Never quote a higher layer as truth when a lower layer is available. If you have broker data, your journal is supplementary. If you only have a journal, your signals are supplementary. P&L claims without broker verification are not analysis β€” they're storytelling. And storytelling doesn't pay margin calls.

This sounds obvious. But almost nobody in trading content follows it. Backtests are presented as evidence. Signal journals are presented as track records. Screenshots of green days are curated into narratives of consistent profitability. The broker statement is the only document that cannot be curated. The market writes it. You can't edit it.

Trade With a System That's Honest About Losses

We're building trading systems at MP Signal that don't hide from their broker statements. The three-layer zone defense we deployed last week blocks buy signals at H4 extremes. The signal journal now explicitly separates "hypothetical signal P&L" from "realized broker P&L." And every Monday morning, the system runs a broker reconciliation β€” comparing what the journal claims against what the terminal recorded.

This article exists because I failed to do this for six months and paid $2,035.74 to learn the lesson. You can learn it for free in 20 minutes.