Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Second highest bid reporting in reportWin #462

Closed
meihuix opened this issue Feb 23, 2023 · 9 comments
Closed

Second highest bid reporting in reportWin #462

meihuix opened this issue Feb 23, 2023 · 9 comments

Comments

@meihuix
Copy link

meihuix commented Feb 23, 2023

In transparent first price auctions, buyers will receive the second highest bid (or minimum bid to win) after the auction closes (ref https://blog.google/products/admanager/rolling-out-first-price-auctions-google-ad-manager-partners/). This information helps the buyer to refine the bidding algorithm. The second highest bid is needed in both winning and losing cases, this post will focus on the winning case. Currently Fledge supports highestScoringOtherBid and madeHighestScoringOtherBid in reportWin. madeHighestScoringOtherBid is a bool field indicating whether the winning interest group owner was the only bidder that made bids with the second highest score. These two fields are insufficient for the purpose of competition modeling. When madeHighestScoringOtherBid is true, the winning buyer has no information about the true auction competition, using highestScoringOtherBid will overestimate and create self-competition.

In addition to these two fields, we propose to add another field highestScoringOtherBidFromOtherBuyer, which is the highest scoring bid from a different interest group owner other than the winner. In the winning cases, this field will be sufficient and useful for buyers to learn about auction competition for bidding optimization.

@michaelkleber
Copy link
Collaborator

I don't think we should include this information in our event-level reports.

The privacy leak is pretty large. In particular, it seems like this would immediately give away the answer to the question "Is this person in any interest groups owned by anyone other than the winner?" There is no other signal anywhere that leaks something about all of a person's IGs, and we really don't want to add one.

The signal also does not seem necessary for correct accounting, which is the point of all the other signals we include in event-level reports. The inclusion of highestScoringOtherBid was necessary because otherwise it would be impossible to run a second-price auction; this additional field certainly isn't essential in that way.

We should be more open to additional signals in aggregate reporting, though, where we've removed the risk of event-level privacy leakage. Would that suffice for your goals?

@meihuix
Copy link
Author

meihuix commented Mar 31, 2023

Today, buyers typically submit only their highest bid into the seller side auction through an internal decrowding stage. Fledge forces buyers to submit all their bids into the seller auction. It is very typical that a user belongs to multiple IGs for the same advertiser. With the current reporting API, advertisers may end up second pricing themselves.

It would be ideal if the Fledge API can support this decrowding stage, so that the interest group owners can have the option to only submit their highest bid, to avoid setting the price by its own bid. What we proposed above is an alternative that seems simpler to implement. I agree that this gives away slightly more information compared to the current reporting, though it's still much less information than leaking all of a person’s IGs.

@JoelPM
Copy link
Contributor

JoelPM commented Apr 10, 2023

One of the long standing problems in ad-tech is the information asymmetry that exists between buyers and sellers. Buyers have access to all the campaigns that are running, have rich user profiles, can track performance by user, and bid selectively (the decrowding that @meihuix referenced) based on that information. Sellers, on the other hand, have none of that information and must set floors broadly based on the inventory attributes (page, section, etc). This results in a world where buyers can cherry pick the users they want and pubs are stuck setting a floor based on inventory attributes, which is always a compromise between undervaluing some users and overvaluing others.

Second price auctions require two things to work well:

  1. Enough demand (bid density) to fairly price the opportunity
  2. Ability for the seller to set a fair floor

Unfortunately, these two requirements are very rarely met in adtech. The "decrowding" that every DSP performs means bid density is significantly reduced and the information asymmetry mentioned above means that publishers can't set fair floors. It is for these reasons that I am very opposed to second price auctions. My experience over the last fifteen years in adtech has shown me that the only result of a second price auction under the current circumstances is a loss of revenue for publishers that they then attempt to counter by adding more demand sources, which leads to other inefficiencies.

When I hear that a DSP doesn't want to floor themselves, there are two possibilities that come to mind:

  1. The same campaign competes against itself - this is definitely not desirable and I think we all agree that this isn't a good market dynamic. It's also easily solvable by passing bid metadata and ensuring that a campaign doesn't self compete. OpenX offers this ability on our exchange and I assume most other SSPs do as well.
  2. Different campaigns from the same DSP compete. From a market dynamic perspective, I don't think this is actually a problem - different campaigns should be competing for the users that matter to them and DSPs that artificially limit bid density are harming the effectiveness of a second price auction.

All that being said, until things significantly change in adtech, I think a first price auction is still the most fair mechanism. I had hopes that Fledge would potentially enable more bid density and pave the way for an optimal second price auction, but the move to have Interest Groups represent more than a single campaign is a step away from that possibility.

I would strongly encourage the Chrome team not to do anything that increases the information asymmetry problem that exists today. One of the few pieces of information a seller has that a buyer doesn't is the bid landscape (though, as noted above, the DSPs have very rich information on all the campaigns they are running). Giving that information to buyers (whether in aggregate or through a second price event-level signal) will further erode a publishers ability to monetize their content.

@michaelkleber
Copy link
Collaborator

@JoelPM Chrome is not trying to take any position on the relative merits of first-price vs second-price auctions. I hear the reasons you don't like second-pricing, but I've heard similar information-asymmetry arguments about the bid-shading that happens in first-price auctions.

@meihuix If your goal is having only the "best" of your IGs participate in the auction, then perhaps the existing Interest Group prioritization capabilities already offer what you want? See https://github.com/WICG/turtledove/blob/main/FLEDGE.md#35-filtering-and-prioritizing-interest-groups

@patmmccann
Copy link
Contributor

patmmccann commented Apr 10, 2023

With the current reporting API, advertisers may end up second pricing themselves.
.... to avoid setting the price by its own bid ...

Second-price auctions are a relic of the past at this point. Any attempt to revive them in the FLEDGE project would likely violate CMA conditions. Advertisers cannot second price themselves in modern advertising systems because publishers and ad servers only select bids and bill on a first price basis. It is difficult to imagine FLEDGE identifying a second price to surface to the winner, as the scoreAd function may use many criteria other than price.

@michaelkleber
Copy link
Collaborator

Again, the design of FLEDGE does not make anyone use first-price or second-price auctions. There is enough information in FLEDGE event-level reports that running first-price and second-price auctions are both possible. All the business logic, including any questions like first-price or second-price, remains in the hands of the party running the auction.

@patmmccann
Copy link
Contributor

running first-price and second-price auctions are both possible

are you saying both possible by the top level seller or both possible by a component level seller, or either?

@michaelkleber
Copy link
Collaborator

A component seller can definitely run either a first- or second-price auction.

I don't thing we currently support a top-level seller running a second-price auction and at the same time allowing component second-price auctions — there is no mechanism for a component auction's second price to propagate up to the top-level auction. When we discussed this possibility in the FLEDGE call last year, we heard that nobody would ever do that, so we did not prioritize this capability.

@meihuix
Copy link
Author

meihuix commented Apr 17, 2023

I agree that running a first price or second price auction is a seller’s choice. However, from the buyer's perspective, having a correctly defined highest other bid (HOB) is essential in both cases. Some background on why this is also needed to support a first price auction. Today AdX is running a transparent first price auction. The HOB is revealed to all buyers post auction and buyers can use HOB to learn the competitive landscape to make more informed bidding decisions.

The problem is that in Fledge the HOB does not convey the exact information that the buyer needs. The buyer mostly cares about the highest other bid from the other buyer, as that represents the amount required to win the auction. Let’s say we have a very competitive advertiser and the user is registered to multiple IGs that the advertiser owns. For example the advertiser bids $2 for IG1, $1.8 for IG2, other buyers bid below $1. Then the advertiser actually won’t have any useful information about the competition since the current defined highestScoringOtherBid is $1.8 which is her own bid. Also, the existing Interest Group prioritization does not seem to help. In the example above, assuming that Interest Group priority can compute bids with similar accuracy as the generateBid (which in itself will be another discussion), then both IG1 and IG2 will be ranked at the top and submit their bids. @michaelkleber is it possible to provide further details regarding how this functionality can be used here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants