October 2025.
For the past eight months, we’ve been running the #1 arbitrage bot on HyperEVM.
But the grind is coming to an end.
After fighting with Wintermute for the past few months, a new actor has joined the party and returns have dramatically compressed.
It’s alright. My brother and I are used to it.
We never try to fight institutions and their armies of wagies for too long. We can’t. We’re just two.
Our edge has always been deploying a strategy as fast as possible and milking it before the big boys come.
They can’t deploy a strategy in 48 hours. They have regulatory constraints, internal processes, approvals, etc.
We don’t have any of this. We just need to be as fast as possible.
So it’s time to find a new grind.
We wonder: what’s next?
10/10 just happened. Crypto looks completely doomed. Everyone is fucked. There’s nothing exciting left to milk.
We start looking around.
On October 13, HIP-3 goes live on Hyperliquid. Three days later, Unit/TradeXYZ officially launches their first equity perp market: XYZ100.
As Hyperliquid still has more than 40% of the supply to distribute to the community, we feel like it might be a good idea to generate volume on HIP-3.
This is actually the same reasoning that led us to the HyperEVM arbitrage opportunity eight months earlier: we simply wanted to make Unit + Hype spot volume on Hyperliquid.
We have no idea if it’s going to work, but we’re going to try: build and operate an equity perps arbitrage bot between HIP-3 and TradFi.
First steps in TradFi
Something to have in mind: we have never traded a stock in our lives. We don’t really know what a future is. We basically know nothing about TradFi.
All we know is that IBKR is a very competitive platform for what we want to do, so we decide to explore it.
The first few days, I’m literally just trying to understand how to use the IBKR platform.
I take screenshots of basically everything and send them to Claude:
“What is this?”
“What does this mean?”
“What should I do here?”
“How can we hedge XYZ100?”
This is basically how we start learning TradFi.
Meanwhile, my brother starts exploring the IBKR API to understand what is possible and what is not.
Coming from crypto, he is used to connecting to an exchange API and having something running extremely quickly. IBKR is a different world.
Market data subscriptions, contract specifications, order types, permissions, API limitations, TWS, IB Gateway...
We have a lot to figure out and at first, we’re not even sure this thing is doable.
But after a week of fucking around with IBKR, we’re getting somewhere.
Building the arbitrage bot
The strategy is quite simple.
We consider the IBKR price feed as the real price and constantly check if there are arbitrage opportunities on HIP-3.
If a market on HIP-3 is trading at a discount vs. IBKR, we open a long on HIP-3. Only if we get filled on Hyperliquid, we open the corresponding short on IBKR.
If a market on HIP-3 is trading at a premium vs. IBKR, we do the opposite: short on HIP-3 and, once filled, long on IBKR.
In theory, pretty simple.
In practice, we need to set up a lot of parameters for every single HIP-3 market.
For the IBKR leg, let’s take NVDA as an example:
["NVDA", 55, 400, { maxDelta: 800, slippage: 0.1 }]
55 is our minimum hedge size. IBKR fees have a $1 minimum, so we want to avoid doing tons of micro-transactions. We let the delta accumulate and once it reaches 55 NVDA, we hedge it on IBKR.
400 is the maximum size we hedge in a single IBKR order to avoid too much slippage.
maxDelta: 800 is our security. If for whatever reason our IBKR trades are failing and the difference between both legs reaches 800 NVDA, the bot simply stops trading this market.
slippage: 0.1 is the maximum slippage we allow when hedging on IBKR.
Then we have the HIP-3 leg:
NVDA: pair("NVDA", "xyz:NVDA", {makerSize: 400, makerOffsetBuy: 0.12, makerOffsetSell: 0.12, cancelDelta: 0.02, takerRatioBuy: 0.05, takerRatioSell: 0.1, takerMin: 1, takerMax: 2000, limit: 110000, makerEnabled: true, preMarketOffset: 0.04 })
It looks complicated but the logic is actually pretty simple.
makerSize defines how much we quote, while makerOffsetBuy / makerOffsetSell define the spread we want versus the fair price. cancelDelta tells the bot when the price has moved enough to cancel and reposition those orders.
For taker trades, takerRatioBuy / takerRatioSell define how much spread we need before taking liquidity, while takerMin / takerMax control the size we are willing to execute.
limit is the maximum total position size we allow on the market, while makerEnabled simply lets us turn maker orders on or off.
Finally, preMarketOffset adds some extra spread during pre-market hours because liquidity on the TradFi side is much worse at this time of the day.
First trades
At the very end of October, we are finally ready to try.
The first few days are a bit hectic. We struggle with the IBKR API, sometimes lose connection, and my brother has to find some tricks to keep everything connected and running.
But we quickly realize there are a lot of opportunities. It basically feels like easy money.
During November, we execute around $850m of volume on HIP-3 and make more than $500k in profit.
This is good.
December is a bit calmer. We do around $550m of volume and are still printing good profits, but we actually start wondering if we shouldn’t focus on something else. This is good money, but it’s not a gold mine either.
We decide to keep going, as always. We usually have a very hard time stopping when there is still something left to milk.
Metals euphoria
January is when things really start taking off on HIP-3.
Gold and silver start running like crazy and the demand on Hyperliquid is pure madness. Making money becomes almost too easy, and we have spent the last two months getting ready for exactly this kind of market.
One problem we have is liquidity. Basically everyone wants to long commodities on Hyperliquid, which means we constantly need more capital on the IBKR side to hedge.
We keep adding money to IBKR, but moving this much money comes with banking challenges.
EtherFi are absolute goats on that one and let us off-ramp good size very quickly.
During January, we do $1.7B of volume on Hyperliquid and collect more than $600k in funding alone.
But as I told you earlier, we are only two. We don’t have internal processes. We move fast. And we basically test everything in prod.
Sometimes, that comes with a price.
On January 27, I just landed in Dubai and I’m getting ready to grab a coffee with my brother to yap about the bot.
Suddenly, I get a liquidation warning from IBKR on my phone.
I don’t understand how this is possible. It’s still very early and not much is happening in the market.
I log into IBKR.
We are net short $120m of gold futures.
Gold is in the middle of a massive run.
We cut the bot immediately.
At this point, I’m shaking. I’m genuinely scared of getting liquidated. I don’t know IBKR that well because the bot is the one doing all the trading there.
For the next 15–30 minutes, I manually close $120m of gold shorts.
When the market opens later in the afternoon, we are finally able to compute the damage:
-$1.1m.
It’s a tough one.
But we don’t have time to cry about it. We need to understand what happened and fix it ASAP.
The reason turns out to be pretty stupid.
IBKR API data had stopped refreshing properly. The bot thought there was a delta between our Hyperliquid and IBKR positions, so it kept executing gold shorts on IBKR to correct a delta that didn't actually exist.
Again. And again. And again.
Until it had shorted $120m of gold and we started receiving liquidation warnings.
We obviously need more controls.
We need to make sure the data we receive from IBKR is actually fresh. We need additional checks before allowing the bot to keep increasing a position. And more generally, the bot was simply not designed for the amount of volume and opportunities we are now seeing.
We spend the day fixing everything.
The next day, we launch the new version of the bot.
But we’ve lost confidence.
Maybe we don’t know what the fuck we’re doing. Maybe the risk/reward is simply not there. We just lost $1.1m because of something incredibly stupid and now we feel like the bot is going to fuck up again.
For the first time since we launched it, we seriously wonder if we should just stop.
But you know us by now... We are greedy motherfuckers.
We are not going to give up after a seven-figure loss. We are going to push harder.
And I think this is actually something we are pretty good at. From all the bots we’ve built together, we’ve had episodes of wild losses almost every single time. And somehow, we’ve always managed to bounce back.
We don’t spend hours crying about it. We try to understand what went wrong, fix it and move on.
The loss basically becomes a taboo subject between us until we’ve made it back.
The next day, silver has a crazy pullback after reaching ATH and, at some point, there is a ~3% price discrepancy between Hyperliquid and IBKR.
We manage to make around $600k profit from it.
We are fucking back.
Liquidity management & speed improvements
At this point, we are making good money.
And we know how this game works. If there is this much money to make, more people and their army of wagies are going to come for it.
So we need to get better asap.
The first problem is capital.
This is very different from pure crypto arbitrage, where rebalancing between venues can take less than five minutes. Here, we actually have to make bank transfers to and from IBKR.
So we design a dynamic system based on how much liquidity we have available there.
When our liquidity on IBKR is low, we are willing to lose some money to close existing trades and free up capital. At the same time, we require a bigger spread to open new positions.
When our liquidity on IBKR is high, we do the opposite. We are willing to open new trades at smaller spreads and deploy capital more aggressively.

