Formula for calculating BreakEvenPoint of 2+ CoveredCalls

Discussion in 'Options' started by Quanto, Jan 14, 2024.

  1. BKR88

    BKR88

    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.
     
    #11     Jan 14, 2024
  2. Quanto

    Quanto

    IMO, my tool works fine.
    Anyway, thanks for your effort. You just tried. Bye! :)
     
    #12     Jan 14, 2024
  3. Quanto

    Quanto

    Still trying to find the correct formula... Almost found... A really complicated beast!
     
    Last edited: Jan 14, 2024
    #13     Jan 14, 2024
  4. Quanto

    Quanto

    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;
        //...
      }
    
    
     
    Last edited: Jan 15, 2024
    #14     Jan 15, 2024
  5. Quanto

    Quanto

    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
    
    
     
    Last edited: Jan 15, 2024
    #15     Jan 15, 2024