The FairPut Initiative

Of course one can slightly optimize by making p1 = 1.0 - p2
The above statement is incorrect: it must remain as "p1 = normal_cdf(z1)"

p1 and p2 are similar to d1 and d2 in BSM, but (of course) have differing probability values due to differing underlying z values.
The above statement too is incorrect, sorry. Fix:
In FPM, z1 and z2 are functionally similar to original BSM's d1 and d2, but their values differ.
In my above BSM code, z1 is identical to original BSM's d1, and z2 identical to original BSM's d2.
 
Last edited:
Another generic MISPRICING BUG in the Black-Scholes-Merton (BSM) option pricing model:

BSM(S=100,K=100,t=1,s=200%,r=0%,q=0%) :
CALL=68.268949213709 PUT=68.268949213709
s.a. https://www.optioncreator.com/options-calculator

In contrast to BSM, for these same parameters, in the FPM option pricing model both CALL and PUT cannot become higher than 50, which is also very logical from a probability point of view, ie. for 50% up and 50% down probability. Ie. there is no mathematical rationale nor a logic for the premium becoming more than 50:

FPM(S=100,K=100,t=1,s=200%,r=0%,q=0%) :
CALL=47.724986805182 PUT=47.724986805182

In BSM the premium goes high up to 100 the higher the volatility is set, but in FPM the maximum it can be is 50, and we are not talking of any artificial capping here but of just the raw result of the algorithm.
 
Last edited:
With FPM it is possible to have CALL, PUT, and FairPUT all three together in the market!

BUT: this all is not tested yet (it just takes some time), but I'm hopeful it will fit the bill, so to say, of causing no arbitrage.

AND: when I tried (and failed) to add FairPUT to classic BSM (in the old thread), I unfortunately made an error (which I realize just now). So, now I think the FairPUT algorithm and functionality very well should work also with BSM, though this too is untested yet.
 
Last edited:
New Synthetic combinations with FairPut and k=2
(? means 'not tested yet')
Code:
List of Synthetics k=2
(A synthetic position is a way to create the payoff of a financial instrument using other financial instruments)

Legend:
  LS: Long Stock
  SS: Short Stock
  LC: Long Call
  SC: Short Call
  LP: Long Put
  SP: Short Put
  LCFP: Long CFP (Long FairCall)
  SCFP: Short CFP (Short FairCall)
  LPFP: Long PFP (Long FairPut)
  SPFP: Short PFP (Short FairPut)

Combinations to build Synthetics:

