PR&R / Guides & Reports / Scalper Lessons
Field Notes · 8 lessons · Free

Lessons from a $25K-in-20-Minutes Scalper, Translated for Your Polymarket Bot

Fabio Valentini scalps NASDAQ futures live with a million-dollar personal account and consistently pulls six-figure weeks. None of the edge is the platform. It’s the discipline. Here’s how that discipline maps onto bot logic.

By PR&R Research ~8 min read Source: Fabio Valentini interview Translation Note

A discretionary scalper and a Polymarket bot don’t look like the same animal. One is a human reading order flow on NASDAQ futures with reflexes, judgment, and ego on the line. The other is a Python loop polling the Polymarket CLOB. But strip away the surface and the rules an elite scalper actually follows are exactly what good bot architecture enforces by default.

We watched Fabio’s two-hour live session and pulled out the principles he keeps repeating. Each one below is the human version on the left, the bot translation on the right. If your Polymarket bot already enforces all of these, you’ve built something good. If it doesn’t, you have a roadmap.

43-49%
Fabio’s win rate
~3.3x
Avg win / avg loss
$60K
3-day session profit
100%
Annual return target

Lesson 01The Edge Lives in EV, Not Win Rate

“I have 43 to 49% win rate. Average winning trade is $1,000 per contract. Max winning trade is $10,000. Max losing trade is $3,200.” Fabio Valentini

Most people optimizing a strategy reach for win rate. Fabio loses more trades than he wins. The reason he prints money is the shape of his return distribution: tiny, capped losses on the wrong side and big asymmetric wins on the right side. Win rate is a vanity metric. Expected value per trade is the only one that matters.

Human · Fabio

Cuts losing trades within seconds when the order flow shows the level didn’t hold. Lets winners build by trailing stops and adding contracts as the move develops. Knows his historical EV per trade because he tracks it.

Bot · Polymarket

Optimize the strategy for E[trade_return], not P(win). Track per-trade EV by market type. Refuse trades where the modeled EV doesn’t clear fees + slippage with margin. Win rate of 50% is fine if average win > average loss.


Lesson 02Build a Cushion. Then Risk Only the Cushion.

“When you are in drawdown, you have less clarity. Your role is immediately to build a cushion for the day. Sit on it like a king.” Fabio Valentini

Fabio’s first goal every session is one good trade that puts him into profit. Once he’s up, he changes mode entirely, every subsequent trade is sized so that the worst case is giving back today’s gains, never touching base capital. This is psychological for him. It’s mechanical for a bot.

Human · Fabio

Walks away after the first AAA setup hits if it produces a meaningful day. The 20K profit is the cushion. Anything after risks only that cushion, never the underlying account.

Bot · Polymarket

Track session PnL in state. While session_pnl <= 0: trade only highest-conviction setups at min size. While session_pnl > 0: scale up, but hard-stop the bot if PnL retraces to zero. Daily loss cap is non-negotiable.


Lesson 03Cut Wrong Fast, Scale Into Right

“I’m not going to load everything while the market is collapsing. I scale in as we build profit. I want to be right with the market.” Fabio Valentini

Fabio enters with 2-4 contracts, not 10. Stop is tight. The moment the trade moves in his favor, stop goes to breakeven and he adds size. The shape is: small bet to test the thesis, big bet once the market confirms. It’s the opposite of how most people scale. Most go big on entry, then average down when wrong.

Human · Fabio

Reads order flow to confirm the level held. If absorption shows on his side, scales up immediately. Tight stop, usually 1-2K loss tolerance, moved to zero within a minute of being right.

Bot · Polymarket

Initial order = 25-33% of intended position. If price moves favorably by N ticks within T seconds, add the next tranche and trail stop to entry. If thesis breaks before scaling, exit at 1x size loss.

if confirm_signal(t+30s):
    add_tranche()
    stop = entry_price
else:
    exit_at_market()

Lesson 04Asymmetric Risk-Reward, Always

“We are risking 2,000 to make a potential 10,000. This is the AAA setup.” Fabio Valentini

Every trade Fabio takes has a target/stop ratio of at least 3:1, often 5:1, sometimes 10:1. He won’t take symmetric trades. The reason is brutal arithmetic: if your average win equals your average loss, you need >50% win rate to be profitable, and you don’t have that. Asymmetric R:R is what lets a sub-50% win rate strategy compound.

Human · Fabio

Refuses setups without clean structure for an asymmetric exit. Won’t risk 5K to make 5K, “totally not worth it.” Looks for trades where the stop is right behind the protection level and the target is the next major level.

Bot · Polymarket

