SlideShare a Scribd company logo
Ad science bid simulator (public ver)
Outline
● Tradeoff between Online/Offline evaluation
● Simulator Architecture
○ Environment (traffic & auction)
○ Controller (algorithms)
○ Algorithms
● Data
○ How do we simulate auction
○ Example results
● Results
○ How do we evaluate
○ The insights it brings us
● Appendix (details for adScience folks)
Ad science bid simulator (public ver)
Scope difference: indeed adSystem v.s. DSP only
● Note that our scope is pretty different from DSP companies out there.
When you own the whole system (bid+auction)
Your bid algorithm is for every ads
=> pursue “smoothly make 100% use of client budget”.
=> low bid deviation, linear pacing is virtue here.
=> algorithms changing rapidly may lead to unpredictable system.
When you are a DSP company
You only care ads controlled by you
=> you can never “change the rule of whole world”.
=> pursue “beat competitor’s algorithms”.
=> Agile algorithms may take benefit.
=> CPC/CPA is the most important thing.
5%
Your bidding
“Other Bidders”
95%
Your own
Auction System
100%
● Test groups are NOT independent, they join same auctions.
○ It's an artificial world, the “environment” is changing as you apply new alg
● Ideally, to make result comparable, need to run both new/old alg 100% on same time & ads => impossible in real world.
● Simple example: an algorithm always do max_bid in last 3 days, might work for 5%, not 100%.
When 100% on product, the “world” has changed
You want an alg can compete with itself, not an alg taking
advantage from old one.
During A/B test
new alg is competing with old alg, you’re testing whether it
beat the “old world” formed by old alg.
Concern on online A/B test
5%
New Alg
Old Alg
95%
New Alg
100%
● Market trend is volatile, and even worse -- the period is long.
● For job market, traffic/user behavior may different in long holidays, new year, graduation season.
=> test in January or June could lead to opposite conclusion. (ex: traffic pred / init bid past test)
=> it’s not feasible to do all A/B test an year long.
● We're not the only player.
● Our downstream product (auction/SERP) is evolving as well, as we’re doing the test.Deboost
● Closely affected by search result.
Concern on online A/B test
● Lack of auction details for replaying the bidding history
○ Currently we only have the winning auction data (adid, revenue, position, time)
○ What we do not have:
a. There are multiple SJ slot in an auction per SERP, we don’t know the other winning prices
(2nd/3rd/4th…) in the same auction.
b. The real “auction utility” score components, and the user interests.
● The compromise we need to make:
○ We only take data from “top” auction position, to make CTR/price similar.
○ Ignore eCTR/eApplyRate, only bid by price.
● Fortunately, we still have the most important thing: bid and revenue (2nd price).
Concern on offline simulation
Ad science bid simulator (public ver)
● Object: minimize customized/repeated logic, minimize interface.
○ Encapsulate bidding algorithm as “controller”
○ Campaign management / traffic pattern / auction shared as “environment” logic.
○ Simulate different traffic pattern/market competition by only changing environment.
○ Simulate different algorithms against various environments.
○ Idea: we cannot guarantee simulation = reality, but we could choose an algorithm
survive all kinds of extreme simulated environments.
Simulator Architecture - concept
campaign
state
● The real implementation:
Evaluator
Simulator Architecture - modules
Controllers
(stateless)
Environment
Auction
(stateless)
bid bid, spend_cap
Baseline
HighFreq
PID
RBO (A/B)
DDPG / PPO
logs
metrics!
Campaign
Management
(mgr. All states)
win auction,
click, revenue
Algorithms
● Baseline
○ The current (by Jan 2020) product algorithm.
○ The only algorithm update 3 times a day among algorithms we benchmarked.
● HighFreq
○ Main idea: raise the bid update frequency from 3 times a day to update per hour.
● PID
○ A classic control system template.
○ Decide next action by Proportional/Integral/Derivative components.
● RBO
○ An original design from adScience bidAlgo team.
○ Learn from ad’s own history.
new bid
● Baseline
1. main idea: compare “last period bid result” with “target spend”
2. tsr (target spend rate) = budget_left / inventory_left
3. asr (actual spend rate) = budget_used / inventory_used
4. new_bid = last_bid * (tsr / asr) (simplified version, for easy understanding)
Baseline Algorithm
budget
used
inventory
used
actual
spend_rate
budget
remaining
Inventory
remaining
target
spend_rate
last bid
(A) ideal target (B) last observation (C) calibration
● PID
1. Main idea: decide the next change ratio by 3 components P+I+D
2. P (proportional) = p_ratio * (1 - actual_spend / target_spend)
3. I (integrational) = i_ratio * SUM(past k history)
4. D (derivative) = d_ratio * (last_error - last_last_error)
5. new_bid = old_bid * (1 + P + I + D)
PID controller
● RBO
1. Main idea: spendRate = A * bid2
2. Learn A from history!
RBO (responsive bid optimizer)
Time
spend_rate_t1 spend_rate_t2 spend_rate_t3 spend_rate_t4 spend_rate_t5 spend_rate_t6 spend_rate_t7
bid_t1 bid_t2 bid_t3 bid_t4 bid_t5 bid_t6 bid_t7
Fit “A”
● Other than main algorithm, some hidden gems actually improved a lot.
1. Budget smoothing / Stochastic bid update.
2. Separate daily budget into 3-segments guardrail helped a lot in pacing.
3. Overspend is directly cutoff by campaign management.
4. Danger-zone logic burn the remaining bit of budget in last days.
5. RBOB introduced variant length of bid-period to deal with low-traffic ads.
The secret sauce ...
Ad science bid simulator (public ver)
● Ex: for historical adid=xxxxx, get impression / click data from day_start ~
day_end from IQL.
● Augment click count by assuming some non-clicked impressions are
clicked.
(since user interest is not in scope of bid-opt.)
Data: how do we use Ad History
clicks
Impressions
day_start ~ day_end
Historical Data
clicks
Historical Data w/ augmented
10x clicks (revenue)
Impressions
day_start ~ day_end
clicksclicksclicksclicksclicksclicksclicksclicksclicks
Simulator Environment Components
● Bidding history
○ Use historical ad data, so naturally we have all kinds of weird traffic patterns.
○ Have synthesized traffic option, but not using it since too ideal.
● Budget
○ Simulate on ads having different level of clicks.
○ Found that low-budget/traffic ads are the most challenging type.
● Market Competition
○ Monopoly / Oligopoly / Fair market
● Traffic
○ Use ideal / predicted / uniform traffic to dispatch budget, to investigate the impact of traffic
prediction.
● Initial bid
○ Simulate initial bid impact, to investigate how important initial bid is, to decide whether we need to
improve.
● Real traffic and Predicted traffic
○ Idea: invest (spend budget) according to inventory (traffic), for optimize CPC.
○ Ex: invest $120 on a week, assuming traffic of each day is 2 in weekdays and 1 in weekend.
Data: how do we use traffic data
2 2 2 2 2 1 1
$20 $20 $20 $20 $20 $10 $10
traffic
budget
How to simulate bid-price competing
● For example, In “fair competing” setup, 10 simulated ads start with
■ budget = (total revenue of augmented clicks) / 10
■ Initial bid = 1.25 * first click revenue (historically, 1st bid ~= 1.25 x 2nd bid)
● 10 ads will have 10 bid price, plus 1 extra historical revenue as “bottom-line market price”.
■ To win the bid, need to beat price from other 9 simulated ads and “market price”.
■ If all ads bid-price lower than market price, nobody win.
■ If multiple top price, random choose one.
■ Charged with 2nd price.
Historical market price
Simulated Ads
Historical revenue $1.0,
as market bottom line
10 ads deliver 10 bids by their algorithm
[$0.5, $1.5, $7, $15 … ]
● The simulation of competing is like this:
Remaining_budget
Ideally should all
go zero
Daily spend limit &
max-spend
guardrail trend
Example simulate result in macro view
Bid history of 10
simulated competing ads
Daily budget
depletion of
each ad
Ncns (no-click-no-spend)
signaltsr (true spend rate)
asr (actual spend rate)
● To find root cause for some phenomenon: dive deep into the inner control-signal of each algorithms.
● Ex: Baseline (current product) control signals like: tsr, asr, ncns_rounds, danger_zone, over_spend …
● Modify what we think fishy => simulate again => prove the root cause.
Example simulate result in micro view
Mode, over_spend,
danger_zone
Used budget
● An example while we’re investigating various budget dispatching mode
○ Simulated 50 ads for each criteria combinations (algorithm / traffic / market competition / budget_depletion_mode / initial_bid_rto ...)
○ Use median rather than mean (sensitive to outlier) as aggregated matrics result.
○ Most of time focus on budget depletion rate & deviation, also CPC, also monitor whether other metrics got interesting trend.
Example of aggregated simulate metrics
How do we evaluate
● Input: bidding history
○ Use historical ad data, so naturally we have all kinds of weird traffic patterns.
● Simulation variants: most of time, benchmark by 3 main factors
1. Algorithms
○ Baseline / HighFreq / PID / RBO / RBOB
2. Update Frequency
○ Each algorithm have variants updating bid hourly / bi-hourly / 4 hours / 6 hours / 8 hours.
3. Traffic Level
○ Find low traffic (10-30 clicks) / median traffic (30-200 clicks) / high traffic (200~10000 clicks)
historical ads, random sample 500 ads each ,
○ Simulate based on their 2019-08-01 to 2019-08-15 historical data.
○ Augmented x10 clicks, dispatch budget to 10 ads in same algorithm competing each other.
● Output: metrics
○ Mainly budget depletion & CPC
○ Also look mean/median bid-price, CBP, uptime, bid volatility, avg daily bid depletion, avg daily
spend depletion.
Ad science bid simulator (public ver)
● Baseline
○ Weak especially for low-traffic ads.
○ Relatively more sensitive to traffic prediction and initial bid error.
● HighFreqBid
○ Online A/B test twice (adScience / SMB team, each did once), concluded as no move-forward.
○ By simulation, found it boost price too fast (hourly) for low-traffic ads, causing high CPC.
● RBO
○ Used to be even worse than baseline for low-traffic ads (same reason with HighFreq), we
developed 2 solutions (RBO/RBOB) and fixed it by simulation.
○ Both versions having similar performance, one tend to spend early but with a bit higher CPC, one
tend to wait longer and spend in the end of campaign lifetime.
○ Robust against traffic prediction and initial bid error.
● PID
○ Parameters chosen to beat RBO in Aug 2019 end up losing in Nov 2019.
○ Parameter tuning is important.
The insight it brings us - bid-opt algorithms
● Traffic Prediction
○ For US market, even we deprecate traffic prediction and use uniform traffic instead, for baseline
it’s a ~5% difference in budget depletion, for PID and RBO it’s ~1%.
● Initial Bid
○ ~3% different in budget depletion for Baseline with ads having 1 month lifetime.
○ Almost no impact for high frequency update algorithms like PID & RBO.
● Tilting Budget Pacing
○ Try different patterns to tilt budget pacing, for improving budget depletion.
The insight it brings us - upstream components

