henryzhangpku

Joined 7 years ago

Karma
10
Submissions
14
Member since
Apr 12
Henry Zhang. I build FST (Full Self Trading): an AI agent that trades a paper account live every weekday from the US open and explains each decision out loud. Two signal sources have to agree before an entry, and the stop is set before the fill.

Watch it live (one page, every platform): https://quantsignals.xyz/live

Around it I build small trading tools: KATY (model forecasts drawn on TradingView charts), a live options-flow board, and a few more at https://quantsignals.xyz

Paper: Hard to Fool, an LLM research loop for quant finance built to say no (arXiv 2611.06607): https://arxiv.org/abs/2611.06607

Open source: https://github.com/henryzhangpku/autonomous-quant-researcher

Writing: https://henryzhang.substack.com

X: https://x.com/henryzhang999

Interested in agents that act in the real world, how to evaluate them, and building in public.

View on Hacker News

Recent submissions

Comment · 3 months ago
I've spent about a year building this and the part I'd most like feedback on is the safety model, not the trading.

It runs a loop — screen the market, analyse a candidate, size it, route the order, monitor the position, exit — and the only interesting engineering problem is what it must refuse to do. You define capital, markets, risk limits, and how much autonomy it gets: research-only, approve-every-order, or bounded automation. It cannot exceed the grant.

It starts on a paper account. Live trading only happens after you explicitly connect a broker.

Things I got wrong that might be useful to anyone building agents that touch real systems:

Our stop control rendered only while a session was "running". A session can be alive but unhealthy — expired broker auth, errored runner, halted risk — and in those states we withheld the stop button. So the control existed in every situation except an emergency. One paper session sat unstoppable for 218 hours while the UI advised stopping it.

A reset button that rendered inside a scroll container, so on desktop the wheel scrolled the page and it could never be reached. Rendered and unreachable is identical to missing.

A disconnect that refused when there was nothing to disconnect — aborting before cleanup, which made the dead record permanent.

Sizing off a failed price read. If a quote call returns the last good tick instead of an error, the agent sizes against a number that doesn't exist. Fail closed on reads, always.

The general shape: guards get written from the happy path, and the broken states are by definition the ones nobody pictured. In most software that costs an afternoon; here it holds a position.

What I deliberately don't have: a verified live performance record. I publish the evidence standard I'd have to meet before claiming one (quantsignals.xyz/fst/proof) and I haven't met it. If someone shows you a win rate for an agent like this, ask what the denominator was.

Happy to answer anything about the architecture, the broker integrations (8 of them, each one its own dialect of pain), or the risk model.

Comment · 2 years ago
Comment · 2 years ago
Full lyrics :

(Verse 1) I was born with a vision, built from the ground, Turned every failure into gold, I never back down, Hustle on my mind, dreams in my soul, Every sleepless night is just part of the goal.

Yeah, I fell a hundred times, but I got back up, Pourin’ sweat and tears, never knowin’ when enough’s enough, Through the storms and the rain, through the joy and the pain, I learned to dance in the struggle, never walkin’ in vain.

(Chorus) This is for the ones who rise when they fall, Who see the mountain high, and still climb tall, For the fire inside that will never fade, Entrepreneurs, we built this world—we’re self-made.

(Verse 2) I took a leap of faith, and I learned how to fly, No net, no plan B, just my heart and the sky, They said I’d never make it, but they don’t know the grind, Every “no” I heard, just sharpened my mind.

We’re the dreamers, the builders, the ones who believe, Turning nothing into something, we never deceive, Yeah, we walk the hard road, but we never lose hope, In a world full of limits, we created the scope.

(Chorus) This is for the ones who rise when they fall, Who see the mountain high, and still climb tall, For the fire inside that will never fade, Entrepreneurs, we built this world—we’re self-made.

(Bridge) Every battle scar’s a badge of pride, We’re changin’ the world, one dream at a time, If you feel the weight, know you’re not alone, In every entrepreneur, there's a kingdom of their own.

(Chorus) This is for the ones who rise when they fall, Who see the mountain high, and still climb tall, For the fire inside that will never fade, Entrepreneurs, we built this world—we’re self-made.

(Outro) So stand up proud, let the tears run free, This is our anthem, this is who we’re meant to be, Through the highs and the lows, we always survive, Entrepreneurs, we keep the dream alive.

Comment · 2 years ago

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton