modp.py 829 B

123456789101112131415161718192021222324252627282930
  1. from finite_fields.modp import IntegersModP
  2. q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
  3. modq = IntegersModP(q)
  4. a = modq(-1)
  5. print("0x%x" % a.n)
  6. print("\n")
  7. two = modq(2)
  8. inv2 = modq(2).inverse()
  9. print("Inverse of 2 = 0x%x" % inv2.n)
  10. print((two * inv2))
  11. # This is from bellman
  12. inv2_bellman = 0x39f6d3a994cebea4199cec0404d0ec02a9ded2017fff2dff7fffffff80000001
  13. assert inv2.n == inv2_bellman
  14. assert (2 * inv2.n) % q == 1
  15. # Futures contract calculation
  16. multiplier = modq(1)
  17. quantity = modq(100)
  18. entry_price = modq(10000)
  19. exit_price = modq(15000)
  20. initial_margin = multiplier * quantity
  21. print("initial margin =", initial_margin)
  22. price_return = exit_price * entry_price.inverse()
  23. print("R =", price_return)
  24. pnl = initial_margin - (initial_margin * exit_price) * entry_price.inverse()
  25. print("PNL =", pnl)