Thursday, March 17, 2016


Here at realzeit, we believe that most things in the world of performance display marketing can be solved via RTB. We strive to build a fully automatised service buying traffic most efficiently according to a specific campaign goal. Not clicks, but actually hard performance KPIs like installs or sales should be used to measure the effectiveness of a campaign, if possible. Of course, we think that machine learning is expected to make way smarter decisions than any human could.

However, many things run in the background. Buying interesting traffic is not as straightforward as one may think. Being on the demand side actually requires close relationships with the publishers and therefore is not only tech-focused. Furthermore, pitching our product to potential clients, we heard of all these competitors that offered magically low CPIs without any technology at all. Is it even possible to run user acquisition via RTB?


We actually did find that large problems of finding new users or clients can be solved by algorithms. I will show you on the example of a simple app install campaign how one can reach the goal of finding new and active users of an app. This is not magic, but much rather good craftsmanship. It is necessary to tackle the not only mobile specific problems:
  • avoid fraud and (more importantly) accidental clicks
  • find interesting inventory for your app's target group
  • optimise on real users
Our example at hand is a simple app install campaign. Our data comes from a live campaign running in Europe, but all numbers are presented in completely arbitrary units.  The goal in this case is to reach the minimal CPI for the sake of simplicity.

First of all, lets distinguish between server-side clicks and real clicks. Server-side clicks are all events that trigger the click tracking url. Such events may be a either real or a accidental click (not even talking about fraud for now). Especially accidental clicks are a problem in the mobile world that does not appear so much in desktop campaigns. This is due to relatively large fingers in combination with small screens. Real clicks in our terminology are clicks by users that are actually intended. These are the interested users we have to focus on.

The first plot shows the CPI of our example campaign over time. Here we used a standard optimization with server-side clicks as input for the learning. 

We see that the performance decreases over time. Why would that be? Are we not continuously optimizing? Obviously, several things are done wrong in this campaign.

First of all, every optimization is prone to get stuck in a local minimum where it is difficult to get out. The main problem, however, is that we did use server-side clicks as an input. Placements that generate accidental clicks will be valued more importantly than others which could produce fewer but more interesting clicks. Solving these two problems is straightforward. We need to identify real clicks and we need to better explore our inventory to find new apps and mobile sites all the time to feed our algorithm constantly with new information.

The exploration problem is most easily solved. A fixed percentage of all bids should be randomly chosen not to bid according to the active optimization. Much rather they should be used to test out new placements and users all the time. 
To solve the problem of finding actual interested users is more complicated. As a solution, we have developed specific rich media banners that we use as sensors to find apps and sites populated by  users actually interested in the campaign. We use them on a random subset of bids and obtain information about the real click rates of each ad-slot. Both, the information that we collect about new users and placements and the real click information can be fed seamlessly into the optimization algorithm.

The effects of exploration and optimization on real clicks can be seen directly in our data. The second figure shows the CPI in arbitrary units over time, same as in the first figure. The purple data corresponds to the exploration part of our campaign (about 10% of all impressions bought). It uses our sensor creatives to identify interesting placements and users. The green dots show the overall campaign performance (including the exploration). Datapoints have been fitted with a quadratic polynomial for the sake of simplicity to visualize the changes over time.

First of all, lets discuss the behavior of the exploration part of the campaign. It starts its search on inexpensive placements and explores from there. We see that the CPI increases slowly over time. This is expected behavior since we want to explore more and more parts of the inventory and we need to invest money. The main result, however, is that by optimizing, using the data from the exploration campaign and focusing on real and interested users, we can improve the overall CPI considerably. We also see that we get considerably better by automatically selecting the best placements and users from all price classes


We used the three main ingredients (avoid accidental clicks, exploration, strong algorithmic optimization) to run a successful user acquisition campaign in the RTB universe and have shown our results on an example. Doing user acquisition in RTB is actually not easy. Nonetheless, it is straightforward craftsmanship combining a suitable exploration, the identification of real clicks and a strong algorithmic optimization.

If you, dear reader, are interested in finding out more about our approaches, please do not hesitate to contact us at We would love to show you more insights.