RTB Simulation SDK

Test your bidding strategy
against your own market,
before you go live.

A calibrated replica of your RTB market, deployed directly inside your own infrastructure.

Get in Touch How it works
Air-gapped Docker · runs in your VPC Gymnasium environment Plug-in Enricher & Strategy Zero data egress
How It Works

Three steps.

01: Validate

An 11-column DSP log, validated locally

Standard columns any DSP already logs, plus two optional columns for improved latency and fraud-detection accuracy. Run the open-source validator on your machine before anything is shared.

02: Calibrate

Seven ML models and one clustering engine establish your market's physics

CTR, CVR, LTV, floor price, conversion delay, win rate, and bid latency are fit to your data inside an air-gapped Docker container running in your own VPC.

03: Simulate

Your bidder. Calibrated market. No live risk.

Implement the Enricher and Strategy interfaces. Compete against calibrated archetypes and a ghost market. Measure the impact before committing.

Calibration Engine

Seven ML models + one clustering engine.
One physics layer.

Every calibration run trains a full suite from your log data. These set the hidden ground truths — your bidder sees a realistic market, not a synthetic one.

01
Win Rate
P(win) from bid, publisher, hour, ad size. Monotone on bid.
Ensemble
02
Floor Price
Quantile regression on won impressions.
Regressor
03
CTR
Binary classification on wins. Segment, publisher, hour.
Classifier
04
CVR
Binary on clicks. Auto-fallback at <100 conversions.
Classifier
05
LTV / CPA Mode
Revenue regression for ROAS. Automatically falls back to binary CPA physics if revenue data is flat.
Regressor
06
Conversion Delay
Survival modeling for delayed events. Configurable attribution window.
Survival Model
07
Latency Twin
Calibrates bid latency per publisher and hour-of-day.
Regressor
08
Audience DNA
Clusters your user base into behavioural segments.
Clusterer
Calibration Audit Output
bidoptic · calibration report
// Dataset Profile
n_auctions4,821,440
n_wins144,612 (2.99%)
n_conversions8,204 (5.67%)

// Freshness & Coverage
date_range2024-10-01 → 2024-12-31
days_of_data91
days_since_end0 ✓

// Model Accuracies (Holdout)
win_rate_auc0.9639 ✓
floor_violation_rate5.11% ✓
ctr_auc0.7841 ✓
cvr_auc0.7320 ✓
ltv_mae$12.40 · 18.3% of mean ✓

// Simulation Guardrails
est_daily_spend$1,284.50
suggested_7d_limit$8,991.50
Calibration complete: 7/7 models ready
Simulation Environment

Built as a native Gymnasium environment.
Calibrated to your market.

Auction mechanics, competitor behavior, KPI enforcement, and creative testing — all parameterized from your data.

Auction Mechanics

Adaptive publisher floors

First-price with floor visibility noise. Publishers adapt floors to fill-rate feedback over time.

Delayed Conversions

Heap-based attribution

Conversions scheduled via AFT delay model. Late attribution carries over across episode resets.

Creative Testing

Hypothetical uplifts

Define a creative with "+20% CTR" and measure the downstream impact without needing live impressions.

KPI Enforcement

ROAS & CPA with kill-switch

Episode ends if KPI miss exceeds a hard threshold after minimum spend to match real guard-rail behavior.

Competitor Market

7 archetypes + ghost market

Bidders re-roll their personality each episode. Residual pressure is modeled by a ghost market ensemble trained on your win data.

Latency

Timeout & failure modeling

Latency sampled from your Latency Twin. Configurable timeout thresholds and failure distributions.

Architecture & Privacy

Air-gapped Docker.
Your data stays put.

BidOptic runs as an encrypted, network-disabled container inside your VPC. Nothing is transmitted.

DSP Log Export
Your data lake — stays there.
Your infra
Calibration Container
7-model + clustering training pipeline. --network none.
Docker · your VPC
Simulation (Gymnasium)
Your agent runs against the calibrated twin.
Docker · your VPC
market_intelligence.json
Segment profiles, viability verdict, latency & simulation history — written to your local output directory.
Your filesystem
Zero Egress. No DPA Required.

Because the container is entirely air-gapped within your VPC, runs with --network none, and contains no telemetry, BidOptic does not qualify as a Data Processor under GDPR. Licensing is enforced offline via a hardware-locked license.bin token — no callback URL, no license server.

Docker, not SaaS

You load and run an encrypted container image inside your own VPC. No upload portal, no hosted service, no external API calls.

Evaluation Agreement

No upfront cost. Run BidOptic against your own logs for an agreed evaluation period, with a pre-agreed objective accuracy threshold governing conversion to a paid license.

Plugs into your stack

Output is written as structured JSON and CSV to your local output directory — market_intelligence.json, latency_profile.json, simulation_history.csv.

Override-aware config

Pin any calibrated parameter for scenario testing without requiring code changes.

Plugin Interfaces

BidOptic sets the physics.
You bring the strategy.

Plug In Your ML — Estimator Interface

Your estimators,
plugged in directly.

BidOptic's models set hidden ground truths. Your pCTR, pCVR, and LTV models receive the same noisy signals as production.

Compare a new estimator against your baseline on the same ground truth
No live A/B test needed to measure model improvement
Plug In Your Strategy — Bidder Interface

Your bidding logic.
Battle-tested offline.

Connect your actual agent — rule-based, RL, or hybrid. Stable-Baselines3 compatible out of the box.

Test shading, pacing, and budget allocation before going live
Validate RL training stability without production exploration cost
Input Schema

Eleven required columns.
Two optional.

Standard columns any DSP already logs. No bespoke exports.

dsp_log_schema.csv11 required
1timestampUTC bid request time
2user_idPseudonymous user identifier
3publisher_idPublisher / placement identifier
4ad_sizeAd size / format label
5bid_pricePer-impression bid price (not CPM)
6clearing_priceClearing price (if won)
7is_wonWin / loss binary
8is_clickedClick indicator (post-win)
9is_convertedBinary conversion indicator (triggers CPA mechanics)
10conversion_timestampUTC conversion time (null if none)
11conversion_valueContinuous revenue value (triggers ROAS mechanics). Flat values fallback to CPA.
Optional: bid_latency_ms trains the Latency Twin from real data. If absent, a lognormal distribution is synthesized and flagged in the audit output.
Optional: click_timestamp enables click-to-conversion latency fraud checks in the local validator.

Works for smaller players

If you have a win log, a click log, and a conversion log — you have what BidOptic needs.

Quality scales with depth

Model quality is measured on a held-out time window. Coverage gaps are surfaced before training begins.

Data hygiene built in

Temporal leakage detection, zero-delay artifact removal, and staleness warnings at 30 and 90 days are all handled before the first model trains.

Traffic-quality checks

The local validator flags bot-like request volume, click-fraud signatures (high CTR paired with low CVR), and metronomic request timing — before anything is shared with us.

Have more data? Use it.

The 11-column schema is the minimum contract. DSPs with richer logs (such as additional user signals, custom auction metadata, or multi-touch attribution) can work with us on a custom calibration build.

Test your data locally

Run our open-source Python validator to verify your logs meet the ML requirements. Zero egress means your data never leaves your machine — only aggregate stats go into the receipt you send us.

View Schema Validator on GitHub

Interested?

BidOptic is in a closed Design Partner phase. Reach out directly for a technical conversation.

No pitch. Just a technical conversation.