Dynamic Pricing Competition

Bringing together academia and industry to compete in algorithms.

info

The Dynamic Pricing Competition 2020 has come to a close. First of all, thanks a lot to all participants for putting so much effort in the competition!

We can finally and proudly present you the winners … tatarataaaa …

Dynamic scenario: (This was actually our toughest battle ground this year.)
Fulin Xie
, Ph.D., is a Data Scientist at Microlise in the UK, his submission was also ranked second in the Duopoly scenario.

Oligopoly scenario:
Boris Kuznetsov and Oganes Manasian, Boris is currently finalizing his MSc. in mathematics and finance at the EPFL in Lausanne, and Organes is currently working as Intern at IBM Research in Ireland.

Duopoly scenario:
Kyle Maclean and Fredrik Odegaard, both work at The Ivey Business School in Canada as Assistant and Associate Professors. For Kyle it is already the second year in a row he is winning the Duopoly scenario!

Congratulations!

The 2021 edition of the DPC will start in May 2021 – all updates will be posted here.

Pricing is one, if not the most challenging topic in the business world. It has an enormous impact when it comes to making a loss or a profit. In today’s world, prices are frequently changed by algorithms that try to make best use of the available data.

But how are these/your algorithms performing under

  • competition with other algorithms,
  • demand uncertainty,
  • heterogeneous customer behavior,
  • incomplete information?

Pricing combines all these challenges!

Therefore, we want to bring together people from academia and industry from various backgrounds (Operations Research, Pricing & Revenue Management, Machine Learning) to let their ideas and algorithms compete in various market settings. You will receive valuable insights on how your pricing strategy is performing: where it is good and outperforming others, and where is it lacking behind and gets beaten. Get the ultimate proof that your pricing algorithm is rocket science and unbeatable, plus receive 333 EUR prize money per scenario!

You don’t need to be a fancy programmer to participate, it’s more about concepts! The submission will only require a Python script with one function (see example below) which takes a historical price and sales data as input and returns a price to be used in the next iteration.

The code and IP of your submitted algorithm will always remain your property, but participating in the contest implies that you agree that we may use it for academic purposes (such as a discussion in a scientific publication, or inclusion in a future simulation study), but not for any commercial purposes. In case you would like to opt out of this, please contact us. 

In case of questions, please don’t hesitate to contact us.
info@dynamic-pricing-competition.com

Registration

Timeline

(1) Registration will open in March 2021!

(2) Algorithm upload testing will be available beginning March 2021, checkout below how it works.

(3) The training phase with nightly competition runs will start in May 2021.

(4) Final competition simulations will be executed in July 2021.

(5) Announcement of 2021 winners will be in July/August 2021.

The three market scenarios & example code

1. The airline scenario (Duopoly)

In this scenario, you sell a finite inventory of 80 units over a selling season of 100 time periods. There is one other competitor in the market, which also has an initial inventory of 80 units. Each time period, you post a price and then observe your own sales and your competitor’s price. The demand mechanism that generates the sales based on the prices is unknown to both competitors.

The following example illustrates a single time period. The competitors post prices of $8 and $7, which generates sales of 5 and 6 units, respectively:

This process repeats itself for a selling season of 100 time periods in total:

After these 100 time periods, the selling season is finished and the competitors receive new inventory of 80 units again. The two competitors play many selling seasons and the demand mechanism is the same within a selling season, but can change across selling seasons.

A detailed explanation of this scenario can be found here.
An example code snippet can be found here and a more advanced example can be found here.

2. The retail scenario (Oligopoly)

In this scenario, you compete against two to five competitors. Each competitor sells three products of which there you have infinite inventory. You observe all prices, but only your own sales. The following example illustrates a single time period. The red player, for example sets prices of $8, $9, and $3 and sells 2, 5, and 1 units, respectively.

A selling season consists of 1000 of such time periods. When the selling season is finished, the demand mechanism changes and two to five competitors are randomly selected for another selling season.

A detailed explanation of this scenario can be found here.
An example code snippet can be found here and a more advanced example can be found here.

3. The e-commerce scenario (Dynamic)

In this scenario you play against all other competitors simultaneously in a very competitive environment. Each competitor sells a single product and has unlimited inventory. A single time period can be illustrated as follows:

Like the retail scenario, a single simulation consists of 1000 time periods. You play many simulations. Within a simulation the demand mechanism does not change (but it does  change across simulations).

As is the case in reality: some competitors will affect your demand more than others.

