← Back to blog

Where to Find an Edge — and Why a Wealth of Data Works Against You

Published 2026-07-28 · By Drew Shelem

Where to Find an Edge — and Why a Wealth of Data Works Against You

A map of three places where an edge has a reason — and why a signal from a search is almost always false

A new article in the cycle, and the first that looks the other way. Until now the cycle taught you not to fool yourself: to tell a win rate from an edge, to catch overfitting, to see the gap with live trading, not to reshuffle Kelly. All of that is defense — how to kill a bad strategy. This article is about where to get hypotheses: where an edge can live on these markets. But with an unexpected twist. You have two data sources — Polymarket and Binance spot — each with price and non-price data, indicators on them, and endless combinations. It looks like riches. In fact it’s a machine for false edges, and the main idea of the article is not a list of places but a discipline: look for a signal that has a reason, not one from a search.


Where this topic even comes from

Having read the cycle straight through, you’re probably left with an unpleasant feeling: eight times over you were taught not to trust — your numbers, your backtest, your confidence — and not once told what to test. You came out armed with instruments that can slaughter any idea, and without a single idea.

This article closes the gap, but first it has to warn you about a danger hiding exactly where you’ll be looking. In gogobots you have access to two sources: the Polymarket market (contract price, volume, order book, flow) and Binance spot on the same bitcoin (price, volume, depth) — plus any indicators on them: RSI, ATR, distance to the strike, order-book imbalance, anything, in any combination. The space of signals is practically infinite.

And here’s the hard truth: an infinite space of signals is a machine that will reliably birth you an “edge” out of pure noise, if you search naively. The more combinations you try, the higher the best result on history — even when there’s no real edge at all. There was an article in the middle of the cycle about this (the more configurations you test, the higher the best Sharpe at zero edge); here that problem moves to the front as the main danger of the search for an edge itself. So the article gives two things: a map of places where an edge has a reason, and the discipline without which rich data will drown you.


The load-bearing idea: a signal with a reason beats a signal from a search

Before we get to the places, let me show you the trap so that you can repeat its logic in your head, not take my word for it. Step by step.

Step one — a single random strategy. Take a random feature (pure noise, no connection to the outcome) and the rule “buy when the feature is positive.” Run it on history where there’s no edge at all. What Sharpe comes out? Almost never zero. A single random strategy gives a Sharpe scattered around zero with a standard deviation of about one — that is, it behaves like a z-score: ±1 is ordinary, ±2 shows up occasionally. Pure chance, no edge in it.

Step two — the best of many. Now the thing a naive search does: try many strategies and keep the best. Here’s the core of the trap — you’re no longer looking at a typical strategy, but at the maximum of many. And the maximum grows with the number of tries, even when every try has zero edge:

How many random strategies were tried Best Sharpe True edge
30 2.14 0
300 2.95 0
2300 3.56 0

All three rows are pure noise. Read them this way: the more you tried, the further the luckiest one climbed into the black. The maximum of N tries grows slowly, logarithmically (a rough ceiling is √(2·ln N), for our Ns that’s 2.6, 3.4, 3.9), but a grid over a few indicators is thousands of tries in one click, and the best of them confidently climbs past Sharpe 3. Estimate it in your head: however many rules you actually tried, that’s how many z-scores you drew, and you took the maximum of them. If your beautiful backtest gave a Sharpe near that ceiling — that isn’t an edge, it’s the price of the search.

Step three — the twist for these markets, and it’s subtler than it looks. Indicators on price — RSI, a moving average, distance to the strike — are all computed from one and the same price of one asset, bitcoin, and are therefore strongly correlated. What does that do to the search? The same 2300 triples, but drawn from 25 strongly correlated features (all about one asset, average correlation ~0.85), give a best Sharpe of only 1.11 — because effectively these aren’t 2300 independent tries, but about two: all the combinations are nearly identical.

