How a discretionary setup becomes a rule

A trader says a setup "looks right." A program can't look. Everything I knew about markets had to be rewritten as conditions a machine could check on a bar close, and most of what I knew didn't survive the rewrite.

I started trading at 15. By the time I was in NQ, ES, and GC every session, I had a read on the market that worked often enough to keep me in it. The problem with a read is that you can't test it. You can't hand it to a server. You can't know whether it worked because it's right or because the last six months were kind to it.

So I tried to write it down. That's where BOVYN started.

Start with what you actually look at

When I say I "see structure," what am I seeing? Prior highs and lows. The moments price runs through one of them, takes the stops sitting there, and comes back. Where the session is, because Asia, London, and the New York morning do not behave the same way. Pivots that hold and pivots that leak.

Each of those became a feature the code computes. Fractal pivots from the price series. A liquidity sweep defined as a move beyond a prior level followed by a close back inside it. Session windows as fixed time ranges. On top of the price structure I added context from the options market, because dealer positioning changes where price can travel: gamma-exposure walls and implied-volatility targets became inputs too.

None of this is exotic. The work is in the definitions. "Back inside" has to mean a specific close relative to a specific level. "Prior high" has to mean a lookback that you chose and can defend. Every vague word in my head became a number in a config.

One setup, all the way down

Take the sweep. In my head it was one idea. In code it's a chain of yes-or-no checks.

Is there a qualifying prior level? Did price exceed it by enough to matter, in the session where this setup is allowed to fire? Did it close back inside? Is the broader structure pointing the same way, or is this a sweep into a wall? If all of that is true, where is the entry zone, where is the stop, and where are the three targets, computed from the structure and not from a round number I like?

And then the part discretionary traders skip: what kills it. A close beyond the sweep high. A session change. A second sweep that says the first one was wrong. Invalidation has to be as explicit as entry, or the system holds losers the way a person does.

That chain is one engine. BOVYN has seventeen of them, each a different setup family, each written the same way.

Engines vote. The threshold decides.

I didn't want one engine to be able to ship a signal on its own, because one engine is one opinion. So the engines vote, and a consensus score decides whether anything goes out at all. Below the threshold, the system is silent. Above it, the signal carries its grade, its entry zone, its stop, its targets, and the reasons the grade is what it is. If I can't explain a signal, I don't want it.

Silence turned out to be the most valuable output. A discretionary trader can always find something. A system that refuses most of the day is doing the job.

Risk doesn't care how sure you are

Position size comes from two inputs: how much of the account I'm willing to lose on the trade, and how far the stop is in ticks. That's it. Conviction isn't an input. The tick value for the instrument does the rest, so NQ and GC size differently for the same dollar risk, as they should.

Above the sizer sits a guardian. It tracks the account's high-water mark, pauses the system after consecutive losses, and kills the session outright when a daily limit is hit. Those rules exist because I know exactly what I do on a bad day without them.

Then you have to run it

A backtest is a claim. Deployment is where the claim meets latency, fills, outages, and your own urge to interfere. I put the engines on a VPS, connected them to a broker, and ran them against funded accounts, with every signal logged with its entry, stop, targets, and outcome. The log is the only honest scoreboard. A chart lets you remember the winners.

Before any of that, I ran the rules across roughly fifteen years of futures history, regime by regime. The configurations that survived did so at about a 74 percent win rate with two-to-one reward to risk, and I've written elsewhere why that number needs its sample size, costs, drawdown, and out-of-sample split attached before it means anything.

What it taught me

Writing down what you know is humbling, because most of it turns out to be vibes. What's left after the rewrite is smaller than what you started with, and it works when you're asleep.

I run Rōvn the same way. A credential, a license, a verification, and a decision are four different things with four different sources, and a system that treats them as one word is doing what I used to do with a chart: seeing a pattern and calling it a rule.

All writing BOVYN client on GitHub