my builder wallet has 174 dollars in it and its down 7.
anyone can look. its onchain, its the same address every user approves.
thats not a bad look, thats the point. i test the money path with my own money
first and i keep it small enough that a bug costs me a coffee instead of a
customer
the day i hide that address is the day something went wrong
Day 21 on mainnet and the worst bug I shipped was a division.
I had a volume number on my own dashboard that was wrong by roughly a factor of two.
I was backing it out of a fee figure. Fees land on every fill at the venue rate. My event log counts opens only.
Two denominators, one division, one number I read as fact for days.
Nothing crashed. Nothing alerted. It just sat there being wrong while I made decisions on it.
The bugs that hurt are not the ones that throw.
non custodial is a word people use without checking.
the test is simple. can the thing holding your session key move money out.
if yes, its custodial with extra steps.
theres only one honest answer and most products avoid giving it
ask any of them directly and watch what happens
builder fees mean my incentive is volume, not spread.
i dont win when you lose. i win when you trade.
took a long time to find a model where those two point the same direction
most of them dont
yep thats the exact hole. weve had to stash leverage at order time and fall back to activeAssetData when its missing, cause the fill just doesnt carry it. works but its a self heal not a source of truth.
the other gap on that endpoint is liquidation fills, they come back through a different path than normal closes and a naive parser drops them. if those are missing from a sample every winrate in it reads high and nothing looks broken.
re HFT, agree theyre uncopyable, but style drift on medium timeframe traders is the harder analytics problem imo. thats where margin data would actually matter
My test suite was writing into the real data directory.
Not production, but the same directory the local service reads. So a failed run could leave state behind that the next thing to boot would read as real.
I found it because a test failure changed behaviour in a completely unrelated command.
Fix is boring. Temporary state directory per suite, injected through the same environment variable the service already uses.
The interesting part is that the variable existed the whole time. I had built the isolation mechanism months ago and then never used it in the one place it mattered.
Check what your tests write to. Most people have never looked.
that clears it up ty.
sub 400ms detection is solid, the closures thing is the part that stings tho, cause open only means the sample skews toward positions that survived.
anything that opened and closed fast is invisible by construction, not by policy.
if X flags closures as spam theres a way around it, batch them into a periodic roll up instead of one post per close. same data, one post....
spent three hours today deleting code i wrote last week.
it worked fine. it just made the money path one layer harder to reason about.
better slow than wrong isnt a saying for me, its a merge rule
the version that ships is always the boring one
Two properties fell out of that which I did not plan for.
It is redeploy proof, because there is nothing to lose.
And it is venue agnostic, because the check never touches venue state.
Rotating the secret also became a control plane kill switch that works with no volume flowing.
https://t.co/9vpyfo7422
My fill watcher used to halt trading because of a redeploy.
Every order got a client order id. The watcher journaled that id to disk. When a fill came back, it checked the fill against the journal to decide if the order was ours.
Ephemeral disk. Redeploy wipes the journal.
Now every order in flight is an order the watcher has never seen, and the safe reaction to an unrecognised order on your own account is to stop.
Fix was to stop storing and start signing.
The client order id is now derived with an HMAC over a secret only the service holds.
Verification became a recomputation instead of a lookup. Is this id one we could have produced. Yes or no.
tiering these by expected drop is one axis but the S tier separator is usually just points per unit of taker volume and whether that ratio is fixed.
half this list rebalances it the moment scripted flow shows up, other half never published one at all.
wwhich of these actually document theirs?
the turn it off part is where that breaks.
resting orders dont die with the process.
weve had brackets still sitting on the book after a redeploy with nothing left to reconcile them against. kill it mid inventory and ur holding a position with live orders and nothing managing either
@givenoxbt@variational_io fair. the thing that decides it after that is whether the ratio stays fixed once scripted flow shows up.
usually gets rebalanced the moment it does, cause the venue is optimising for fee revenue not for points distributed
@Capy_Research ye thats the gap. every venue reports on a different base, some net the deployer cut some dont.
weve been pulling it per venue by hand and our own event log still drifts from the venue sum by a small constant. if a normalised series exists somewhere wed take it
@HyperliquidNews 27.95m fees on 475b is under 0.6bp blended...
that reads like deployer rebates are netted out of the number.
is that gross builder fees collected or net after deployer share??
the two diverge a lot on sub deployer markets
@farxxxxx1 the skhx move is the one worth pulling apart.
a perp on an equity underlying flash crashing 18 pct is an oracle question not a flow question. was the mark following spot or the venues own index
@ElNachoCrypto oi 1.3b on 165m tvl is 8x. that only holds if the rwa legs are margined against something offvenue.
is the tvl number counting collateral only or collateral plus deployed margin?
@FroggyCyborg@variational_io 1b daily vol on 1.3b oi is a turnover of under 1x.
thats a book being held not traded.
the number that moves when api lands is turnover, not oi.
curious what the ratio looks like on the rwa legs specifically