| 1234567891011121314151617181920212223242526 |
- from finite_fields.modp import IntegersModP
- q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
- modq = IntegersModP(q)
- two = modq(2)
- inv2 = modq(2).inverse()
- print("Inverse of 2 = 0x%x" % inv2.n)
- # This is from bellman
- inv2_bellman = 0x39f6d3a994cebea4199cec0404d0ec02a9ded2017fff2dff7fffffff80000001
- assert inv2.n == inv2_bellman
- assert (2 * inv2.n) % q == 1
- # Futures contract calculation
- multiplier = modq(1)
- quantity = modq(100)
- entry_price = modq(10000)
- exit_price = modq(15000)
- initial_margin = multiplier * quantity
- print("initial margin =", initial_margin)
- price_return = exit_price * entry_price.inverse()
- print("R =", price_return)
- pnl = initial_margin - (initial_margin * exit_price) * entry_price.inverse()
- print("PNL =", pnl)
|