k=2
 1: LS   + SS   = (neutral nonsense)
 2: LS   + LC   = (like a LS #1)
 3: LS   + SC   = SP    ie. "Covered Call"
 4: LS   + LP   = LC    ie. "Protective Put" or "Married Put"
 5: LS   + SP   = (like a LS #2)
 6: LS   + LCFP = ?
 7: LS   + SCFP = ?
 8: LS   + LPFP = ?
 9: LS   + SPFP = ?

10: SS   + LC   = LP
11: SS   + SC   = (like a SS #1)
12: SS   + LP   = (like a SS #2)
13: SS   + SP   = SC
14: SS   + LCFP = ?
15: SS   + SCFP = ?
16: SS   + LPFP = ?
17: SS   + SPFP = ?

18: LC   + SC   = (neutral nonsense)
19: LC   + LP   = (like a "V", ie. a Long Straddle)
20: LC   + SP   = LS     BUT: this is even a free lunch! :)
21: LC   + LCFP = ?
22: LC   + SCFP = ?
23: LC   + LPFP = ?
24: LC   + SPFP = ?

25: SC   + LP   = SS     BUT: this is even a free lunch! :)
26: SC   + SP   = (like an "A", ie a Short Straddle; inverse of "LC + LP" Long Straddle)
27: SC   + LCFP = ?
28: SC   + SCFP = ?
29: SC   + LPFP = ?
30: SC   + SPFP = ?

31: LP   + SP   = (neutral nonsense)
32: LP   + LCFP = ?
33: LP   + SCFP = ?
34: LP   + LPFP = ?
35: LP   + SPFP = ?

36: SP   + LCFP = ?
37: SP   + SCFP = ?
38: SP   + LPFP = ?
39: SP   + SPFP = ?

40: LCFP + SCFP = (neutral nonsense)
41: LCFP + LPFP = ?
42: LCFP + SPFP = ?

43: SCFP + LPFP = ?
44: SCFP + SPFP = ?

45: LPFP + SPFP = (neutral nonsense)

cReal = c(45) - cNN(5) = 40
 
Last edited:
New Synthetic combinations with FairPut and k=3 (a totally new land to discover :))
(? means 'not tested yet')
Code:
List of Synthetics k=3
(A synthetic position is a way to create the payoff of a financial instrument using other financial instruments)

Legend:
  LS: Long Stock
  SS: Short Stock
  LC: Long Call
  SC: Short Call
  LP: Long Put
  SP: Short Put
  LCFP: Long CFP (Long FairCall)
  SCFP: Short CFP (Short FairCall)
  LPFP: Long PFP (Long FairPut)
  SPFP: Short PFP (Short FairPut)

Combinations to build Synthetics:

k=3
  1: LS   + SS   + LC   = (neutral nonsense)
  2: LS   + SS   + SC   = (neutral nonsense)
  3: LS   + SS   + LP   = (neutral nonsense)
  4: LS   + SS   + SP   = (neutral nonsense)
  5: LS   + SS   + LCFP = (neutral nonsense)
  6: LS   + SS   + SCFP = (neutral nonsense)
  7: LS   + SS   + LPFP = (neutral nonsense)
  8: LS   + SS   + SPFP = (neutral nonsense)

  9: LS   + LC   + SC   = (neutral nonsense)
 10: LS   + LC   + LP   = ?
 11: LS   + LC   + SP   = ?
 12: LS   + LC   + LCFP = ?
 13: LS   + LC   + SCFP = ?
 14: LS   + LC   + LPFP = ?
 15: LS   + LC   + SPFP = ?

 16: LS   + SC   + LP   = ?
 17: LS   + SC   + SP   = ?
 18: LS   + SC   + LCFP = ?
 19: LS   + SC   + SCFP = ?
 20: LS   + SC   + LPFP = ?
 21: LS   + SC   + SPFP = ?

 22: LS   + LP   + SP   = (neutral nonsense)
 23: LS   + LP   + LCFP = ?
 24: LS   + LP   + SCFP = ?
 25: LS   + LP   + LPFP = ?
 26: LS   + LP   + SPFP = ?

 27: LS   + SP   + LCFP = ?
 28: LS   + SP   + SCFP = ?
 29: LS   + SP   + LPFP = ?
 30: LS   + SP   + SPFP = ?

 31: LS   + LCFP + SCFP = (neutral nonsense)
 32: LS   + LCFP + LPFP = ?
 33: LS   + LCFP + SPFP = ?

 34: LS   + SCFP + LPFP = ?
 35: LS   + SCFP + SPFP = ?

 36: LS   + LPFP + SPFP = (neutral nonsense)

 37: SS   + LC   + SC   = (neutral nonsense)
 38: SS   + LC   + LP   = ?
 39: SS   + LC   + SP   = ?
 40: SS   + LC   + LCFP = ?
 41: SS   + LC   + SCFP = ?
 42: SS   + LC   + LPFP = ?
 43: SS   + LC   + SPFP = ?

 44: SS   + SC   + LP   = ?
 45: SS   + SC   + SP   = ?
 46: SS   + SC   + LCFP = ?
 47: SS   + SC   + SCFP = ?
 48: SS   + SC   + LPFP = ?
 49: SS   + SC   + SPFP = ?

 50: SS   + LP   + SP   = (neutral nonsense)
 51: SS   + LP   + LCFP = ?
 52: SS   + LP   + SCFP = ?
 53: SS   + LP   + LPFP = ?
 54: SS   + LP   + SPFP = ?

 55: SS   + SP   + LCFP = ?
 56: SS   + SP   + SCFP = ?
 57: SS   + SP   + LPFP = ?
 58: SS   + SP   + SPFP = ?

 59: SS   + LCFP + SCFP = (neutral nonsense)
 60: SS   + LCFP + LPFP = ?
 61: SS   + LCFP + SPFP = ?

 62: SS   + SCFP + LPFP = ?
 63: SS   + SCFP + SPFP = ?

 64: SS   + LPFP + SPFP = (neutral nonsense)

 65: LC   + SC   + LP   = (neutral nonsense)
 66: LC   + SC   + SP   = (neutral nonsense)
 67: LC   + SC   + LCFP = (neutral nonsense)
 68: LC   + SC   + SCFP = (neutral nonsense)
 69: LC   + SC   + LPFP = (neutral nonsense)
 70: LC   + SC   + SPFP = (neutral nonsense)

 71: LC   + LP   + SP   = (neutral nonsense)
 72: LC   + LP   + LCFP = ?
 73: LC   + LP   + SCFP = ?
 74: LC   + LP   + LPFP = ?
 75: LC   + LP   + SPFP = ?

 76: LC   + SP   + LCFP = ?
 77: LC   + SP   + SCFP = ?
 78: LC   + SP   + LPFP = ?
 79: LC   + SP   + SPFP = ?

 80: LC   + LCFP + SCFP = (neutral nonsense)
 81: LC   + LCFP + LPFP = ?
 82: LC   + LCFP + SPFP = ?

 83: LC   + SCFP + LPFP = ?
 84: LC   + SCFP + SPFP = ?

 85: LC   + LPFP + SPFP = (neutral nonsense)

 86: SC   + LP   + SP   = (neutral nonsense)
 87: SC   + LP   + LCFP = ?
 88: SC   + LP   + SCFP = ?
 89: SC   + LP   + LPFP = ?
 90: SC   + LP   + SPFP = ?

 91: SC   + SP   + LCFP = ?
 92: SC   + SP   + SCFP = ?
 93: SC   + SP   + LPFP = ?
 94: SC   + SP   + SPFP = ?

 95: SC   + LCFP + SCFP = (neutral nonsense)
 96: SC   + LCFP + LPFP = ?
 97: SC   + LCFP + SPFP = ?

 98: SC   + SCFP + LPFP = ?
 99: SC   + SCFP + SPFP = ?

100: SC   + LPFP + SPFP = (neutral nonsense)

101: LP   + SP   + LCFP = (neutral nonsense)
102: LP   + SP   + SCFP = (neutral nonsense)
103: LP   + SP   + LPFP = (neutral nonsense)
104: LP   + SP   + SPFP = (neutral nonsense)

105: LP   + LCFP + SCFP = (neutral nonsense)
106: LP   + LCFP + LPFP = ?
107: LP   + LCFP + SPFP = ?

108: LP   + SCFP + LPFP = ?
109: LP   + SCFP + SPFP = ?

110: LP   + LPFP + SPFP = (neutral nonsense)

111: SP   + LCFP + SCFP = (neutral nonsense)
112: SP   + LCFP + LPFP = ?
113: SP   + LCFP + SPFP = ?

114: SP   + SCFP + LPFP = ?
115: SP   + SCFP + SPFP = ?

116: SP   + LPFP + SPFP = (neutral nonsense)

117: LCFP + SCFP + LPFP = (neutral nonsense)
118: LCFP + SCFP + SPFP = (neutral nonsense)

119: LCFP + LPFP + SPFP = (neutral nonsense)

120: SCFP + LPFP + SPFP = (neutral nonsense)

cReal = c(120) - cNN(40) = 80
 
Last edited:
Demonstrating FairPut in BSM:

3 sessions:
1) S_s=100 S_e=100
2) S_s=100 S_e=120
3) S_s=100 S_e=83.333333 (the "lognormal inverse" of S_e=120 for the same option params)

