Add sideways max-loss to perpetual-options calculator.

Show premium wipeout plus flat round-trip perp fees as case C for both size and points modes.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-29 22:38:20 +08:00
parent 28a329cb63
commit 9f3395de2f
5 changed files with 91 additions and 3 deletions
+43 -1
View File
@@ -572,6 +572,35 @@
}
}
function renderSidewaysCase(sw) {
sw = sw || {};
return (
'<section class="calc-po-case">' +
"<h4>情景 C · 横盘(最大亏损)</h4>" +
'<div class="calc-summary">' +
"<div><span>永续盈亏</span><strong>" +
fmtU(sw.perp_pnl_u != null ? sw.perp_pnl_u : 0) +
"</strong></div>" +
"<div><span>权利金(全亏)</span><strong>" +
fmt(sw.premium_u, 2) +
"U</strong></div>" +
"<div><span>永续开平手续费</span><strong>" +
fmt(sw.fee_u, 2) +
"U</strong></div>" +
"<div><span>最大亏损</span><strong class=\"" +
pnlClass(sw.net_u) +
'">' +
fmt(sw.max_loss_u, 2) +
"U</strong></div>" +
"<div><span>组合净利</span><strong class=\"" +
pnlClass(sw.net_u) +
'">' +
fmtU(sw.net_u) +
"</strong></div>" +
"</div></section>"
);
}
function renderPerpOptionsResult(data) {
const box = $("calc-po-result");
if (!box) return;
@@ -614,6 +643,11 @@
"<div><span>永续保证金</span><strong>" +
fmt(data.perp_margin_u, 2) +
"U</strong></div>" +
"<div><span>横盘最大亏损</span><strong class=\"" +
pnlClass((data.case_sideways || {}).net_u) +
'">' +
fmt((data.case_sideways || {}).max_loss_u, 2) +
"U</strong></div>" +
"<div><span>开仓参考</span><strong>" +
esc(capitalHint) +
"</strong></div>" +
@@ -663,7 +697,9 @@
'">' +
fmtU(b.portfolio_net_u) +
"</strong></div>" +
"</div></section></div>";
"</div></section>" +
renderSidewaysCase(data.case_sideways) +
"</div>";
}
function renderPerpOptionsPointsResult(data) {
@@ -743,6 +779,11 @@
"<div><span>永续保证金</span><strong>" +
fmt(data.perp_margin_u, 2) +
"U</strong></div>" +
"<div><span>横盘最大亏损</span><strong class=\"" +
pnlClass((data.case_sideways || {}).net_u) +
'">' +
fmt((data.case_sideways || {}).max_loss_u, 2) +
"U</strong></div>" +
"<div><span>开仓参考</span><strong>" +
esc(capitalHint) +
"</strong></div>" +
@@ -774,6 +815,7 @@
"</strong></div>" +
"</div></section>" +
caseB +
renderSidewaysCase(data.case_sideways) +
"</div>";
}