Skip to content

Instantly share code, notes, and snippets.

@saurshaz
Created April 5, 2015 09:04
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/3cbe3434260bb877a0a3 to your computer and use it in GitHub Desktop.
Save saurshaz/3cbe3434260bb877a0a3 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<script data-require="jquery@2.1.3" data-semver="2.1.3" src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<link rel="stylesheet" href="style.css" />
<link data-require="bootstrap@3.3.2" data-semver="3.3.2" rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
<script data-require="bootstrap@3.3.2" data-semver="3.3.2" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<!--<script src="script.js"></script>-->
<script>
var calcSimple = function() {
var price = parseFloat($("#totalPrice").val());
var duration = parseFloat($("#duration").val());
var cost = parseFloat($("#costOfAqusition").val()) * 12;
$("#valMachineSimpleYearly").html('$'+ ((price * duration) - cost) +' per annum');
$("#valMachineSimpleMonthly").html('$'+ (((price * duration) - cost)/12) +' per month');
};
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();
});
$('#btnCalculateSimple').click(function() {
calcSimple();
});
});
</script>
</head>
<body>
<div id="complex">
<div class="well">Calculator for Customer Lifetime Value</div>
<div class="input-grp">
<span>
<input type="text" id="averageOrderValue" placeholder="average Order Value" />
</span>
<br><br>
<span>
<input type="text" id="repeatPurchaseRate" placeholder="repeat Purchase Rate" />
</span>
<br><br>
<span>
<input type="text" id="timeBetweenPurchases" placeholder="time Between Purchases" />
</span>
<br><br>
<!--span>
<input type="text" id="grossMargin" placeholder="gross Margin" />
</span>
<br><br>
<span>
<input type="text" id="costOfCapital" placeholder="cost Of Capital" />
<br><br>
</span-->
<span>
<input type="text" id="customerAcquisitionCost" placeholder="customer Acquisition Cost" />
</span>
</div>
<br>
<input type="button" class="btn-primary" id="btnCalculate" value="calculate" />
<br><br>
<div class="well">Lifetime value of customer is ::
<p id="valMachine"></p>
</div>
</div>
<br>
<div id="simple">
<div id="complex">
<div class="well">
<p>the lifetime value of a gym member who spends $20 every month for 3 years. The value of that customer would be: $20 X 12 months X 3 years = $720 in total revenue (or $240 per year)</p>
</div>
<div class="input-grp">
<span>
<input type="text" id="totalPrice" placeholder="total price(yearly)" />
</span>
<span>
<input type="text" id="duration" placeholder="duration(in years)" />
</span>
<span>
<input type="text" id="costOfAqusition" placeholder="cost of aqusition(p.m.)" />
</span>
<br><br>
<span class="button-group">
<input type="button" class="btn-primary" id="btnCalculateSimple" value="calculate" />
</span>
</div>
<br>
<div class="well">
Profits Actually Made is ::
<div id="valMachineSimpleMonthly"></div>
<div id="valMachineSimpleYearly"></div>
</div>
</div>
</div>
<script id="jsbin-source-html" type="text/html"><!DOCTYPE html>
<html>
<head>
<script data-require="jquery@2.1.3" data-semver="2.1.3" src="http://code.jquery.com/jquery-2.1.3.min.js"><\/script>
<link rel="stylesheet" href="style.css" />
<link data-require="bootstrap@3.3.2" data-semver="3.3.2" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" />
<script data-require="bootstrap@3.3.2" data-semver="3.3.2" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"><\/script>
<\!--<script src="script.js"><\/script>-->
<script>
var calcSimple = function() {
var price = parseFloat($("#totalPrice").val());
var duration = parseFloat($("#duration").val());
var cost = parseFloat($("#costOfAqusition").val()) * 12;
$("#valMachineSimpleYearly").html('$'+ ((price * duration) - cost) +' per annum');
$("#valMachineSimpleMonthly").html('$'+ (((price * duration) - cost)/12) +' per month');
};
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();
});
$('#btnCalculateSimple').click(function() {
calcSimple();
});
});
<\/script>
</head>
<body>
<div id="complex">
<div class="well">Calculator for Customer Lifetime Value</div>
<div class="input-grp">
<span>
<input type="text" id="averageOrderValue" placeholder="average Order Value" />
</span>
<br><br>
<span>
<input type="text" id="repeatPurchaseRate" placeholder="repeat Purchase Rate" />
</span>
<br><br>
<span>
<input type="text" id="timeBetweenPurchases" placeholder="time Between Purchases" />
</span>
<br><br>
<\!--span>
<input type="text" id="grossMargin" placeholder="gross Margin" />
</span>
<br><br>
<span>
<input type="text" id="costOfCapital" placeholder="cost Of Capital" />
<br><br>
</span-->
<span>
<input type="text" id="customerAcquisitionCost" placeholder="customer Acquisition Cost" />
</span>
</div>
<br>
<input type="button" class="btn-primary" id="btnCalculate" value="calculate" />
<br><br>
<div class="well">Lifetime value of customer is ::
<p id="valMachine"></p>
</div>
</div>
<br>
<div id="simple">
<div id="complex">
<div class="well">
<p>the lifetime value of a gym member who spends $20 every month for 3 years. The value of that customer would be: $20 X 12 months X 3 years = $720 in total revenue (or $240 per year)</p>
</div>
<div class="input-grp">
<span>
<input type="text" id="totalPrice" placeholder="total price(yearly)" />
</span>
<span>
<input type="text" id="duration" placeholder="duration(in years)" />
</span>
<span>
<input type="text" id="costOfAqusition" placeholder="cost of aqusition(p.m.)" />
</span>
<br><br>
<span class="button-group">
<input type="button" class="btn-primary" id="btnCalculateSimple" value="calculate" />
</span>
</div>
<br>
<div class="well">
Profits Actually Made is ::
<div id="valMachineSimpleMonthly"></div>
<div id="valMachineSimpleYearly"></div>
</div>
</div>
</div>
</body>
</html>
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment