Your tool is wrong. Look at the 12 & 20 calls. Does that make sense? As I said previously, BE does not change based upon DTE, IV, etc... ***My final comment on this topic.
Here's first the formula for a single CoveredCall. The formula for multiple CoveredCalls is much more code and not finished yet. The code below is an extraction from my library code, ie. part of a C++ class; can easily be used also in other languages as it's self-declarative and well commented. Code: /* Calculating basic properties of a single CoveredCall Author & (c): Quanto @ ET, 2024-01-15-Mo S : Current stock price S0 : Paid stock price (can be much different from S, ie. when was bought much earlier) K : Strike of the ShortCall Pr : Call premium used in ShortCall trade (as part of the CoveredCall); normally uses S as the basis. CB : CostBasis : < 0 means NetDebit, else NetCredit (NetCredit happens when S is much higher than S0) MinPL: PL@(Sx=0) MaxPL: PL@(Sx>=K) BEP : Break/Even Point (ie. the Sx where PnL=0) for the CoveredCall; < 0 means that PL@(Sx=0) is > 0, ie. can happen only with NetCredit MISC : - using MinPL, MaxPL, and CB one can of course calc also the possible MinPL% and MaxPL% (left as an exercise) - using S, CB, and current Premium one can of course calc also the current PnL and PnL% (left as an exercise) - using BEP and S one can calc the distance from S to BEP, also the percentual distance (left as an exercise) */ //... void calc_CoveredCall() { CB = -S0 + Pr; MinPL = CB; MaxPL = K + CB; BEP = -CB; //... }
Here finally is the solution to the problem of finding the CombinedBEP for the said 3 CoveredCalls in the OP: CombinedBEP=6.721346 Code: PgmArgs(5): ./yfapi.exe calc_CC_BEP S0=15,S=16,DTE=90,K=12,IV=300,Q=1 S0=16,S=16,DTE=90,K=4,IV=300,Q=1 S0=17,S=16,DTE=90,K=20,IV=300,Q=1 InOrigOrder: 0 : S0=15.0000 S=16.0000 DTE=90.00 K=12.00 Pr=9.7271 (IV=300.00 ) Q=1 : CB=-5.272917 MinPL=-5.272917 MaxPL=6.727083 BEP=5.272917 1 : S0=16.0000 S=16.0000 DTE=90.00 K=4.00 Pr=12.9545 (IV=300.00 ) Q=1 : CB=-3.045501 MinPL=-3.045501 MaxPL=0.954499 BEP=3.045501 2 : S0=17.0000 S=16.0000 DTE=90.00 K=20.00 Pr=7.8757 (IV=300.00 ) Q=1 : CB=-9.124273 MinPL=-9.124273 MaxPL=10.875727 BEP=9.124273 CombinedCB=-17.4427 InSortedOrder: 0 : S0=16.0000 S=16.0000 DTE=90.00 K=4.00 Pr=12.9545 (IV=300.00 ) Q=1 : CB=-3.045501 MinPL=-3.045501 MaxPL=0.954499 BEP=3.045501 1 : S0=15.0000 S=16.0000 DTE=90.00 K=12.00 Pr=9.7271 (IV=300.00 ) Q=1 : CB=-5.272917 MinPL=-5.272917 MaxPL=6.727083 BEP=5.272917 2 : S0=17.0000 S=16.0000 DTE=90.00 K=20.00 Pr=7.8757 (IV=300.00 ) Q=1 : CB=-9.124273 MinPL=-9.124273 MaxPL=10.875727 BEP=9.124273 Prepare: 0 : K=4.00 : B.MinPL=-17.442691 B.MaxPL=-5.442691 1 : K=12.00 : B.MinPL=-5.442691 B.MaxPL=10.557309 2 : K=20.00 : B.MinPL=10.557309 B.MaxPL=18.557309 CombinedBEP=6.721346