Note · Mechanics

The Arithmetic That Built Search

How a handful of equations turned attention into a priced commodity.

1. Before the math: advertising sold by the yard

The first search ads were priced the way newspaper ads were priced. In 1996 Open Text and Infoseek sold placement in results at a flat negotiated rate, and early banner inventory sold on CPM. The only arithmetic involved was impressions multiplied by a rate card. Nobody knew what an impression was worth because nobody measured what happened after it.

That model had a structural flaw. The seller had no way to allocate a scarce slot to the buyer who valued it most, and the buyer had no way to discover what the slot was actually worth. Price was set by negotiation, which meant it was set by whoever had the better salesperson.

2. GoTo.com and the first bid formula

Bill Gross launched GoTo.com in February 1998 with the simplest possible ranking rule:

Rank = Bid

Highest bidder took position one. Winners paid exactly what they bid, a first-price auction. Bids were public.

Two things happened immediately, and both of them are the reason modern PPC looks the way it does.

The sawtooth. Because bids were visible and pricing was first-price, the rational move was to outbid the advertiser above you by the smallest increment, one cent. That advertiser then outbid you back. The pair escalated toward their true value ceilings, and whoever hit their ceiling first dropped to the reserve price and started climbing again. The system had no stable pure-strategy equilibrium. It produced a permanent cyclical bid war that consumed enormous advertiser attention and left the auctioneer’s revenue oscillating rather than settling.

The revenue mismatch. This is the deeper flaw, and it’s the single most consequential piece of arithmetic in the industry’s history. GoTo ranked by bid, but GoTo got paid per click. Its actual revenue from a slot was not the bid. It was:

Expected revenue per impression = Bid × CTR

Consider two advertisers competing for one slot, 1,000 impressions:

AdvertiserBidCTRRevenue per 1,000 impressions
A$4.001%$40
B$2.004%$80

Rank-by-bid puts A on top and earns the platform $40. The advertiser with half the bid was worth twice as much. A pure bid auction systematically misallocates inventory, underprices the seller’s real asset, and degrades the results page by promoting ads nobody wants to click.

3. February 2002: three innovations in one release

Google launched AdWords in October 2000 on a CPM model sold by a sales team. In February 2002 it relaunched as AdWords Select and changed three things simultaneously.

Pricing moved to cost-per-click. Risk shifted from the buyer to the seller. Google now got paid only when it delivered a user who acted.

Ranking moved to expected value. The ranking function became:

Ad Rank = Bid × Predicted CTR

This is the equation that made search advertising work. It aligns the platform’s revenue with user behavior. An irrelevant ad cannot buy its way to the top, because its low predicted CTR discounts its bid. Relevance stopped being an editorial policy and became a pricing input.

Pricing moved to generalized second price. You no longer paid your bid. You paid the minimum required to hold your position:

CPC = (Ad Rank of the advertiser below you) ÷ (your quality signal) + $0.01

Work an example. Three advertisers, quality signals on an arbitrary scale:

AdvertiserBidQualityAd RankPositionPrice paid
A$3.00824120 ÷ 8 + .01 = $2.51
B$5.00420212 ÷ 4 + .01 = $3.01
C$2.006123reserve

B bid 67% more than A, ranked below A, and paid 20% more per click. That single table is the entire commercial argument for Quality Score, and it terminated the penny war. Under GSP, incrementally raising your bid does not raise your price unless it changes your position. The obsessive minute-by-minute bid monitoring that GoTo required became pointless.

GSP is not truthful in the way a Vickrey auction is; Edelman, Ostrovsky and Schwarz (2007) and Varian (2007) both showed it admits stable envy-free equilibria rather than dominant-strategy truthfulness. But it was stable enough, and it was explicable to advertisers in a way VCG never was. Yahoo, which had acquired Overture (the renamed GoTo), spent five years fighting Google’s monetization gap before finally adopting quality-weighted ranking in its Panama rebuild.

The asymmetry buried in the formula. Your bid appears only in the numerator of your Ad Rank. Your quality appears in your Ad Rank and in the denominator of your price. Doubling your bid may raise your rank and never changes your price at a fixed position. Halving your quality lowers your rank and roughly doubles what you pay for the position you keep. Quality is a two-sided lever. Bid is one-sided. Everything advertisers were later taught about landing pages and ad relevance descends from that denominator.

4. The statistics problem hiding inside “Predicted CTR”

The 2002 equation contains a term that cannot be observed, only estimated. Predicting CTR turned out to be a harder problem than running the auction, and solving it is what actually created the technical moat.

Sparse data and shrinkage. An ad with 2 clicks in 40 impressions does not have a 5% CTR. The estimate is nearly meaningless. The standard fix is Bayesian smoothing on a Beta-Binomial conjugate model:

Smoothed CTR = (clicks + α) ÷ (impressions + α + β)

With a category prior of 3% and a prior strength equivalent to 200 impressions (α = 6, β = 194), that ad’s estimate becomes (2 + 6) ÷ (40 + 200) = 3.33%, not 5%. As real data accumulates the prior washes out. This is why Quality Score starts at a neutral value for a new keyword and why it takes volume to move.

Position bias. Observed CTR confounds ad quality with slot position. A mediocre ad in position 1 outclicks a strong ad in position 4. The models had to decompose observed clicks into a separable form, roughly:

CTR(ad, position) ≈ quality(ad) × discount(position)

Only the quality term belongs in Ad Rank. This is the reason Quality Score is defined as position-normalized expected clickthrough rate, a phrase that is otherwise inexplicable.

Exploration versus exploitation. A new ad has no click history, so its estimate is pure prior. The only way to learn its true rate is to serve it, which costs revenue if it’s bad. This is a multi-armed bandit problem, and it’s why new creative gets an impression allocation it hasn’t earned and why the system will not converge if you keep resetting it.

