Key Takeaways

  • Solend offered a 5% liquidation bonus on an insolvent whale account during the FTX collapse, alongside a 2,600% interest rate to attract new deposits.
  • Trading bots were offline or lacked capital, allowing Patrick McKenzie to manually execute liquidations from a standard browser in Tokyo.
  • Web interfaces crashed roughly 70% of the time, and network congestion extended cycle times to between 3 and 12 minutes per loop.
  • McKenzie completed 22 consecutive manual round trips, purchasing discounted SOL with USDC and swapping back to cash.
  • Severe slippage and platform trading fees cut theoretical 3x compounding gains down to an actual 50% net profit.

The Method

During the market panic surrounding the FTX collapse, the Solana lending protocol Solend faced an existential threat: a massive whale account fell underwater. Automated bots normally clean up bad debt instantly on decentralized platforms. In this instance, those bots either ran out of capital or were shut down by operators terrified of market volatility.

Sitting at a computer in Tokyo, Patrick McKenzie noticed the opening. Solend offered a 5% liquidation bonus to anyone who paid off portions of the insolvent whale's debt in USDC. In exchange, the protocol handed over SOL at a 5% discount to current market prices. At the same time, the protocol's urgent need for liquidity pushed deposit interest rates to 2,600%.

McKenzie had no time to build an automated trading bot. Instead, he treated the decentralized finance interfaces like a slow game:

“That video game, in lieu of being able to quickly program a bot, was taking a trivial amount of USDC, waiting for more SOL to be deposited in response to the 2600% interest rate offered, and quickly liquidate as much of the whale's debt as the program would let me.” (play from 18:28)

The loop required three steps: submit USDC through Solend to seize the whale's collateral at a 5% discount, wait for confirmation on the congested blockchain, and sell the SOL on a decentralized exchange back into USDC.

The execution was an operational grind. "The video game crashed about 70% of the time I tried to do this, but I pressed on," McKenzie said. "Then, I'd use my 5% cheaper than the market price recently SOL and use a different video game to convert that into USDC." What should have felt like instant button clicks took several minutes. As McKenzie noted: “What sounds like click two buttons in a web app with a barely perceptible lag between them took between 3 and 12 minutes per iteration.” (play from 19:13)

He repeated this cycle 22 times, steadily increasing his capital size on each pass as his balance grew.

Where This Breaks Down

Manual arbitrage looks clean on a spreadsheet, but real-world market friction eats returns rapidly. On paper, earning a 5% bonus compounded across 22 cycles should turn an initial balance into roughly three times the starting sum.

Real execution told a different story. “Now you might naively think that I roughly tripled my starting capital because 1.05 raised to the 22nd power, but the combination of slippage and the fees I was paying to the designers of the video games meant it was actually more like a 50% gain,” (play from 20:16) McKenzie explained. Constant trading fees and slippage on decentralized exchanges shaved off chunks of margin on every single cycle.

Manual windows do not stay open. Speed and sleep are hard limits. McKenzie succeeded only because he operated during a lull in US time zones. As he observed: “And so I round-tripped that transaction 22 times, each with more money used to liquidate. Then people in other time zones woke up, looked at market conditions, and turned their bots back on.” (play from 19:32) The moment professional operators reconnected their infrastructure, human fingers clicking web forms stood zero chance.

What to Do With This

Map the manual fallbacks for your product's automated dependencies before your next system outage. When automated clearing, payments, or balance reconciliations fail, verify whether an operator can execute transactions through an administrative portal. Write a one-page runbook listing the exact URLs, balance requirements, and approval limits needed to clear transactions by hand when code stops running.