JSFiddle - React, Tailwind, and code Playground
by joplomacedo
JavaScript
function getMaxShares({
limitPrice,
stopPrice,
accountBalance,
availableBuyingPower,
accountRisk = 0.005,
}) {
const maxAllowedAccountRisk = 0.02;
if (accountRisk > maxAllowedAccountRisk) {
accountRisk = maxAllowedAccountRisk;
console.error(
`accountRisk was set to ${accountRisk}, but it cannot exceed ${maxAllowedAccountRisk}. accountRisk was set to ${maxAllowedAccountRisk}`
);
}
const accountRiskInDollars = accountBalance * accountRisk;
console.log("π ~ file: test.js ~ line 30 ~ accountRiskInDollars", accountRiskInDollars)
const maxSharesBasedOnAccountRisk = accountRiskInDollars / Math.abs(limitPrice - stopPrice);
console.log("π ~ file: test.js ~ line 32 ~ maxSharesBasedOnAccountRisk", maxSharesBasedOnAccountRisk)
const maxSharesBasedOnAvailableCash = availableBuyingPower / limitPrice;
console.log("π ~ file: test.js ~ line 35 ~ maxSharesBasedOnAvailableCash", maxSharesBasedOnAvailableCash)
const maxShares = Math.floor(
Math.min(maxSharesBasedOnAccountRisk, maxSharesBasedOnAvailableCash)
);
console.log("π ~ file: test.js ~ line 40 ~ maxShares", maxShares)
return maxShares;
}
const limitPrice = 10;
const availableBuyingPower = 4500;
const maxShares = getMaxShares({
limitPrice,
stopPrice: 10.1,
accountBalance: availableBuyingPower,
availableBuyingPower,
accountRisk: 0.02
})
const isError = maxShares*limitPrice > availableBuyingPower
if (isError) {
console.log('Failed!')
}