_s: starting params, ie. entry
_e: ending params, ie. exit or expiration
CPO: Call Payoff
PPO: Put Payoff
FPCPO: FairPut/C Payoff
FPPPO: FairPut/P Payoff

Some/many of the internal variables are just for testing, ie. not necessarily needed.

Code:
./NewOptions.exe 1 100  100 1 30 0 0  100 0 30 0 0
Args  : ./NewOptions.exe 1 100 100 1 30 0 0 100 0 30 0 0
Params: AnnDays=1 K=100 S_s=100 t_s=1 s_s=30% r_s=0% q_s=0% S_e=100 t_e=0 s_e=30% r_e=0% q_e=0%
f_s(S=100,K=100,t=1,s=30%,r=0%,q=0%)
f_e(S=100,K=100,t=0,s=30%,r=0%,q=0%)

BSM_s:
  S=100.000000 K=100.000000 t=1.000000 s=0.300000 r=0.000000 q=0.000000 --> C=11.923538474048 P=11.923538474048
  st=0.300000 rt=0.000000 qt=0.000000 u=0.000000 ut=0.000000 exp_mqt=1.000000 exp_mrt=1.000000 exp_mut=1.000000
  z2=-0.150000000000 z0=0.000000000000 z1=0.150000000000 p2=0.440382307630 p0=0.500000000000 p1=0.559617692370
  FPC: Cup=11.923538474048 Pup=11.923538474048 (zX=0.000000 xDn=100.000000 xMd=100.000000 xUp=100.000000  DN=100.000000 MD=100.000000 UP=100.000000)
  S2K: z_S2K=0.000000 p_S2K=0.500000 pRest=0.500000
  K2S: z_K2S=0.000000 p_K2S=0.500000 pRest=0.500000
  Sx@: -1SD(p=0.158655)=74.081822 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=134.985881  [based on S]
  Kx@: -1SD(p=0.158655)=74.081822 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=134.985881  [based on K]
