Part 0介绍了RTB的胜出价格会在凌晨陡升。我们还介绍了一个Pace系统,如果这个系统所有的DSPs都用,那陡升的问题就会消失。Part 0中的系统中含有一个隐式的假设:任何两个请求都认为是相同的,而忽略其它因素,比如请求时间。在Part 1中介绍的竞争价格会随时间而变化,但这个Part 0中的系统是忽略了这一点的。
一些思维敏捷的读者意识到了这个问题,他们评论到如果知道一些时间的胜出价格很高,那这些时间是不应该去竞价的。
本文中将介绍我们以逐请求的方式计算利润的方法,并会解释一个Pacer同时处理竞争价格和展示质量的变化,并且不需要硬编码什么时间不竞价。而达到上述的目标只需要Pacing系统更新控制变量周期变长很多,比如一天,并且控制变量视为一个“最小可接受期望利润”阈值。下图中是比较平均竞争价格和平均期望利润随时间变化的图,图中收集了多天数据,注意可以看到凌晨价格陡升,利润下降:
一个经过很好调整的,不常变化的Pacing系统最后会在图中显示为一条横向的直线,我们只对期望利润超过阈值的请求竞价。这种做法的核心思想是图中的曲线表示某种分布较宽且偏峰的分布平均值,所以即使平均价格上升并且期望利润下降,也并不意味着没有任何好的请求,它只是意味着好的请求变少了。通过设置一个固定的,不常更新的阈值,我们可以在一天任何时间都竞价,只是可能在凌晨少消耗,而且凌晨前多消耗。
这可以说是利用了其它竞价者的次优行为,因为一些竞价者不理性的在凌晨进入竞价,使得市场价格陡升。
我们的算法是采用刮奶油的方式,只对最好的请求竞价。我们在白天竞价时是有所保留的,当其它竞价者预算消耗完后,请求的需求就下降了,这导致市场价格下降,并同时导致期望利润上升,这时我们会加大竞争量。
Navigating Around Publisher Price Floors
我们已经介绍了我们针对其它竞价者的算法策略,再将介绍关于针对发布者的策略。这个系统如何应对发布者的底价呢?底价是指发布者最低愿出售的价格。其实可以理解为发布者也参与这个广告位的竞价。如果没有竞价者超过这个底价,那么就没有竞价者得到这个曝光机会。如果有多于一个竞价者高于这个底价,那么底价是没有影响的,胜出者仍然是付第二名的出价。如果只有一个出价高于底价,那么发布者会多获得一些利润。
First Price |
Second Price |
Reserve Price |
Clearing Price |
5 |
3 |
n/a |
3 |
5 |
3 |
2 |
3 |
5 |
3 |
4 |
4 |
5 |
3 |
6 |
no transaction |
这在微观层面是很合理的,如果我们胜出竞价,我们是很乐意接收扣费更高的扣费的:因为我们的出价是我们认为的价值,我们所付的是第二名的出价,两者之差即是我们的利润。发布者更想让按我们的出价扣费,因为如此,他们是有动机将底线不断向上提,这样他们能得到更多的利润。我们的算法采用了应对竞价者的方法来应对发布者的提升底价。在任一时间,Pacer的控制变量告诉我们最小期望利润的阈值。如果发布者提升了它的底线,它们的展示机会的期望利润会下降。如果它下降到阈值之下,我们就不会再对这次请求竞价,而不会去接受它提高会后底线。这就是我们所指的查看底价。控制变量的设置由预测决定的,并基于整个exchange的利润空间决定的。所以任何提高底价的发布者都可能失去我们的竞价,因为我们可以从其它发布者那取得曝光。底线的设置可能会低于我们的出价,但是可能高于第二名的出价,所以我们就会放弃一部分利润给发布者。这也就是exchange存在的意义:市场机制利用竞争使利润空间变大。
值得注意的是在宏观层面上,发布者不需要把它们的流量全部通过RTB方式售出:他们可以以合约广告的方法以更高的价格售出。用广告术语来讲,合约广告流量是“优质流量”,其它的流量是“剩余流量”。发布者因为有广告主可能通过比如RTB的方式得到价格更低的广告效果,发布者是有动机将底价设置的比较高。广告术语是“交叉渠道冲突”,因为剩余流量可能会伤害优质流量的利益。如果发布者出于这种考虑设置底价,那么它们可能设置的比我们的出价还要高,而不是想榨出第一名和第二名之间的利润。结果就是期望利润是零,作为DSP的我们没有必要去为没有利润的请求去出价。Mike on Ads对这个问题有一篇文章很好的解释了为什么发布者这么做不是个好主意。