The second thing we need to improve is speed.
Until now, we have been using the IBKR price feed as our source of truth. It works, but the feed is relatively slow.
With more actors joining the game, we know that at some point this is going to become a speed game and relying on IBKR data won’t be enough anymore.
We start digging into alternatives and find Databento.
Through Databento and a Nasdaq license, we can get a much faster direct market data feed.
We apply for access in January and finally get approved at the end of the month.

From metals to oil
In February, metals are still heating up and we do approximately $1.5B of volume.
And as if that wasn’t enough, at the end of February, Trump decides to bomb Iran, making markets insanely volatile and sending oil above $100.
At this point, we are making approximately $60k to $120k per day from arbitrage spreads and funding. Except Saturday and Sunday, when TradFi markets are closed and we are bored to death.
When we make “only” $40k over the last 24 hours, we actually think something is wrong. We start looking at the bot, changing parameters, trying to understand what happened and what we can improve.
Claude helps us a lot with this. We can feed it all our HL and IBKR trades and ask it to analyze where we lost the most money, what went wrong and what we could improve.
This is actually the first time we use AI for trades analysis and it makes a pretty big difference.
Even when things are going well, we keep this obsession. It’s basically the only way we know to stay on top of it.
My brother and I talk about the bot all day. He pushes code updates almost every day, while I constantly adjust the parameters depending on what is happening in the market.
Semis mania
At the end of April, as the Iran conflict starts cooling down, we think this might finally be the end of this insane profitability.
For the past few months, we’ve been printing around $500k per week and we don’t really see what could keep driving these kinds of opportunities.
This is when semis and all the bottleneck trades start full sending.
Tickers like SNDK and MU start trading like pure memecoins.
This is actually insane.
We started building this bot in October, when basically nothing was happening. Since then, we’ve had metals, then oil, and now semis all trading like shitcoins on BSC.
What the fuck is going on?
There is obviously a lot of luck involved. We happened to be at the right place, at the right time, with a working product ready for exactly this kind of market.
But I also think there was some good vision in trusting HIP-3, equity perps and more specifically TradeXYZ very early.
In May, June and July, we keep doing between $1.5B and $2.5B of monthly volume and printing around $400k–$500k per week.
Conclusion
It’s now the beginning of September.
Many institutions have joined the game since we started. Ethena has also announced plans to enter the equity basis trade in the coming weeks.
The opportunity might be coming to an end for us, but it has been one hell of a ride.
In 10 months, during what basically felt like a crypto winter, we achieved:
- $32B of combined volume across HIP-3 and IBKR
- 1.5% of TradeXYZ's total volume
- $10M in profit
Of course, this was only possible because we had a lot of liquidity to deploy. But the returns on the capital actually deployed were still around 35-45% APY, depending on the period.
More importantly, this was an amazing opportunity for us to get our first real experience in the TradFi world and understand how it works.
Ten months ago, we had never traded a stock and barely knew what a future was. Now we’ve traded $32B of them.
All that’s left is to pray for Hyperliquid Season 3.
Thanks for reading until the end.
We’ll be back for another story.
CBB 🫡