From here comes a non-obvious conclusion, one I first formulated wrong, so let me correct it honestly. You’d think that since the indicators are correlated, searching over them is especially dangerous. In fact it’s the opposite: correlation lowers the false Sharpe, because it reduces the number of genuinely different tries. What’s dangerous about it is something else — it deceives the counter: you think you tried 2300 ideas, when you tried essentially two, and you can no longer honestly tell how strict a correction for that search to apply.

And here’s where a big false edge really is born — when you combine genuinely different data. Price, RSI, and a moving average are one and the same bitcoin price in three wrappers; they nearly duplicate one another. But the order book, trade volume, the imbalance between buys and sells — and all of it on two venues at once — these aren’t derivatives of one price, they’re independent signals, each carrying its own information. It’s their combinations that give you those hundreds and thousands of genuinely independent tries — and with them a big false edge out of pure noise, the very 3.6 at 2300 tries. The more varied your data, the wider the search space, and the easier it is to accidentally fish out a “strategy” that isn’t there.

What protects you? Not more search, and not even only the validation gates from earlier articles. What protects you is a reason: a hypothesis about why an edge should exist, formulated before you dug into the data. A reason narrows the search to a few tries you can honestly validate. A blind search over genuinely different data gives so many independent tries that the correction for their number explodes, and any “edge” drowns in it.

So what comes next is not a “list of signals” but three places where an edge has a reason. Start here, not with a search.


Degrees of freedom: the numerator and denominator of one fraction

“Reason versus search” is still a slogan. Let’s make it measurable. There’s a precise concept from statistics and quant trading — degrees of freedom: the number of settings you tuned to the data. Every threshold, indicator window, choice of feature, stop boundary — plus everything a grid or an agent searched, plus everything you ran by hand and discarded. It’s a property of your search, not of the final strategy: if you tried forty variants by hand and kept the best, you have forty trials, even if one setting remains in the strategy.

The second quantity is the sample size: the number of independent trades on Polymarket (entry-and-exit inside a contract window). It’s a property of your data.

And the rule that decides everything: what’s dangerous is not a large number of settings by itself, but its ratio to the sample size. This is the standard principle of model fitting: to tell a real setting from a fit to noise, there must be substantially more independent observations than free parameters. When the number of settings approaches the number of observations, you simply memorize the noise — the in-sample result stops telling you anything about the future. An industry rule of thumb (from Pardo, again) puts a number on this: no fewer than 30–50 trades per optimized parameter, and ideally at least 90–95% of the sample should remain “free.” It’s not a law of nature but a rough bar, and you can apply it to your own strategy: three tuned parameters on 90 trades is on the edge of self-deception; on 3000 trades it’s tolerable.

Two subtleties in the counting, both classic. First: data used twice is counted once — two moving averages on the same closing price consume not two independent sets of degrees of freedom but nearly one, because they look at the same thing. That’s exactly our conclusion about correlated features, seen from Pardo’s side. Second: the two quantities hit the fraction from opposite ends — numerator and denominator.

Numerator — the search inflates the number of settings. This is the trap already shown: the best of 2300 independent tries gave Sharpe 3.6 out of pure noise. Every added setting is an extra degree of freedom, and the best result at zero edge grows with their number.

Denominator — data and filters cut the number of trades. Robert Pardo, a classic of trading-system design, puts it this way: a degree of freedom is consumed by every rule and every data point an indicator eats. That is, the spending happens from two sides — rules and tuned parameters in the numerator, and data eaten by indicators in the denominator. But you have a subtlety Pardo doesn’t: the indicator’s series and the series where the edge is measured are different. The indicator lives on the Binance spot series (long and continuous), while the edge is measured in Polymarket trades. So the denominator’s spending has to be counted not in spot points but in trades — and it happens anyway, by two routes.

