Skip to content

Instantly share code, notes, and snippets.

@saurshaz
Created April 3, 2015 08:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saurshaz/980259e396bf1e8737fc to your computer and use it in GitHub Desktop.
Save saurshaz/980259e396bf1e8737fc to your computer and use it in GitHub Desktop.
CLV computation
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>
<!--<script src="script.js"></script>-->
<script>
var calculateClv = function(a, b, c, d, e, f) {
c = c ? c : 30, d = d ? d : 1, e = e ? e : 0, f = f ? f : 0;
var g = -1 * f,
h = 0,
j = a * d,
k = Math.pow(1 - e, 1 / 365),
l = 1825,
m = [],
n = 0;
for (i = 0; l > i; i++) i % c == 0 && (j = a * d, j *= Math.pow(b, n), j *= Math.pow(k, h), g += j, m.push(g), h += c, n++);
return m
}
var calc = function() {
var averageOrderValue = parseFloat($("#averageOrderValue").val());
var repeatPurchaseRate = parseFloat($("#repeatPurchaseRate").val()) / 100;
var timeBetweenPurchases = parseInt($("#timeBetweenPurchases").val());
var grossMargin = parseFloat($("#grossMargin").val()) / 100;
var costOfCapital = parseFloat($("#costOfCapital").val()) / 100;
var customerAcquisitionCost = parseFloat($("#customerAcquisitionCost").val());
var clvSeries = calculateClv(averageOrderValue, repeatPurchaseRate, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
var rpr10 = repeatPurchaseRate + .1 * (1 - repeatPurchaseRate);
var rpr20 = repeatPurchaseRate + .2 * (1 - repeatPurchaseRate);
var rpr30 = repeatPurchaseRate + .3 * (1 - repeatPurchaseRate);
var clv_rpr_10 = calculateClv(averageOrderValue, rpr10, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
var clv_rpr_20 = calculateClv(averageOrderValue, rpr20, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
var clv_rpr_30 = calculateClv(averageOrderValue, rpr30, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
var aov10 = averageOrderValue + .1 * averageOrderValue;
var aov20 = averageOrderValue + .2 * averageOrderValue;
var aov30 = averageOrderValue + .3 * averageOrderValue;
var clv_aov_10 = calculateClv(aov10, repeatPurchaseRate, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
var clv_aov_20 = calculateClv(aov20, repeatPurchaseRate, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
var clv_aov_30 = calculateClv(aov30, repeatPurchaseRate, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);
debugger;
var computed_clv = clvSeries[clvSeries.length - 1];
$('#valMachine').html(computed_clv);
//alert(computed_clv.formatMoney(2))
};
$(document).ready(function() {
$('#btnCalculate').click(function() {
calc();
//alert('calculate');
/** var averageOrderValue = parseFloat($("#avgOrderValue").val());
var repeatPurchaseRate = parseFloat($("#repurchaseRate").val()) / 100;
var timeBetweenPurchases = parseInt($("#timeBetweenPurchases").val());
var grossMargin = parseFloat($("#grossMargin").val()) / 100;
var costOfCapital = parseFloat($("#costOfCapital").val()) / 100;
var customerAcquisitionCost = parseFloat($("#customerAcquisitionCost").val());
//var clvSeries = calculateClv(averageOrderValue, repeatPurchaseRate, timeBetweenPurchases, grossMargin, costOfCapital, customerAcquisitionCost);*/
//alert(clvSeries);
});
});
</script>
</head>
<body>
average Order Value
<input type="text" id="averageOrderValue" placeholder="averageOrderValue">
<br>repeat Purchase Rate
<input type="text" id="repeatPurchaseRate" placeholder="repeatPurchaseRate">
<br>time Between Purchases
<input type="text" id="timeBetweenPurchases" placeholder="timeBetweenPurchases">
<br>gross Margin
<input type="text" id="grossMargin" placeholder="grossMargin">
<br>cost Of Capital
<input type="text" id="costOfCapital" placeholder="costOfCapital">
<br>customer Acquisition Cost
<input type="text" id="customerAcquisitionCost" placeholder="customerAcquisitionCost">
<br>
<input type="button" id="btnCalculate" value="calculate">
<div id="valMachine"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment