← Ladder · · ·

Why The AI Does Not Push The Buy Button

The method that worked better: let AI plan the trade, but let deterministic code execute only after proof.

May 2026 · 2 min read

#LLM agents#risk management#paper trading#trading systems
28May/ 2026 archive by : thatduckling

The obvious AI trading idea is wrong, at least for us. The obvious idea is simple: show a chart to AI, ask "buy or sell?", then place the order.

Clean. Simple. Also a little terrifying.

The market is not a screenshot test. A model can understand the idea and still enter badly. It can be right about direction and wrong about timing. It can like the setup but ignore spread. It can choose a stop that looks logical and then gets destroyed by normal candle noise.

So we stopped treating AI approval as execution permission.

What Did Not Work

Direct approval did not feel safe. The model could say "trade now" too easily. Not always, but enough that the system needed a better contract.

The mistake was giving one answer too much power:

LLM says yes
system trades

That is too thin. There is no real gap between judgment and action, and in trading that gap is where safety lives.

What Works Better

The better method is:

AI creates plan
code waits for trigger
risk checks execution
broker records result

This made the AI more useful, not less useful. Now it has to say what it wants and why.

{
  "decision": "wait_for_trigger",
  "setup": "VWAP Reclaim",
  "trigger": "reclaim_and_hold",
  "stop": "below structure",
  "target": "at least 2R",
  "invalidation": "loses VWAP and fails to reclaim",
  "opposing_thesis": "move is late and buyers may be tired"
}

Now we have something real. Not vibes. A plan.

The Trigger Is The Filter

A plan is not a trade. That is the part that matters.

The plan says, "If this happens, then consider trading." The trigger watcher asks whether it actually happened. Then risk asks whether the trade can actually survive execution.

if reward_risk < 2:
    block("not enough reward")

if spread > max_spread:
    block("spread too wide")

if stop_too_close:
    block("stop inside noise")

if setup_not_validated:
    block("not promoted")

This is the part a lot of AI demos skip. They show the smart reasoning. They do not show the boring adult asking, "Okay, but can this actually be traded?" The boring adult is important.

The Finding

We found this:

AI as final approver = risky
AI as planner + critic = useful
AI plan + deterministic trigger = much better

The AI should answer what is happening, why it matters, what setup this is, what would prove it wrong, and what exact trigger is needed. Code should answer whether the data is fresh, spread is acceptable, stop is realistic, reward/risk is valid, setup is promoted, and exposure is allowed.

Different jobs. Different tools.

Why This Matters

If the AI directly pushes the button, a fluent mistake becomes a real trade. If the AI creates a plan, a fluent mistake becomes something we can reject, track, and learn from.

That is a huge difference. The goal is not to make AI less important. The goal is to make AI useful without making it dangerous.

So no, the AI does not push the buy button. It writes the plan. Then the system makes it earn the trade.

read next/ READ NEXT /read next