Trading Agent logo

Project

Trading Agent

An evidence-backed second opinion on an options position

Market tools tend to fail in one of two directions — they bury you in raw data and leave the thinking to you, or they hand you a confident opinion with nothing underneath it. This one does the part in between.

It gathers the evidence and proposes structures.

It never places a trade.

Read-only by construction Thirteen data sources ~1,680 tests Local-first CLI

The problem

An opinion you can't audit is just a guess

Ask a model what it thinks about a symbol and it will tell you, fluently, every time. It will not tell you which data it actually had, which of it was stale, what it ignored, or whether the last twenty times it said this it was right. So the answer is unfalsifiable — and an unfalsifiable answer is worthless for a decision involving your own money.

Asking a model directly

A paragraph of plausible market commentary, assembled from whatever the model happened to remember. No sources, no timestamps, no record of what it concluded, and no way to find out later whether it was right.

Asking this

A dated, schema-checked read across five horizons, built from named sources with their freshness stated, on evidence computed before the model was ever called — and written down, so the call can be graded against what actually happened.


How it works

Evidence first, model second, decision last

The order matters more than any single piece. Everything mechanical happens before the model gets a turn, so the model is reasoning over prepared evidence rather than doing the gathering, the arithmetic, and the judgment all at once and hoping.

  1. 1

    Pull the evidence

    Price bars, option chains, macro series, company filings, news, Bitcoin on-chain and derivatives data, the Federal Reserve meeting calendar, and — if you turn it on — public discussion volume. Each source is a separate provider you enable and rank yourself.

  2. 2

    Compute the features, run the rules

    Deterministic calculators turn that pile into versioned, immutable snapshots — trend, volatility, liquidity, options structure and positioning, macro regime, event risk. Then a rule engine reads them and flags regimes, signals, and — this is the useful part — the places where the evidence contradicts itself.

  3. 3

    Hand the model a prepared brief

    Only now does an LLM get called, and it gets a compiled brief rather than raw data. A second pass criticises the first. What comes back is checked against a schema and a set of quality gates before it is allowed to exist, and it covers five horizons from one day out to a quarter.

  4. 4

    Propose the structures

    A second stage reads that thesis plus a read-only view of the account and proposes concrete options-income structures — covered calls, cash-secured puts, collars, protective puts, or the recommendation to sit in cash and do nothing, which it does make.


What it reads

Real sources, most of them free

None of it is simulated and none of it is scraped from somewhere it shouldn't be. Every lane is a documented provider with its own rate-limiting, retry, and health check, and the whole set is enabled per source in one config file.

Market and options

Daily price bars and full option chains — strikes, expiries, implied volatility, open interest — which is what any income structure actually gets priced off.

Macro and the calendar

Inflation, core PCE, unemployment, jobless claims, credit spreads, the ten-year and the funds rate, plus every Federal Reserve meeting date out to 2028, so proximity to a rate decision is a computed feature and not a thing you forgot.

Filings and news

Company filings straight from the regulator, and a headline feed joined to the symbol, so a thesis can point at an event rather than a vibe.

Bitcoin and public chatter

On-chain metrics, mempool and fee pressure, and funding and open interest from the futures market — because a Bitcoin ETF position is a Bitcoin position wearing a ticker. Public discussion volume is there too, opt-in, measured as volume and spikes rather than sentiment.


The discipline

Four rules that keep it honest

Any tool like this is one shortcut away from being an expensive random number generator. These are the constraints that stop that, and they are enforced in code rather than promised in a prompt.

It never places a trade

There is no execution path in the codebase. Not disabled, not gated behind a flag — absent. Every surface analyses, scores, and recommends; the human places the order, or doesn't.

The model never sees the raw pile

It receives a compiled brief. That keeps the reasoning auditable, keeps the cost predictable, and means a bad answer can be traced to the evidence that produced it rather than to a black box.

It grades its own past calls

When a thesis resolves, the outcome is scored and each rule's hit rate is updated. Those hit rates go back into the next brief, with an instruction to discount the rules that have been wrong. Being wrong makes it quieter, which is the behaviour you want.

Missing data is stated, not filled in

Freshness, coverage, and market-halt gates run before the model does, and quality gates run after. A thesis built on thin evidence says so in its own confidence score instead of sounding just as sure as a good one.


The part I'm proudest of

"Read-only" should be a boundary, not a promise

The broker issues no read-only credential. The same username and password that read your positions can also trade them, which means every "read-only integration" against it is a naming convention — right up until something misbehaves.

What most people ship

The credential sits in the same environment as the agent. Read-only is a comment in the code and a good intention. A prompt injection, a bad tool call, or an ordinary bug is all that stands between the two.

What this does instead

The credential lives with a separate operating-system user that has no shell and no login. That user runs the account fetch on a schedule; my account — and anything running as me, including the agent — reads the resulting database and cannot read the credential or reach the broker at all. The separation is enforced by the OS, not by the code asking nicely.


Status

Where it stands

Pre-1.0 and private — a personal tool I use on my own positions, not a product and not for sale. It runs locally as a command-line tool with its own database, its own health check, and about 1,680 tests, built out over twelve milestones from the data layer up through the strategist.

Nothing it produces is financial advice, and nothing on this page is either. It is a thinking instrument for one person who is responsible for his own decisions.