The first route — warmup shifts the start of trading. A 200-period moving average on the spot isn’t defined until 200 points have accumulated, and all that time the bot stays silent and opens no trades. Every long window pushes back the moment from which the strategy can trade at all — and thereby shaves trades off the start of the sample. Warmup isn’t free; it’s paid in trades, just through a shift of the start rather than one-for-one with spot points.

The second route — the filter cuts trades as it goes. The rule “spot above the moving average → prefer buying up” doesn’t touch the spot series, but it lets through only some of the windows: you enter only where the filter allowed. The sample for estimating the edge falls. Look at what that does at the same edge per trade:

How many trades the filter left Number of trades t-statistic Verdict
No filter 5000 +2.98 edge confirmed (t > 2)
Left 25% 1250 +1.50 not distinguishable from zero
Strict, ~6% 300 +0.76 not distinguishable from zero

The edge per trade didn’t change — only the number of trades after the filter did. And a real edge that would have been confirmed on the full sample drowns after a strict filter: there aren’t enough trades to tell it from zero. The filter isn’t free — it pays in sample.

When a filter is a degree of freedom, and when it isn’t. The filter “spot above the moving average” is not a degree of freedom if the moving-average period was taken for a reason (a standard window, not tuned) — then it simply cuts the denominator. But if you searched the period (50, 100, 200, 500) and kept the best — then a degree of freedom was added, and the numerator inflated. The same filter can be honest (cuts N) or a fit (inflates k) — the difference is whether you tuned it to the data.

Three ways to accumulate degrees of freedom — and two of them hide the search behind one button. By hand: don’t forget the hidden search — however many variants you ran and discarded, that’s how many trials there were, even if you “set the parameters yourself.” An automatic grid: a thousand combinations in one click — the most invisible inflation of the numerator. A hypothesis in words for an AI agent: honest exactly to the degree it’s causal — “check whether the favorite is overpriced” sets a narrow test, while “find me something profitable” forces the agent to search, and you’re back in a grid, only disguised. Count trials across the whole process, not by the final strategy — and demand that the tool show you their number, or you’ll take the best of a thousand flukes for a discovery.

And here’s what matters: both quantities of the fraction must be counted honestly, not at face value. Both the numerator and the denominator “shrink” on these markets, and both times toward greater danger.

Start with the numerator (the number of settings). We already saw it: 2300 combinations of price indicators aren’t 2300 independent tries but effectively about two, because they all look at the same price of the same bitcoin. You’d think that’s good — fewer independent tries, smaller false edge. But the trap is elsewhere: you think you honestly tried two thousand ideas, and you apply a correction for two thousand trials, while in fact you tried two. The correction comes out crooked, and you either throw away a find for nothing or, the other way, accept garbage.

Now the denominator (the number of trades). It’s also smaller than it looks, for two reasons. The first is inertia: trades come in runs (there was a separate article about how losses arrive in clumps), and 5000 such trades at moderate runiness carry as much independent information as roughly 1667 genuinely independent ones would. The second is the filter itself: the rule “spot above the moving average” keeps you in one market regime for a long stretch, until the spot drops below the average. So the trades the filter let through come clustered, in one regime, and resemble each other more than random ones — meaning even fewer among them are independent.

Add one to the other: you tend to overestimate the numerator and underestimate the real independence of both. So the margin of safety you need is larger than the naive count of “parameters versus trades” suggests.

The rule for the client, in one line: keep the number of tuned settings much smaller than the number of Polymarket trades that survived your filters (Pardo’s guide — 30–50 trades per parameter), both quantities in effective (independent) units. A reason beats a search precisely because it sets few settings on a large sample; a blind grid does the opposite — many settings on a sample that its own warmup and filters have trimmed.


One test for all three places

Before we take apart the three places, let’s understand one simple thing that all of them rest on.

A contract’s price is the market’s bet on a probability. A “BTC will rise” contract at 60 cents means: the market thinks this will happen in about 60 cases out of 100. The price is the market’s opinion of the probability, expressed in cents — no more and no less. (One cent of price is one percentage point of probability, so from here on “cent” and “point” mean the same thing for me.)

