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:
@@ -38,6 +38,11 @@ class HubPerpOptionsCalcTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(data["case_b"]["portfolio_net_u"], coins * 32.0 - 50.0, places=6)
|
||||
self.assertAlmostEqual(data["perp_margin_u"], 180.0, places=6)
|
||||
self.assertTrue(data["capital_ok"])
|
||||
sw = data["case_sideways"]
|
||||
self.assertAlmostEqual(sw["premium_u"], data["premium_total_u"], places=6)
|
||||
self.assertAlmostEqual(sw["fee_u"], 1.8, places=6)
|
||||
self.assertAlmostEqual(sw["max_loss_u"], data["premium_total_u"] + 1.8, places=6)
|
||||
self.assertAlmostEqual(sw["net_u"], -sw["max_loss_u"], places=6)
|
||||
|
||||
def test_pct_mode(self):
|
||||
data, err = calc_perp_options_hedge(
|
||||
@@ -113,6 +118,12 @@ class HubPerpOptionsCalcTests(unittest.TestCase):
|
||||
# 组合净利=目标: (15+36)/(2-1) = 51
|
||||
self.assertAlmostEqual(data["case_b"]["move_points_portfolio"], 51.0, places=6)
|
||||
self.assertAlmostEqual(data["case_b"]["portfolio_net_u"], 15.0, places=6)
|
||||
# 横盘:权利金36 + 同价开平费 2*1800*0.0005=1.8 → 37.8
|
||||
sw = data["case_sideways"]
|
||||
self.assertAlmostEqual(sw["premium_u"], 36.0, places=6)
|
||||
self.assertAlmostEqual(sw["fee_u"], 1.8, places=6)
|
||||
self.assertAlmostEqual(sw["max_loss_u"], 37.8, places=6)
|
||||
self.assertAlmostEqual(sw["net_u"], -37.8, places=6)
|
||||
|
||||
def test_points_ratio_1_to_1_no_portfolio(self):
|
||||
data, err = calc_perp_options(
|
||||
|
||||
Reference in New Issue
Block a user