Skip to main content

Perform budget allocation through Markov model

Algorithm

The algorithm uses results from Markov model (odds or attribution) to allocate the budget among the available channels.

The main steps of the algorithms are:


  1. Suppose we have k=1,,Kk=1,\dots,K channels. Perform attribution with Markov model and store odds and path level attribution.

Let oddskodds_{k}, k=1,,Kk=1,\dots,K be the odds for each channel


  1. If costs and conversion values are available, aggregate at the channel level the path level attribution of the conversion value.

Let costkcost_{k}, k=1,,Kk=1,\dots,K be the costs for each channel

Let attr_valuekattr\_value_{k}, k=1,,Kk=1,\dots,K be the conversion value attributed to each channel

If costs and/or conversion values are not available, aggregate at the channel level the path level attribution of the number of conversions.

Let attr_convkattr\_conv_{k}, k=1,,Kk=1,\dots,K be the conversions attributed to each channel


  1. Define a normalized index to be used to perform budget allocation.

If costs and conversion values are available, then:

indexk=attr_valuek/costkkattr_valuek/costkindex_{k}=\frac{attr\_value_{k}/cost_{k}}{\sum_{k}attr\_value_{k}/cost_{k}} for each available channel kk

hence indexkindex_{k} is the normalized ROI for channel kk

If costs and/or conversion values are not available then:

indexk=oddskkoddskindex_{k}=\frac{odds_{k}}{\sum_{k} odds_{k}} for each available channel kk


  1. Define the new allocation for each channel.

allocationk=allocation1,k+allocation2,k+allocation3,kk=1,,Kallocation_{k}=allocation_{1,k}+allocation_{2,k}+allocation_{3,k} \quad k=1,\dots,K

If costs and conversion values are available:

allocation1,k=costkkcostk×(1min_perc_budgetperc_reall)×total_budget_newallocation_{1,k}=\frac{cost_{k}}{\sum_{k}cost_{k}}\times(1-min\_perc\_budget-perc\_reall)\times total\_budget\_new

If costs and/or conversion values are not available:

allocation1,k=attr_convkkattr_convk×(1min_perc_budgetperc_reall)×total_budget_newallocation_{1,k}=\frac{attr\_conv_{k}}{\sum_{k}attr\_conv_{k}}\times(1-min\_perc\_budget-perc\_reall)\times total\_budget\_new

and allocation1,kallocation_{1,k} represents the quote of the budget that one doesn't want to reallocate.

While:

allocation2,k=min_perc_budgetK×total_budget_newallocation_{2,k}=\frac{min\_perc\_budget}{K}\times total\_budget\_new

and allocation2,kallocation_{2,k} represents the (small) quote of budget to be equally allocated to each channel.

Finally:

allocation3,k=indexk×perc_reall×total_budget_newallocation_{3,k}=index_{k} \times perc\_reall \times total\_budget\_new

and allocation3,kallocation_{3,k} represents the quote of budget to be allocated proportional to index_kindex\_{k}