Now imagine you collected a hundred such contracts, all traded at 60 cents, and looked at how they ended. If the rise happened in about 60 of them — the market was right, the price is fair, there’s nothing to earn: you bought for 60 cents what is worth 60. But if the rise happened in only 52 out of 100 — the market overpriced it: reality came out below the price, you paid 60 for what was worth 52. Eight cents of difference on each contract — that’s your earnings, if you systematically bet against such overpriced contracts.

That’s the whole test, one for all three places: collect your trades, look at how often the outcome actually happened, and compare it with the price at which you entered. It matches — no edge, the market isn’t wrong, and no amount of bot-tinkering will create one. It diverges steadily in some direction — and it’s in that divergence that your edge lives. The three places below are simply three different slices of data where such a divergence is most often found.

One honest caveat, so as not to pass off the wishful as fact. Strictly speaking, the price isn’t quite the “true” probability: the market also bakes its attitude toward risk into it. So a steady gap between frequency and price doesn’t always mean the market is wrong — sometimes it’s a risk premium the market pays to whoever agrees to hold an uncomfortable position (especially on the expensive side — place 3). For you, trading that gap, the difference is small: both a market error and a risk premium give the same measurable edge. What matters is something else — you receive the risk premium together with the risk itself: it’s not a gift but payment for taking on what others avoid. You can earn on it, but with more white knuckles than on a clean market error.

And the last thing, without which the whole test is self-deception. The gap between frequency and price becomes an edge only if it’s larger than your costs. Every entry and exit costs money: the fee plus the spread eat about three cents round trip (we measured this in the separate article on costs). So a two-cent gap isn’t an edge, it’s an illusion: you’ll find it, get excited, and the fee will eat it. A gap becomes a real edge somewhere from four or five cents up. Apply this bar to every number ahead: the moment you see a gap, first ask whether it survives the costs.


Place 1. Calibration at your limit price

The first place, and here’s a crucial correction you can’t skip: you don’t take just any price — you hard-set your entry price with a limit order. Most strategies don’t work otherwise: you put a limit at 60 cents and enter only there. So calibration too must be measured not across the whole market from 5 to 95 cents, but at your target price — how often the outcome happens precisely at the 60 cents where you place the limit.

And here an effect emerges that isn’t in the naive picture — adverse selection. A limit at 60 cents fills more often when the price moves toward it and below, that is, when the market moves against you. So you have to measure the frequency of the outcome on actually filled limits, not on all the ones where the signal fired. Here’s what that gives on the data:

Measured at price 0.60 Outcome frequency Gap vs price What it means
Honest market, all signals 0.600 ~0.000 market is calibrated
Honest market, filled limits 0.590 −0.010 the hidden cost of the limit — adverse selection
Biased market, filled 0.543 −0.057 selection + real market bias

Read it by rows. On all signals the honest market gives exactly 60% — it’s right. But on filled limits the frequency drops to 59%: that one point is neither an edge nor a bias, it’s the cost of the limit execution itself, you systematically fill a bit more often on the unfavorable side. And in the biased market the frequency on filled fills is already 54.3%: a gap of 5.7 points, but you have to subtract that one point of adverse selection from it to get the real bias (≈4.7 points). That, after subtracting costs, is the niche.

The practical takeaway: measure calibration at your limit price and on filled fills, and subtract the selection cost from the gap you find. A naive calibration across the whole market and by the signal price (rather than the fill price) will overstate your edge by exactly what you won’t get in reality.


Place 2. Binance spot — the same asset, only deeper and faster

The second place. The contract “BTC up by expiry” is a bet on the future price of bitcoin. And bitcoin trades on Binance, where there’s orders of magnitude more liquidity and speed than in the Polymarket contract. The key: the spot and the contract look at one and the same asset, but the spot is a deeper and faster market. From this come two reasons the spot can give an edge, and each is tested separately.