BSM_e:
  S=100.000000 K=100.000000 t=0.000000 s=0.300000 r=0.000000 q=0.000000 --> C=0.000000000000 P=0.000000000000
  st=0.000000 rt=0.000000 qt=0.000000 u=0.000000 ut=0.000000 exp_mqt=1.000000 exp_mrt=1.000000 exp_mut=1.000000
  z2=-0.000000002235 z0=0.000000000000 z1=0.000000002235 p2=0.499999999108 p0=0.500000000000 p1=0.500000000892
  FPC: Cup=0.000000000000 Pup=0.000000000000 (zX=0.000000 xDn=100.000000 xMd=100.000000 xUp=100.000000  DN=100.000000 MD=100.000000 UP=100.000000)
  S2K: z_S2K=0.000000 p_S2K=0.500000 pRest=0.500000
  K2S: z_K2S=0.000000 p_K2S=0.500000 pRest=0.500000
  Sx@: -1SD(p=0.158655)=100.000000 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=100.000000  [based on S]
  Kx@: -1SD(p=0.158655)=100.000000 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=100.000000  [based on K]
OSOE:
  S_s to S_e        : z=0.000000 Dn=100.000000 Md=100.000000 Up=100.000000
  S_s to S_e w/o r,q: z=0.000000 Dn=100.000000 Md=100.000000 Up=100.000000

CPO: Call
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)
PPO: Put
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)

FPCPO: FairPut using C premium:
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)
FPPPO: FairPut using P premium:
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)


Code:
./NewOptions.exe 1 100  100 1 30 0 0  120 0 30 0 0
Args  : ./NewOptions.exe 1 100 100 1 30 0 0 120 0 30 0 0
Params: AnnDays=1 K=100 S_s=100 t_s=1 s_s=30% r_s=0% q_s=0% S_e=120 t_e=0 s_e=30% r_e=0% q_e=0%
f_s(S=100,K=100,t=1,s=30%,r=0%,q=0%)
f_e(S=120,K=100,t=0,s=30%,r=0%,q=0%)

BSM_s:
  S=100.000000 K=100.000000 t=1.000000 s=0.300000 r=0.000000 q=0.000000 --> C=11.923538474048 P=11.923538474048
  st=0.300000 rt=0.000000 qt=0.000000 u=0.000000 ut=0.000000 exp_mqt=1.000000 exp_mrt=1.000000 exp_mut=1.000000
  z2=-0.150000000000 z0=0.000000000000 z1=0.150000000000 p2=0.440382307630 p0=0.500000000000 p1=0.559617692370
  FPC: Cup=11.923538474048 Pup=11.923538474048 (zX=0.000000 xDn=100.000000 xMd=100.000000 xUp=100.000000  DN=100.000000 MD=100.000000 UP=100.000000)
  S2K: z_S2K=0.000000 p_S2K=0.500000 pRest=0.500000
  K2S: z_K2S=0.000000 p_K2S=0.500000 pRest=0.500000
  Sx@: -1SD(p=0.158655)=74.081822 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=134.985881  [based on S]
  Kx@: -1SD(p=0.158655)=74.081822 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=134.985881  [based on K]
BSM_e:
  S=120.000000 K=100.000000 t=0.000000 s=0.300000 r=0.000000 q=0.000000 --> C=20.000000000000 P=0.000000000000
  st=0.000000 rt=0.000000 qt=0.000000 u=0.000000 ut=0.000000 exp_mqt=1.000000 exp_mrt=1.000000 exp_mut=1.000000
  z2=40784641.863845914602 z0=40784641.863845914602 z1=40784641.863845914602 p2=1.000000000000 p0=1.000000000000 p1=1.000000000000
  FPC: Cup=20.000000000000 Pup=0.000000000000 (zX=40784641.863846 xDn=83.333333 xMd=100.000000 xUp=120.000000  DN=83.333333 MD=100.000000 UP=120.000000)
  S2K: z_S2K=-40784641.863846 p_S2K=1.000000 pRest=0.000000
  K2S: z_K2S=40784641.863846 p_K2S=0.000000 pRest=1.000000
  Sx@: -1SD(p=0.158655)=119.999999 0SD(p=0.5)=120.000000 +1SD(p=0.158655)=120.000001  [based on S]
  Kx@: -1SD(p=0.158655)=100.000000 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=100.000000  [based on K]
OSOE:
  S_s to S_e        : z=0.607739 Dn=83.333333 Md=100.000000 Up=120.000000
  S_s to S_e w/o r,q: z=0.607739 Dn=83.333333 Md=100.000000 Up=120.000000

