gm from the #2 on the
@Lighter_xyz leaderboard.
On Saturday I traded more than $90M (total exchange volume was around $300M that day) by manually PvPing several bots.
As a hook for the reader: This all was done clicking buttons manually (no API/algo trading at all, so this is a bit off topic from our regular posts about algo trading) from a couch while watching TV.
Since this caught quite some interest (and the alpha is gone now), allow me to make some corrections to the quoted tweet and tell the story of how I went from 10 points to rank 2 (400+ points) within 24 hours.
Late Friday evening, one of our
@PlanemoTrading order book alerts started firing every few minutes, most often for QQQ and SPY.
Basically our system identified an operator that was blindly crossing the spread on those tickers every time liquidity was posted within 1 tick, so for instance a buy order at 775.98 and a sell order at 775.99 would be instantly taken by this account, therefore instantly realizing a trading loss (more on that later).
Quick background on how we found this in the first place: We run (cross-venue) statistical arbitrage, most visibly across the HIP-3 deployments on Hyperliquid: same ticker, different venues, and we take the spread when it exists.
When the
@RobinhoodCrypto instance launched on Lighter we were integrated within hours and traded it for a few days, but the lack of liquidity didn't make it worthwhile and we stopped.
However, the connection/websocket streams stayed live for the past month and ran through our regular system which includes something like an "anomaly layer". Put simply, it watches order book behavior on everything we touch and flags anything structurally odd for manual review, so we can decide if we have to adapt our logic.
We get these flags constantly (we are now already past 1,000 individual orderbook streams) and most of these flags are noise, depending on how sensitive the filters are set.
This one on Friday night however repeated every couple of minutes, in the same two books, and for hours at a time.
So Friday night I tested it by hand. Posted two sided liquidity one tick apart, and it got taken almost immediately for a tiny profit.
Saturday morning the alerts had run all night, faster and in bigger size. So I sat down on the couch and started posting liquidity manually.
To be clear about the level of "sophistication" involved:
This part was one guy (me) typing orders on the Lighter frontend UI while watching TV. The clever part had already happened when the system flagged the pattern.
(To be fair, you could have easily spotted this behavior manually too by just looking at the orderbook for a few minutes fwiw.)
Early on, orders sat in the book for minutes and got nibbled in bites of 3 to 5 units, a few thousand dollars at a time.
By midday the counterparty woke up properly. Fifty unit clips, about $35K a side, gone within a second of posting. Then 100s. Then 200s. At some point I was resting 500 to 700 units per side (so up to $500,000) and watching it clear in seconds, a few dollars of spread each cycle, over and over.
Two or three hours in, company finally arrived. Top of book size (in units) that had been mostly mine became 1,000, then 1,500, sometimes north of 2,000 (roughly $1.5M deep top level) as other makers piled into the same trade.
For a few hours it was pretty fun when there were multiple people constantly cancelling and requoting to make sure they are in the first slot top of book.
New takers showed up too. The original one always swept both sides in the same second. Others went sequentially, one leg, then the other, 2 to 3 seconds apart.
I didn't check the chain in detail, but I think there were at least three distinct takers absorbing everything posted based on the different manners of execution and clip sizes.
So, why would anyone blindly cross spreads all day?
We can only guess at the motive, but the math points somewhere: at 0.1bps spread and 0 taker fees, the cost is about $10 per $1M of volume, and that Saturday $1M of taker volume (free account) earned around 6 points.
So <$2 per point, even without knowing details about the current campaign, is probably a good deal.
Of course its their trade, their economics.
Ours was simply earning the spread on huge size, almost (!) risk-free (more on that soon).
A few hours in is when I realized that I was suddenly number 4 on the leaderboard (lol).
By end of day: roughly $90M traded, $2K net profit, around 400 points.
Rank zero to rank two in under a day.
Late Saturday I did another 10M or so of volume that, it turns out, earned exactly zero points. The program had changed at some point in the afternoon and I hadn't noticed. I of course kept quoting anyway since the PnL trade was the goal.
Now, about "wash trading" from the quoted tweet.
Wash trading means you control both sides of a trade (resting maker orders and being the taker), so that beneficial ownership never actually moves.
That's zero risk, fake volume, and of course should always be filtered out/banned.
What I've described is the opposite, and the roughly 5% of the time it went wrong (resting orders not immediately being filled) clearly shows it.
Most of the quotes got taken on both sides immediately. The rest of the time, usually against the sequential taker bot when the price ticked more than usual, only one leg filled.
In that moment you are naked long or short a single leg of $300K to $500K on a $20K account.
It happened a couple of times an hour, and at least five times I sat properly holding the bag for minutes before I could get it flat.
On a weekend. Anyone who has traded on high leverage knows exactly what that feels like. One geopolitical headline and a 5% move and that account is zeroed out in a second.
This was deliberately degen with a small test account and I was fully aware of the risks of an unhedged position of that size. I have traded perps for the better part of a decade and this trading behavior is like the famous turkey happiness graph.
This will go wrong eventually.
I do not recommend anyone doing this, you will get rekt eventually.
Wash traders do not get left holding an unhedged half million dollar leg on a trade they control both sides of.
There's a structural/technical point to make too. On a busy book like Lighter you can't even guarantee your own maker gets matched against your own taker when trading on the UI.
Anyone who truly wanted to wash trade there would have to build it algorithmically, precisely timed, purpose built to self match.
Since Sunday the books on QQQ/SPY have changed. Spreads on those markets are far wider, and the unit economics moved with them: roughly 2 points per $1M of maker volume now (only premium accounts), against about $110 of maker fees on that same volume.
Assuming break even trading, that is real money per point ($55 per point), for rewards nobody knows the value of.
Whatever one thinks of the program changes, and I don't have a settled view yet, the window that made Saturday work is closed.
So that was my weekend.
PVP happens on every exchange with every single trade (by definition), this was just a very visible one.