Reason one — speed. Binance reflects bitcoin’s movement faster, and the contract price catches up. If there’s a lag between them, the spot has already moved while the contract price is still stale — there’s your gap. But what you have to test is not “does the spot predict the outcome” (of course it does — it’s the same asset), but does the spot lead the contract price, which is already looking at that same spot:

Situation Edge per trade What it means
Contract instantly absorbed the spot −0.004 no edge — you’re duplicating the price
Contract catches up (lag) +0.049 the spot leads — there’s an edge

The difference between the rows is not in the signal, the signal is one and the same. The difference is in whether the contract had time to digest the spot. If it did — your spot indicator adds nothing beyond the price, you’re running one piece of information in circles. If the contract is slower — five points of edge live in the lag.

Reason two — accuracy. From the spot (its depth, microstructure, your own model) you can estimate the probability of the outcome more accurately than the contract price does. This is tested with a metric from the article on metrics — the Brier score (lower is a more accurate probability forecast):

Whose probability estimate Brier (lower = more accurate)
Contract price 0.2431
Your estimate from the spot 0.2412

Your estimate is slightly more accurate than the price — and it’s on that “slightly” that the accuracy edge lives. But it’s especially easy to fool yourself here, and two warnings at once. First: since the spot and the contract are about one asset, your “estimate from the spot” risks turning out to be the same price in another wrapper. So the test has to be strict — does your estimate beat the realized frequency better than the price does, on data the model hasn’t seen. Second, and more important: a Brier improvement is not itself an edge. It becomes an edge only if your estimate diverges from the price enough that a gap survives after costs. Being more accurate on average but nowhere diverging materially from the price is useless: you’re a tiny bit right everywhere and can’t earn on it anywhere. The Brier difference 0.2431 versus 0.2412 is tiny, and before you rejoice, look at where exactly and by how much your estimate argues with the price — you trade that argument, not the average accuracy.

Both mechanisms — speed and accuracy — reduce to one question: does the spot add anything beyond what the contract already knows about the same asset. Not “is the spot connected to the outcome” (it always is), but “does it lead or refine the price.” Therein lies the whole difference between an edge and a circle.


Place 3. The expensive “obvious” side — where the crowd errs

The third place is a special case of the first, but so common it’s worth its own look. People overpay for the “obvious” outcome: when one side seems decided and trades at 85–90 cents, the crowd piles in there — “it’s obvious who wins” — and bids the price above the real frequency. This isn’t my guess but a long-documented regularity in betting (it’s called the favorite-longshot bias: favorites are overpriced, extreme underdogs underpriced). Part of it is a behavioral error of the crowd, part a risk premium (betting against an expensive favorite, you take on a rare but painful loss). To you, trading the gap, this doesn’t matter: the measurable edge is the same; what matters is only to remember that along with it you take on that very tail risk.

This is exactly the mechanism from the start of the cycle, where we took apart viral bots: they buy the obvious expensive side, where the breakeven win rate equals the entry price, and lose because the real frequency doesn’t reach it. From that side it was a trap; from this side — if the bias is steady, it’s a niche: bet against the overpriced favorite (with a limit at your price, with all the corrections of place 1).

The test is the same — the frequency-price gap, but on expensive entries. On a biased market a favorite at 87.5 cents wins only about 82% of the time — overpriced by about five points (−0.054 in the run), and after costs this remains an edge on the side of whoever bets against the obvious. On a calibrated market the expensive side wins exactly at its price (gap ~0) — nothing to bet on. A caveat: the reverse also happens (the crowd underprices extreme longshots), so the test measures the gap in both directions; the sign will be shown by the data, not by me.


What would refute this — and what to do if everything is flat

