@cloudbet/market-helper
Version:
SDK to generate localized sport market information
40 lines • 1.83 kB
JavaScript
import { BigNumber } from 'bignumber.js';
export var getSingleStakeLimit = function (liability, price) {
return new BigNumber(liability).dividedBy(new BigNumber(price).minus(1)).toNumber();
};
export var getNormalizedRelevances = function (probabilities) {
var totalRelevance = new BigNumber(probabilities.length);
for (var _i = 0, probabilities_1 = probabilities; _i < probabilities_1.length; _i++) {
var prob = probabilities_1[_i];
totalRelevance = totalRelevance.minus(prob);
}
return probabilities.map(function (p) {
return new BigNumber(1).minus(p).dividedBy(totalRelevance).toNumber();
});
};
export var getParlayStakeLimit = function (legs) {
var minSingleStakeLimit = undefined;
var singleStakeLimits = new Array(legs.length);
for (var i = 0; i < legs.length; i++) {
var _a = legs[i], liability = _a.liability, price = _a.price;
var stakeLimit = getSingleStakeLimit(liability, price);
singleStakeLimits[i] = stakeLimit;
if (minSingleStakeLimit === undefined || stakeLimit < minSingleStakeLimit) {
minSingleStakeLimit = stakeLimit;
}
}
var parlayStakeLimit = 0;
var normalizedRelevances = getNormalizedRelevances(legs.map(function (l) { return l.probability; }));
for (var i = 0; i < legs.length; i++) {
var relevance = normalizedRelevances[i];
var singleLimit = singleStakeLimits[i];
var legLimit = new BigNumber(singleLimit)
.multipliedBy(relevance)
.toNumber();
// we know this wont be undefined at this point anymore
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
parlayStakeLimit += Math.min(legLimit, minSingleStakeLimit);
}
return parlayStakeLimit;
};
//# sourceMappingURL=liability.js.map