bump max iterations in max swap, for edge cases
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
parent
37479a159d
commit
2cd8c048f3
|
@ -553,13 +553,17 @@ export class HealthCache {
|
||||||
target: I80F48,
|
target: I80F48,
|
||||||
fun: (amount: I80F48) => I80F48,
|
fun: (amount: I80F48) => I80F48,
|
||||||
): I80F48 {
|
): I80F48 {
|
||||||
const maxIterations = 20;
|
const maxIterations = 100;
|
||||||
let current = start;
|
let current = start;
|
||||||
|
// console.log(`scanRightUntilLessThan, start ${start.toLocaleString()}`);
|
||||||
for (const key of Array(maxIterations).fill(0).keys()) {
|
for (const key of Array(maxIterations).fill(0).keys()) {
|
||||||
const value = fun(current);
|
const value = fun(current);
|
||||||
if (value.lt(target)) {
|
if (value.lt(target)) {
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
// console.log(
|
||||||
|
// ` - current ${current.toLocaleString()}, value ${value.toLocaleString()}, target ${target.toLocaleString()}`,
|
||||||
|
// );
|
||||||
current = current.max(ONE_I80F48()).mul(I80F48.fromNumber(2));
|
current = current.max(ONE_I80F48()).mul(I80F48.fromNumber(2));
|
||||||
}
|
}
|
||||||
throw new Error('Could not find amount that led to health ratio <=0');
|
throw new Error('Could not find amount that led to health ratio <=0');
|
||||||
|
@ -743,6 +747,24 @@ export class HealthCache {
|
||||||
const zeroHealthEstimate = point1Amount.sub(
|
const zeroHealthEstimate = point1Amount.sub(
|
||||||
point1Health.sub(finalHealthSlope),
|
point1Health.sub(finalHealthSlope),
|
||||||
);
|
);
|
||||||
|
const zeroHealthEstimateRatio = healthRatioAfterSwap(zeroHealthEstimate);
|
||||||
|
|
||||||
|
// console.log(`getMaxSourceForTokenSwap`);
|
||||||
|
// console.log(` - finalHealthSlope ${finalHealthSlope.toLocaleString()}`);
|
||||||
|
// console.log(` - minRatio ${minRatio.toLocaleString()}`);
|
||||||
|
// console.log(` - point0Amount ${point0Amount.toLocaleString()}`);
|
||||||
|
// console.log(` - point0Health ${point0Health.toLocaleString()}`);
|
||||||
|
// console.log(` - point0Ratio ${point0Ratio.toLocaleString()}`);
|
||||||
|
// console.log(` - point1Amount ${point1Amount.toLocaleString()}`);
|
||||||
|
// console.log(` - point1Health ${point1Health.toLocaleString()}`);
|
||||||
|
// console.log(` - point1Ratio ${point1Ratio.toLocaleString()}`);
|
||||||
|
// console.log(
|
||||||
|
// ` - zeroHealthEstimate ${zeroHealthEstimate.toLocaleString()}`,
|
||||||
|
// );
|
||||||
|
// console.log(
|
||||||
|
// ` - zeroHealthEstimateRatio ${zeroHealthEstimateRatio.toLocaleString()}`,
|
||||||
|
// );
|
||||||
|
|
||||||
const rightBound = HealthCache.scanRightUntilLessThan(
|
const rightBound = HealthCache.scanRightUntilLessThan(
|
||||||
zeroHealthEstimate,
|
zeroHealthEstimate,
|
||||||
minRatio,
|
minRatio,
|
||||||
|
|
|
@ -97,6 +97,9 @@ async function debugUser(
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMaxSourceForTokenSwapWrapper(src, tgt): void {
|
function getMaxSourceForTokenSwapWrapper(src, tgt): void {
|
||||||
|
// Turn on for debugging specific pairs
|
||||||
|
// if (src != 'DAI' || tgt != 'ETH') return;
|
||||||
|
|
||||||
const maxSourceUi = mangoAccount.getMaxSourceUiForTokenSwap(
|
const maxSourceUi = mangoAccount.getMaxSourceUiForTokenSwap(
|
||||||
group,
|
group,
|
||||||
group.banksMapByName.get(src)![0].mint,
|
group.banksMapByName.get(src)![0].mint,
|
||||||
|
|
Loading…
Reference in New Issue