CPO: Call
  premium=11.923538  Long: credit=-11.923538 payoff=20.000000 profit=8.076462(67.735442%)  Short: credit=11.923538 payoff=-20.000000 profit=-8.076462(-67.735442%)
PPO: Put
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)

FPCPO: FairPut using C premium:
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)
FPPPO: FairPut using P premium:
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)


Code:
./NewOptions.exe 1 100  100 1 30 0 0  83.333333 0 30 0 0
Args  : ./NewOptions.exe 1 100 100 1 30 0 0 83.333333 0 30 0 0
Params: AnnDays=1 K=100 S_s=100 t_s=1 s_s=30% r_s=0% q_s=0% S_e=83.333333 t_e=0 s_e=30% r_e=0% q_e=0%
f_s(S=100,K=100,t=1,s=30%,r=0%,q=0%)
f_e(S=83.333333,K=100,t=0,s=30%,r=0%,q=0%)

BSM_s:
  S=100.000000 K=100.000000 t=1.000000 s=0.300000 r=0.000000 q=0.000000 --> C=11.923538474048 P=11.923538474048
  st=0.300000 rt=0.000000 qt=0.000000 u=0.000000 ut=0.000000 exp_mqt=1.000000 exp_mrt=1.000000 exp_mut=1.000000
  z2=-0.150000000000 z0=0.000000000000 z1=0.150000000000 p2=0.440382307630 p0=0.500000000000 p1=0.559617692370
  FPC: Cup=11.923538474048 Pup=11.923538474048 (zX=0.000000 xDn=100.000000 xMd=100.000000 xUp=100.000000  DN=100.000000 MD=100.000000 UP=100.000000)
  S2K: z_S2K=0.000000 p_S2K=0.500000 pRest=0.500000
  K2S: z_K2S=0.000000 p_K2S=0.500000 pRest=0.500000
  Sx@: -1SD(p=0.158655)=74.081822 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=134.985881  [based on S]
  Kx@: -1SD(p=0.158655)=74.081822 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=134.985881  [based on K]
BSM_e:
  S=83.333333 K=100.000000 t=0.000000 s=0.300000 r=0.000000 q=0.000000 --> C=0.000000000000 P=16.666667000000
  st=0.000000 rt=0.000000 qt=0.000000 u=0.000000 ut=0.000000 exp_mqt=1.000000 exp_mrt=1.000000 exp_mut=1.000000
  z2=-40784642.758630782366 z0=-40784642.758630782366 z1=-40784642.758630782366 p2=0.000000000000 p0=0.000000000000 p1=0.000000000000
  FPC: Cup=20.000000480000 Pup=0.000000000000 (zX=-40784642.758631 xDn=120.000000 xMd=100.000000 xUp=83.333333  DN=83.333333 MD=100.000000 UP=120.000000)
  S2K: z_S2K=40784642.758631 p_S2K=0.000000 pRest=1.000000
  K2S: z_K2S=-40784642.758631 p_K2S=1.000000 pRest=0.000000
  Sx@: -1SD(p=0.158655)=83.333333 0SD(p=0.5)=83.333333 +1SD(p=0.158655)=83.333333  [based on S]
  Kx@: -1SD(p=0.158655)=100.000000 0SD(p=0.5)=100.000000 +1SD(p=0.158655)=100.000000  [based on K]
OSOE:
  S_s to S_e        : z=-0.607739 Dn=120.000000 Md=100.000000 Up=83.333333
  S_s to S_e w/o r,q: z=-0.607739 Dn=120.000000 Md=100.000000 Up=83.333333

CPO: Call
  premium=11.923538  Long: credit=-11.923538 payoff=0.000000 profit=-11.923538(-100.000000%)  Short: credit=11.923538 payoff=-0.000000 profit=11.923538(100.000000%)
PPO: Put
  premium=11.923538  Long: credit=-11.923538 payoff=16.666667 profit=4.743129(39.779538%)  Short: credit=11.923538 payoff=-16.666667 profit=-4.743129(-39.779538%)

FPCPO: FairPut using C premium:
  premium=11.923538  Long: credit=-11.923538 payoff=20.000000 profit=8.076462(67.735446%)  Short: credit=11.923538 payoff=-20.000000 profit=-8.076462(-67.735446%)
FPPPO: FairPut using P premium:
  premium=11.923538  Long: credit=-11.923538 payoff=20.000000 profit=8.076462(67.735446%)  Short: credit=11.923538 payoff=-20.000000 profit=-8.076462(-67.735446%)
 
Last edited:
Back
Top