More Related Content

PDF
Embedded based retrieval in modern search ranking system
PDF
Faster and cheaper, smart ab experiments - public ver.
PDF
Text cnn on acme ugc moderation
PDF
Supervised embedding techniques in search ranking system
PDF
Universal job embedding in recommendation (public ver.)
PDF
Feature Importance Analysis with XGBoost in Tax audit
PDF
Ensembling & Boosting 概念介紹
PDF
Embedded based retrieval in modern search ranking system
Faster and cheaper, smart ab experiments - public ver.
Text cnn on acme ugc moderation
Supervised embedding techniques in search ranking system
Universal job embedding in recommendation (public ver.)
Feature Importance Analysis with XGBoost in Tax audit
Ensembling & Boosting 概念介紹

What's hot (20)

PDF
Featurizing log data before XGBoost
PDF
DataRobot R Package
PPTX
Feature Engineering
PDF
Demystifying Xgboost
PDF
Kaggle presentation
PPT
Learning On The Border:Active Learning in Imbalanced classification Data
PDF
PDF
Deep MIML Network
PDF
XGBoost: the algorithm that wins every competition
PDF
Kaggle Otto Challenge: How we achieved 85th out of 3,514 and what we learnt
PDF
XGBoost @ Fyber
PDF
Introduction of Feature Hashing
PPTX
Ppt shuai
PDF
Introduction to XGBoost
PDF
Silicon valleycodecamp2013
PDF
Gradient Boosted Regression Trees in scikit-learn
PDF
Introduction to Machine Learning in Python using Scikit-Learn
PPTX
Introduction of Xgboost
PDF
THE IMPLICATION OF STATISTICAL ANALYSIS AND FEATURE ENGINEERING FOR MODEL BUI...
PPTX
An intelligent scalable stock market prediction system
Featurizing log data before XGBoost
DataRobot R Package
Feature Engineering
Demystifying Xgboost
Kaggle presentation
Learning On The Border:Active Learning in Imbalanced classification Data
Deep MIML Network
XGBoost: the algorithm that wins every competition
Kaggle Otto Challenge: How we achieved 85th out of 3,514 and what we learnt
XGBoost @ Fyber
Introduction of Feature Hashing
Ppt shuai
Introduction to XGBoost
Silicon valleycodecamp2013
Gradient Boosted Regression Trees in scikit-learn
Introduction to Machine Learning in Python using Scikit-Learn
Introduction of Xgboost
THE IMPLICATION OF STATISTICAL ANALYSIS AND FEATURE ENGINEERING FOR MODEL BUI...
An intelligent scalable stock market prediction system
Ad

