#fogo $FOGO @Fogo Official
7:14am.
Oracle printed underwater. Liquidation already executed.
My bot detected the trigger two slots later. Position gone.
Not a broken feed. Not RPC lag. Pyth was updating every slot.
The mismatch was mine.
I built the bot on Solana testnet. Polling every 100ms. On 400ms blocks that meant I checked at least once per block.
On Fogo, blocks land every 40ms. Firedancer’s liquidation checks run inside the slot loop, reading Pyth Lazer every 40ms. My bot still checked every 100ms.
Slot N: oracle flips underwater.
Slot N: liquidation executes.
Slot N+2: my bot finally sees it.
By then it was history.
Missed 31 liquidations in 1 hour 47 minutes. ~0.12 SOL average each. Roughly 3.7 SOL opportunity delta before I shut it down.
Hardware fine. Network clean. My detection loop simply cannot react inside a 40ms boundary.
I rewrote it to trigger on slot events instead of polling.
Better.
Except slot notifications arrive 15–30ms late depending on network path. Sometimes the event reaches me while the next slot is already opening.
Slot N liquidation.
Slot N+1 notification.
Still late.
Running my own validator dropped jitter under 10ms. Still miss one-slot liquidations during volatility.
Oracle updates at slot speed. Liquidation executes at slot speed. My bot detects at subscription speed.
Forty milliseconds isn’t faster. It’s narrower.
On 400ms blocks there was slack between detection and execution. On 40ms cadence they collapse into the same boundary. If your trigger isn’t inside the slot, you’re reading history.
The oracle didn’t lag.
I did.
9:03am. Missed liquidation #32.
Oracle printed underwater. Slot closed. Liquidation executed.
Notification arrived.
Too late.