A detailed explanation of this scenario can be found here.
An example code snippet can be found here.

General Process

(1) Register to receive your FTP user name and password, so you can submit your algorithms.

(2) Start develop your algorithms and test that they run without errors and reasonably fast within our simulation environment.

(3) During the training phase we perform nightly competition runs and email you the performance results of your algorithms. You can upload daily new versions of your algorithms.

(4) Submit your final algorithms for the ultimate competition simulation.

Algorithm Requirements

  • Your code will be executed in a docker container with the latest Python 3.7 Anaconda distribution, if you need additional packages, please contact us and we will add them to the container. 
  • The container in which your code runs has 1 CPU and  512 MB of memory and your code is not allowed to use the local file system to safe your own log files or anything like this. There is no need for printing out things in your functions, we are not logging your output.
  • Upload your code on the FTP in a folder named after the upload date in the format “YYYY-MM-DD” (!) and please name the pricing algorithms “duopoly.py” (1-airline/hotel), “oligopoly.py” (2-retail) and “dynamic.py” (3-ecommerce). This is essential for the competition setup on AWS.
  • The competition setup expects that each of the main scripts contains a function p(.), which we can call, the function returns the price(s) and the information dump.
  • The information dump allows you to pass yourself any kind of information from one iteration to the next.
  • You do not need to participate in every scenario, but per scenario you can only submit one algorithm.
  • You can use supporting python scripts by importing them in your scripts from the current working directory.
  • Your algorithms need to return a price response on average in 0.1 seconds per iteration and the maximum time for a single price response is 10 seconds. Further the algorithm needs to be error free in 97% of the price requests.
  • In case we do not receive a valid price response (>0) from your function, we use your old price from the previous period. In case your function is not working on the first period of a simulation we draw a random price and use that.

Testing

Local testing environment:

A Manual can be found here and a .zip file with a participant testing environment that you can use to test your code locally in terms of input/output and runtime speed. 

Cloud testing environment:

A Manual can be found here. Please test your code first with the local testing environment and only when you see there no errors, test your algorithms in the cloud environment. Please note, this cloud testing will be constantly executed during the training phase, to automatically check all your uploads.

Training Phase

  • You can upload daily new algorithms to the FTP server.
  • We build new docker container with your code.
  • All container are started and the competitors of the simulation runs are drawn.
  • The simulations are performed, the performance is logged and evaluated.
  • An email is send to you with the results  on your ranking and CSVs with the simulation data (your prices, competitor prices and your demand realization).

Why you should join

Prize
money

The winner of each scenario will receive 333 EUR.

Performance evaluation

You will receive a detailed performance evaluation of your algorithm under different market situations and with various competitors.

Scoring & Benchmark

Receive a representative benchmark performance of your algorithm against all other competitors.

DPC Winner ... tatarataaaa ...

2020

Dynamic scenario: (This was the toughest battle ground in 2020.)
Fulin Xie, Ph.D., is a Data Scientist at Microlise in the UK. Btw. his Duopoly submission was also ranked second in that scenario.

Oligopoly scenario:
Boris Kuznetsov and Oganes Manasian, Boris is currently finalizing his MSc. in mathematics and finance at the EPFL in Lausanne, and Organes is currently working as Intern at IBM Research in Ireland.

Duopoly scenario:
Kyle Maclean and Fredrik Odegaard, both work at The Ivey Business School in Canada as Assistant and Associate Professors. For Kyle it is already the second year in a row he is winning the Duopoly scenario!

2019

Duopoly and Dynamic scenario:
Kyle Maclean, PhD, Assistant Professor @ Ivey Business School at Western University
Congrats Kyle! Especially the Duopoly was our most competitive scenario and a very tight competition.

Oligopoly scenario:
Ruben van de Geer, PhD, Data Maestro @ GoDataDriven
Congrats Ruben, you submitted your first oligopoly algorithm only some days before the final deadline and you where going straight to top with an impressive margin.

Note: Ruben was not in the organization committee during 2019, he joined the organizers back in 2020. Of course organizers are not participating in the DPC.

Paper on the 1st edition of the Pricing Competition in 2017

Organizer

Paul Kleinschmidt
(Haensel AMS)

Prof. Ger Kool
(VU University Amsterdam)

Ruben van de Geer
(GoDataDriven)

Alwin Haensel
(Haensel AMS)

Sponsored by

In case of questions, please don’t hesitate to contact us.

info@dynamic-pricing-competition.com