Hard filter at signal generation: (target - entry) / (entry - stop) >= 3.0. If a market doesn’t offer that geometry, don’t trade it. Prediction markets bounded 0-1 actually give you natural asymmetry: a market at 0.15 has more upside room than downside, mathematically.


Lesson 05Walk Away After the AAA Setup

“If we weren’t in the studio, you wouldn’t be on the charts. After taking the 20,000, my rules say it’s done.” Fabio Valentini

The single most important sentence in the whole interview. Fabio admits that all the trades he took after the first AAA setup were for the camera, not for him. In real life, he books the win and walks. Most retail traders give back days of profit grinding mediocre setups after a great one. Bots have the same disease: they trade because they can, not because they should.

Human · Fabio

Has hard rules: 3-5 stop losses → done for the day. Hits target after a clean AAA setup → done for the day. Doesn’t trade consolidation. “Probably you will have consolidation after a strong move. We took the best move. We walk away.”

Bot · Polymarket

Score every setup A/B/C at signal time. Trade only A. Once N successful A trades have hit per market per session, the bot pauses on that market until the next session window. No grinding B-grade setups during consolidation just because the bot is awake.


Lesson 06Different Models for Different Regimes

“If I’m not trend following, I don’t trade. The market is saying to you: we are in contraction. What are you going to take? Seven, eight stop losses?” Fabio Valentini

Fabio runs different models for different market states. His main NASDAQ model is for trending sessions. He has a separate consolidation model. He has an option model. He has a long-term crypto allocation model. He doesn’t try to make one strategy work in all conditions because he knows it can’t.

Human · Fabio

Reads market regime in real time using volume distribution, delta, and price action structure. If the day looks like contraction, he steps away from the trend model and either switches or sits out. Refuses to force a trend strategy on a sideways market.

Bot · Polymarket

Implement regime detection as a first-class component. Classify each market: trending, ranging, news_shocked, illiquid, near_resolution. Route to appropriate sub-strategy. Default route = no trade. Most market hours should produce no trades.


Lesson 07Statistics Validate Everything, Continuously

“On Wednesday, the model was giving back all the profit. We removed Wednesday. Profit factor went to 2.1, completely consistent.” Fabio Valentini

Fabio exports every trade to Python and runs slice-and-dice analysis on the weekends. He found his crude oil model was profitable Mon/Tue/Thu/Fri but bled every Wednesday due to volatility patterns. He removed Wednesdays. The model became consistent. This is the difference between a strategy that lasts and one that quietly dies.

Human · Fabio

Tracks every execution. Slices by day-of-week, hour-of-day, session, market condition. Asks “is this slice positive EV in the last 90 days?” If no, removes it from the strategy. Repeats every weekend.

Bot · Polymarket

Auto-validation pipeline running on rolling windows. For each market, each hour bucket, each setup type: track 30/60/90-day PnL. Auto-disable buckets that go negative on fresh data. The bot kills its own dead patterns before they kill the bot.


Lesson 08Capacity Awareness

“Capacity of the strategy. How many millions can I manage? Scalping NASDAQ, 25 to 40 million max. For a hedge fund, that’s peanuts.” Fabio Valentini

A strategy that prints at $100K may not work at $10M. A market-impact ceiling exists for every edge. Fabio knows his. He diversifies into options for scale because order-flow scalping doesn’t compound past a certain account size. Polymarket bots hit this wall fast because the books are thin.

Human · Fabio

Splits execution across NASDAQ and S&P (95% correlated, more liquid) when he wants to deploy more capital. Builds separate models for options, crypto arbitrage, and stock picking, because each has a different capacity ceiling.

Bot · Polymarket

Per-market position size cap as a function of min(book_depth × 0.05, max_size). Polymarket book depth is the binding constraint. A bot that works on $50 trades may move the price 2-3 cents on a $5,000 trade and destroy its own edge. Test capacity before scaling capital.


The Common Thread

Every one of these principles is about discipline imposed before opportunity. Fabio decides his rules cold, then executes them hot. The reason a bot has a structural advantage over a human is that it can’t break those rules, but only if you’ve actually written them down and made them mechanical. Most bots fail not because the strategy was bad but because the operator never encoded the discipline that made the strategy work.

A Polymarket bot is just a list of rules running on a clock. The work isn’t in the rules being clever. It’s in the rules being right, and in the bot being honest enough to follow them when they’re inconvenient. Fabio’s edge is that he treats his own emotions like noise and his rules like law. Build a bot that does the same.

Want the bot version of these rules?

The Discord #research-discipline channel has the full encoded rule-set, the scoring rubric for A/B/C setups, and members running it on live markets.

Join the Discord