Similar to Ad science bid simulator (public ver) (20)

PDF
Gianluca Binelli — Advanced PPC: Create Your Own Automated Bid Strategies
PDF
[Google] Display smart bidding external guide
PDF
DMIEXPO - Igal Pines - The Intelligent Media Buyer: How can you turn $1 to $2...
PPTX
Computational Advertising in Yelp Local Ads
PDF
Microsoft Automation Bootcamp - London 2 October 2019
PDF
Why You Should (Not) be Using Automated Bidding Strategies
PDF
Automated Bidding Strategies
PPTX
RTB Bid Landscape in Adform
PDF
A Wise Approach to Automated Bidding
PPTX
How Choosing the Right Formats and Placements Can Supercharge Your Game Reven...
PPTX
Hero Conf London 2016 - The Definitive Framework for Bidding in AdWords
PPTX
Deepak-Computational Advertising-The LinkedIn Way
PPTX
(2016 07-19) providing click predictions in real-time at scale
PPTX
UNVEILING VALUE-BASED BIDDING SECRETS FOR MAXIMUM EFFICIENCY GAIN.pptx
PPTX
AI and Machine Language in PPC
PDF
Ad Espresso - Google Ads Bidding
PDF
[PPC Hero Summit] A Step Ahead: Analyzing Your Competition
PPTX
The Pros and Cons of PPC Bidding
PPTX
Building an algorithmic price management system using ML
PDF
BID STRATEGY for different projects .pdf
Gianluca Binelli — Advanced PPC: Create Your Own Automated Bid Strategies
[Google] Display smart bidding external guide
DMIEXPO - Igal Pines - The Intelligent Media Buyer: How can you turn $1 to $2...
Computational Advertising in Yelp Local Ads
Microsoft Automation Bootcamp - London 2 October 2019
Why You Should (Not) be Using Automated Bidding Strategies
Automated Bidding Strategies
RTB Bid Landscape in Adform
A Wise Approach to Automated Bidding
How Choosing the Right Formats and Placements Can Supercharge Your Game Reven...
Hero Conf London 2016 - The Definitive Framework for Bidding in AdWords
Deepak-Computational Advertising-The LinkedIn Way
(2016 07-19) providing click predictions in real-time at scale
UNVEILING VALUE-BASED BIDDING SECRETS FOR MAXIMUM EFFICIENCY GAIN.pptx
AI and Machine Language in PPC
Ad Espresso - Google Ads Bidding
[PPC Hero Summit] A Step Ahead: Analyzing Your Competition
The Pros and Cons of PPC Bidding
Building an algorithmic price management system using ML
BID STRATEGY for different projects .pdf
Ad