Calibration over accuracy. By the mid-2000s all three major engines had converged on regularized logistic regression over enormous sparse hashed feature spaces, later refined into online learning methods like FTRL-Proximal (McMahan et al., 2013). The objective was log loss, not classification accuracy, for a specific reason: the model output gets multiplied by a dollar bid. A classifier that ranks correctly but outputs 0.04 when the truth is 0.02 will misprice every auction it touches. Calibration is a pricing requirement, not a modeling preference.

5. The advertiser’s arithmetic

The same period produced the buy-side formulas that still define the job.

The funnel identity:

Conversions = Impressions × CTR × CVR
Revenue = Impressions × CTR × CVR × AOV

Breakeven bid from unit economics:

Max CPC = Value per conversion × CVR

A $100 contribution margin at 2% conversion rate supports a $2.00 click. This is the calculation that separated performance advertising from brand advertising, because for the first time a media buy had a defensible ceiling derived from the P&L rather than from last year’s budget.

The identity chain:

CPA = CPC ÷ CVR   and   ROAS = (AOV × CVR) ÷ CPC

Breakeven ROAS = 1 ÷ gross margin. At 40% margin, breakeven is 2.5.

Marginal versus average. This is the concept that most accounts still get wrong, and it’s pure arithmetic:

 ClicksCPCSpendRevenueROAS
Current bid1,000$2.00$2,000$10,0005.0
Higher bid1,400$2.60$3,640$12,0003.3

Average ROAS at the higher bid still looks acceptable at 3.3 against a 2.5 breakeven. But the incremental $1,640 bought $2,000 of revenue. Marginal ROAS is 1.22, well underwater. Profit maximization happens where marginal ROAS equals breakeven, not where average ROAS does. Raising bids always makes the average look better than the last dollar deserves.

The significance wall. Testing at the keyword level runs into a hard statistical limit. For 80% power at 95% confidence, a workable approximation is:

n ≈ 16 × p(1−p) ÷ δ²

To detect a 20% relative lift on a 3% conversion rate (δ = 0.006): n ≈ 16 × 0.0291 ÷ 0.000036 ≈ 12,900 clicks per variant. At a $3 CPC, that’s roughly $78,000 to run one two-arm test to conclusion.

Almost no keyword in almost no account ever accumulates that much data. This one inequality shaped the structure of the entire discipline. It forced aggregation upward into ad groups, campaigns, and portfolios; it made keyword-level manual bid management statistically indefensible at scale even while it remained standard practice; and it supplied the legitimate technical argument for automated bidding, which pools signals across an account and across the whole network. That the argument is also extremely convenient for the platform doesn’t make it wrong. It does mean the argument and the marketing should be evaluated separately.

It made relevance profitable. Because Ad Rank is bid times predicted CTR, the ad system’s revenue is maximized by showing ads people actually want. No other ad medium of that era had that property. It’s the reason paid search was tolerated by users while display advertising was fought with blockers, and the reason search ads got to sit at the top of the page instead of the margins.

It made the long tail biddable. A meaningful share of daily queries have never been seen before, which means no advertiser can enumerate them. Exact string matching starves the models of data. The answer was to loosen matching and move the prediction problem from keyword to query, pooling statistical strength across semantically related demand. Broad match exists because of a data-sparsity constraint before it exists as a monetization strategy.

It built the measurement industry. Pay-per-click plus a measurable downstream action creates an optimization loop. Analytics platforms, tag managers, attribution models, conversion APIs, and server-side tracking all exist to close that loop, and all of them are downstream of the decision to price by the click in 2002.

It created a compounding data advantage. More queries yield better CTR models, which yield better ranking, which yield more revenue and more advertisers, which yields more queries. The auction’s efficiency depends on prediction quality, and prediction quality depends on scale. That loop is why search consolidated.

It ended advertiser price transparency. The original GSP formula was computable on a napkin. It no longer is. Ad Rank thresholds vary by query and context, auction-time bidding adjusts bids per impression on signals the advertiser cannot see, and the ranking function itself has not been a clean expected-revenue rule for a long time. Academic work on position auctions explored generalizations of the form:

Rank = Bid × Qualitys

where s = 1 gives pure expected-revenue ranking and s = 0 collapses back to GoTo’s rank-by-bid. Tuning that exponent, sometimes called squashing, shifts revenue between the platform and advertisers without changing anything an advertiser can observe. Testimony in the 2023 US antitrust proceedings also surfaced randomization among closely-ranked advertisers. The mechanism went from arithmetic an advertiser could audit to a system they can only measure empirically.

It pushed bidding from judgment to prediction. Follow the 2002 equation to its conclusion. If bid should equal value times probability, and machines estimate probability better than people, then bid-setting is a forecasting task, not a strategic one. Smart Bidding is the logical terminus of the founding formula, not a departure from it.

Where human judgment still holds is precisely where the arithmetic is misspecified. The system optimizes the conversions it observes, which are correlational, not causal. It optimizes revenue unless you feed it margin. It optimizes the conversion window you defined, not lifetime value. It cannot distinguish a click that caused a sale from a click that intercepted one. Every serious remaining lever in the discipline sits in that gap: incrementality testing, geo holdouts, margin-adjusted conversion values, and offline conversion import. The auction’s math is settled. What you feed into it is not.

Sources worth reading in the original

  • Edelman, Ostrovsky & Schwarz, Internet Advertising and the Generalized Second-Price Auction (AER, 2007)
  • Varian, Position Auctions (IJIO, 2007)
  • Lahaie & Pennock, Revenue Analysis of a Family of Ranking Rules for Keyword Auctions (2007)
  • McMahan et al., Ad Click Prediction: a View from the Trenches (KDD, 2013)