WICG / turtledove

TURTLEDOVE
https://wicg.github.io/turtledove/
Other
538 stars 237 forks source link

Enabling Ghost ads incrementality studies in Protected Audience #1182

Open alois-bissuel opened 6 months ago

alois-bissuel commented 6 months ago

Incrementality studies are commonly used by large advertisers to measure the impact of their campaign. To maximize the usefulness of incrementality studies, techniques such as Ghost Ads (see the paper which introduced it) were developed, but cannot be implemented in PA in practice as there is no visibility in the bidding process.

To be able to run such methods, we would need to know in an aggregated form some details about what happened in the auction and the action of the user on the advertiser’s website thereafter.

There are two paths to have a working Ghost Ads system in the Privacy Sandbox. It could either be implemented in the overall auction process or independently by each buyer with the addition of a novel reporting system. Both options are detailed below.

Option 1: Implement Ghost Bid in runAdAuction

In this option, the logic of Ghost Bid is done in runAdAuction. The buyer determines that a user should be in the control group for ad XYZ and returns of bid for this ad along with a flag indicating that this ad is an incrementality test. If this ad wins the auction, then runAdAuction should kill it instead and make the second-highest bid the winner and enable the adtech to report on this bid. For the reporting part, a call to Shared Storage gated through a reporting function could be used - this is detailed in more depth in the second option.

Option 2: Implement Ghost Bid through reporting in generateBid

In this case, the buyer would be solely responsible for not bidding on this ad inside the generateBid function. Here we would need a new reporting mechanism for the buyer to understand if this ad would have won the auction had it not been in the control group. What I propose is a gated access to writing in Shared Storage, akin to what reportWin does in allowing a ping through sendReportTo. A new reporting function would be created for the adtech to write in SharedStorage if the counterfactual bid would have won. This way, the adtech would be able to report on subsequent outcomes on the advertiser’s website using Shared Storage, enabling a Ghost Ads incrementality study.

Do you favor one alternative over the other?

michaelkleber commented 5 months ago

Excellent point, Aloïs! This seems like a great thing to support in PA.

Can you tell me how the ghost winner methodology interacts with the separation between buyers and sellers, as used in the ads industry today? For example, in an RTB context, do DSPs send ghost bids to SSPs and then get some kind of notification if their ghost would have beat out the rendered ad? Or is this something the buy-side does entirely on their own, by making some assumption like "if I won the auction and I would have bid higher with a ghost bid then the ghost would have won the auction also"? That of course ignores the fact that an SSP might choose a lower bid over a higher one in some situations.

I ask because I like your Option 2 suggesting, but I'm trying to figure out what new work the PA auction would need to do in order to trigger the ghost write to Shared Storage. If we need to have the component SSP and top-level SSP each run scoreAd() on every ghost bid, then I am a little worried about potential performance consequences.

(Also, would you kindly add your name and Criteo affiliation to your GitHub profile? Thanks!)

alois-bissuel commented 5 months ago

Thanks for your answer.

Regarding the separation between buyers and sellers, I don't think that the Ghost Ads methodology overcomes it, meaning that there is no coordination between parties that I know of for this kind of tests. Sometimes, some actors are in a position of being both a buyer and a seller, and thus they have perfect observability on the auction. Most actors are not in this position and thus cannot do a perfect reporting. They are stuck using either approximations or modelling to know if their retracted bid would have won the whole auction, or they might restrict themselves to their internal auction.