Recently uploaded (20)

PPTX
A Presentation on Artificial Intelligence
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Approach and Philosophy of On baking technology
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Encapsulation theory and applications.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
project resource management chapter-09.pdf
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
OMC Textile Division Presentation 2021.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
DP Operators-handbook-extract for the Mautical Institute
A Presentation on Artificial Intelligence
MIND Revenue Release Quarter 2 2025 Press Release
Web App vs Mobile App What Should You Build First.pdf
Zenith AI: Advanced Artificial Intelligence
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Approach and Philosophy of On baking technology
Programs and apps: productivity, graphics, security and other tools
Encapsulation theory and applications.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
project resource management chapter-09.pdf
SOPHOS-XG Firewall Administrator PPT.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
OMC Textile Division Presentation 2021.pptx
A comparative analysis of optical character recognition models for extracting...
Building Integrated photovoltaic BIPV_UPV.pdf
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Group 1 Presentation -Planning and Decision Making .pptx
Tartificialntelligence_presentation.pptx
DP Operators-handbook-extract for the Mautical Institute

Ad science bid simulator (public ver)

  • 2. Outline ● Tradeoff between Online/Offline evaluation ● Simulator Architecture ○ Environment (traffic & auction) ○ Controller (algorithms) ○ Algorithms ● Data ○ How do we simulate auction ○ Example results ● Results ○ How do we evaluate ○ The insights it brings us ● Appendix (details for adScience folks)
  • 4. Scope difference: indeed adSystem v.s. DSP only ● Note that our scope is pretty different from DSP companies out there. When you own the whole system (bid+auction) Your bid algorithm is for every ads => pursue “smoothly make 100% use of client budget”. => low bid deviation, linear pacing is virtue here. => algorithms changing rapidly may lead to unpredictable system. When you are a DSP company You only care ads controlled by you => you can never “change the rule of whole world”. => pursue “beat competitor’s algorithms”. => Agile algorithms may take benefit. => CPC/CPA is the most important thing. 5% Your bidding “Other Bidders” 95% Your own Auction System 100%
  • 5. ● Test groups are NOT independent, they join same auctions. ○ It's an artificial world, the “environment” is changing as you apply new alg ● Ideally, to make result comparable, need to run both new/old alg 100% on same time & ads => impossible in real world. ● Simple example: an algorithm always do max_bid in last 3 days, might work for 5%, not 100%. When 100% on product, the “world” has changed You want an alg can compete with itself, not an alg taking advantage from old one. During A/B test new alg is competing with old alg, you’re testing whether it beat the “old world” formed by old alg. Concern on online A/B test 5% New Alg Old Alg 95% New Alg 100%
  • 6. ● Market trend is volatile, and even worse -- the period is long. ● For job market, traffic/user behavior may different in long holidays, new year, graduation season. => test in January or June could lead to opposite conclusion. (ex: traffic pred / init bid past test) => it’s not feasible to do all A/B test an year long. ● We're not the only player. ● Our downstream product (auction/SERP) is evolving as well, as we’re doing the test.Deboost ● Closely affected by search result. Concern on online A/B test
  • 7. ● Lack of auction details for replaying the bidding history ○ Currently we only have the winning auction data (adid, revenue, position, time) ○ What we do not have: a. There are multiple SJ slot in an auction per SERP, we don’t know the other winning prices (2nd/3rd/4th…) in the same auction. b. The real “auction utility” score components, and the user interests. ● The compromise we need to make: ○ We only take data from “top” auction position, to make CTR/price similar. ○ Ignore eCTR/eApplyRate, only bid by price. ● Fortunately, we still have the most important thing: bid and revenue (2nd price). Concern on offline simulation
  • 9. ● Object: minimize customized/repeated logic, minimize interface. ○ Encapsulate bidding algorithm as “controller” ○ Campaign management / traffic pattern / auction shared as “environment” logic. ○ Simulate different traffic pattern/market competition by only changing environment. ○ Simulate different algorithms against various environments. ○ Idea: we cannot guarantee simulation = reality, but we could choose an algorithm survive all kinds of extreme simulated environments. Simulator Architecture - concept
  • 10. campaign state ● The real implementation: Evaluator Simulator Architecture - modules Controllers (stateless) Environment Auction (stateless) bid bid, spend_cap Baseline HighFreq PID RBO (A/B) DDPG / PPO logs metrics! Campaign Management (mgr. All states) win auction, click, revenue
  • 11. Algorithms ● Baseline ○ The current (by Jan 2020) product algorithm. ○ The only algorithm update 3 times a day among algorithms we benchmarked. ● HighFreq ○ Main idea: raise the bid update frequency from 3 times a day to update per hour. ● PID ○ A classic control system template. ○ Decide next action by Proportional/Integral/Derivative components. ● RBO ○ An original design from adScience bidAlgo team. ○ Learn from ad’s own history.
  • 12. new bid ● Baseline 1. main idea: compare “last period bid result” with “target spend” 2. tsr (target spend rate) = budget_left / inventory_left 3. asr (actual spend rate) = budget_used / inventory_used 4. new_bid = last_bid * (tsr / asr) (simplified version, for easy understanding) Baseline Algorithm budget used inventory used actual spend_rate budget remaining Inventory remaining target spend_rate last bid (A) ideal target (B) last observation (C) calibration
  • 13. ● PID 1. Main idea: decide the next change ratio by 3 components P+I+D 2. P (proportional) = p_ratio * (1 - actual_spend / target_spend) 3. I (integrational) = i_ratio * SUM(past k history) 4. D (derivative) = d_ratio * (last_error - last_last_error) 5. new_bid = old_bid * (1 + P + I + D) PID controller
  • 14. ● RBO 1. Main idea: spendRate = A * bid2 2. Learn A from history! RBO (responsive bid optimizer) Time spend_rate_t1 spend_rate_t2 spend_rate_t3 spend_rate_t4 spend_rate_t5 spend_rate_t6 spend_rate_t7 bid_t1 bid_t2 bid_t3 bid_t4 bid_t5 bid_t6 bid_t7 Fit “A”
  • 15. ● Other than main algorithm, some hidden gems actually improved a lot. 1. Budget smoothing / Stochastic bid update. 2. Separate daily budget into 3-segments guardrail helped a lot in pacing. 3. Overspend is directly cutoff by campaign management. 4. Danger-zone logic burn the remaining bit of budget in last days. 5. RBOB introduced variant length of bid-period to deal with low-traffic ads. The secret sauce ...
  • 17. ● Ex: for historical adid=xxxxx, get impression / click data from day_start ~ day_end from IQL. ● Augment click count by assuming some non-clicked impressions are clicked. (since user interest is not in scope of bid-opt.) Data: how do we use Ad History clicks Impressions day_start ~ day_end Historical Data clicks Historical Data w/ augmented 10x clicks (revenue) Impressions day_start ~ day_end clicksclicksclicksclicksclicksclicksclicksclicksclicks
  • 18. Simulator Environment Components ● Bidding history ○ Use historical ad data, so naturally we have all kinds of weird traffic patterns. ○ Have synthesized traffic option, but not using it since too ideal. ● Budget ○ Simulate on ads having different level of clicks. ○ Found that low-budget/traffic ads are the most challenging type. ● Market Competition ○ Monopoly / Oligopoly / Fair market ● Traffic ○ Use ideal / predicted / uniform traffic to dispatch budget, to investigate the impact of traffic prediction. ● Initial bid ○ Simulate initial bid impact, to investigate how important initial bid is, to decide whether we need to improve.
  • 19. ● Real traffic and Predicted traffic ○ Idea: invest (spend budget) according to inventory (traffic), for optimize CPC. ○ Ex: invest $120 on a week, assuming traffic of each day is 2 in weekdays and 1 in weekend. Data: how do we use traffic data 2 2 2 2 2 1 1 $20 $20 $20 $20 $20 $10 $10 traffic budget
  • 20. How to simulate bid-price competing ● For example, In “fair competing” setup, 10 simulated ads start with ■ budget = (total revenue of augmented clicks) / 10 ■ Initial bid = 1.25 * first click revenue (historically, 1st bid ~= 1.25 x 2nd bid) ● 10 ads will have 10 bid price, plus 1 extra historical revenue as “bottom-line market price”. ■ To win the bid, need to beat price from other 9 simulated ads and “market price”. ■ If all ads bid-price lower than market price, nobody win. ■ If multiple top price, random choose one. ■ Charged with 2nd price. Historical market price Simulated Ads Historical revenue $1.0, as market bottom line 10 ads deliver 10 bids by their algorithm [$0.5, $1.5, $7, $15 … ]
  • 21. ● The simulation of competing is like this: Remaining_budget Ideally should all go zero Daily spend limit & max-spend guardrail trend Example simulate result in macro view Bid history of 10 simulated competing ads Daily budget depletion of each ad
  • 22. Ncns (no-click-no-spend) signaltsr (true spend rate) asr (actual spend rate) ● To find root cause for some phenomenon: dive deep into the inner control-signal of each algorithms. ● Ex: Baseline (current product) control signals like: tsr, asr, ncns_rounds, danger_zone, over_spend … ● Modify what we think fishy => simulate again => prove the root cause. Example simulate result in micro view Mode, over_spend, danger_zone Used budget
  • 23. ● An example while we’re investigating various budget dispatching mode ○ Simulated 50 ads for each criteria combinations (algorithm / traffic / market competition / budget_depletion_mode / initial_bid_rto ...) ○ Use median rather than mean (sensitive to outlier) as aggregated matrics result. ○ Most of time focus on budget depletion rate & deviation, also CPC, also monitor whether other metrics got interesting trend. Example of aggregated simulate metrics
  • 24. How do we evaluate ● Input: bidding history ○ Use historical ad data, so naturally we have all kinds of weird traffic patterns. ● Simulation variants: most of time, benchmark by 3 main factors 1. Algorithms ○ Baseline / HighFreq / PID / RBO / RBOB 2. Update Frequency ○ Each algorithm have variants updating bid hourly / bi-hourly / 4 hours / 6 hours / 8 hours. 3. Traffic Level ○ Find low traffic (10-30 clicks) / median traffic (30-200 clicks) / high traffic (200~10000 clicks) historical ads, random sample 500 ads each , ○ Simulate based on their 2019-08-01 to 2019-08-15 historical data. ○ Augmented x10 clicks, dispatch budget to 10 ads in same algorithm competing each other. ● Output: metrics ○ Mainly budget depletion & CPC ○ Also look mean/median bid-price, CBP, uptime, bid volatility, avg daily bid depletion, avg daily spend depletion.
  • 26. ● Baseline ○ Weak especially for low-traffic ads. ○ Relatively more sensitive to traffic prediction and initial bid error. ● HighFreqBid ○ Online A/B test twice (adScience / SMB team, each did once), concluded as no move-forward. ○ By simulation, found it boost price too fast (hourly) for low-traffic ads, causing high CPC. ● RBO ○ Used to be even worse than baseline for low-traffic ads (same reason with HighFreq), we developed 2 solutions (RBO/RBOB) and fixed it by simulation. ○ Both versions having similar performance, one tend to spend early but with a bit higher CPC, one tend to wait longer and spend in the end of campaign lifetime. ○ Robust against traffic prediction and initial bid error. ● PID ○ Parameters chosen to beat RBO in Aug 2019 end up losing in Nov 2019. ○ Parameter tuning is important. The insight it brings us - bid-opt algorithms
  • 27. ● Traffic Prediction ○ For US market, even we deprecate traffic prediction and use uniform traffic instead, for baseline it’s a ~5% difference in budget depletion, for PID and RBO it’s ~1%. ● Initial Bid ○ ~3% different in budget depletion for Baseline with ads having 1 month lifetime. ○ Almost no impact for high frequency update algorithms like PID & RBO. ● Tilting Budget Pacing ○ Try different patterns to tilt budget pacing, for improving budget depletion. The insight it brings us - upstream components