The main honesty check on this article: what if on your market all the gaps are zero? That happens, and it isn’t a defeat but the most valuable outcome. If calibration is perfect, the spot neither leads nor refines, and the expensive side wins at its price — then there’s no directional edge on this market, the market is efficient, and no search will create one. That’s ironclad information: it turns you away from a knowingly losing search and toward market-making (earning on the spread and rebate, not on guessing) — types of strategies will be covered separately.

And the condition on which the article itself would collapse: if the frequency-price gap did not distinguish an edge from its absence, the test would be useless. But it distinguishes cleanly: where I put in a bias or a lag, the gap is visible; where the market is honest, it’s zero. And the combinatorial trap shows the flip side: where there’s no edge but you search, an “edge” will be found anyway (in the demonstration — Sharpe 3.6 from noise at 2300 tries). Hence the whole point: trust a test with a reason after subtracting costs; never trust a find from a search.


What I don’t know, and where the limits are

  • All the numbers are from synthetic data. I set the biases, the lag, and the trap myself, to show what the test looks like and what its failure looks like. Whether these exist on your market is a question for your data, not mine.
  • The gap must beat both costs AND adverse selection. The bar is higher than it seems: first subtract the limit-selection cost from the gap (place 1), then costs (~3 points). What’s left above zero is the edge.
  • Spot and contract are dependent. This is both the reason for the edge (place 2) and a source of overfitting (the trap). Any spot signal must prove it adds beyond the price rather than duplicating it.
  • Sample size per slice. A gap on a dozen trades is noise; you need an interval that excludes zero (there was a separate article). It bites the expensive side especially — there are few such entries.
  • Three places don’t exhaust everything (there’s cross-venue arbitrage, calendar effects). I took three with a clear reason; completeness isn’t claimed.

What to do tomorrow

  1. Start with a reason, not a search. Before touching the data, state why an edge should be here (the crowd overprices the favorite; the contract is slower than the spot). A hypothesis with a reason needs a few checks; a blind search needs endless ones, and you can’t honestly validate it.
  2. Build calibration at your limit price and on filled fills. Not across the whole market and not by the signal price. Subtract adverse selection from the gap.
  3. Test the spot for “leads/refines,” not “is connected.” Does it give an edge beyond the contract price, which looks at the same spot. A connection is always there and almost always useless.
  4. Compare every gap with costs and selection before rejoicing. Below the bar — throw it out.
  5. Take a flat result as the answer. All tests zero — no directional edge, go to market-making. You can run these tests on your own data without risking money, in paper mode — free, before any subscription: both the Polymarket data and the Binance spot there are the same ones the live bot sees.

FAQ

I have rich data — two markets, tons of indicators. Isn’t that an advantage? It’s a trap if you search naively. The more combinations you try, the higher the “edge” on history at a true zero edge (in the demonstration — Sharpe 3.6 from pure noise at 2300 tries). The advantage isn’t in the volume of data but in discipline: a hypothesis with a reason instead of a search.

Bitcoin spot obviously predicts the contract — isn’t that an edge? It predicts because it’s the same asset. But the contract is already looking at that same spot. The edge isn’t that the spot is connected to the outcome, but whether it leads or refines the contract price. Measure the gap beyond the price, not the correlation with the outcome.

Why can’t I measure calibration across the whole market? Because you enter with a limit at a specific price, not across the whole range. Your statistics live at your target price, and that’s where to measure — and on filled fills, where adverse selection sits.

What is adverse selection in plain words? Your limit fills more often when the market moves against you (reaches your price and below). So on filled trades the outcome is on average a bit worse than on all the ones where the signal fired. That’s the hidden cost of a limit entry, and it has to be subtracted from the gap you find.

What if all the tests are flat? Then there’s no directional edge on this market — it’s efficient. That’s a valuable answer: it saves you months and turns you toward market-making and microstructure.


Disclaimer

This material is educational and is not financial advice. Past results do not predict future results. Trading on prediction markets carries real risk, up to and including the total loss of capital. Access to Polymarket is restricted or prohibited in some jurisdictions — verify legality where you live before trading.