/// <summary> /// Finds the zero cost put strike. /// </summary> /// <param name="stock">The stock.</param> /// <param name="zeroRateCurve">The zero rate curve.</param> /// <returns></returns> public Double FindZeroCostPutStrike(Stock stock, ZeroAUDCurve zeroRateCurve) { // Unpack objects ZeroCurve myZero = Wrapper.UnpackZeroRateCurve(zeroRateCurve); DivList myDiv = Wrapper.UnpackDividends(stock, zeroRateCurve); var myORC = Wrapper.UnpackOrcWingParameters(stock); // TimeSpan ts = stock.Transaction.ExpiryDate - stock.Transaction.TradeDate; double t = ts.Days / 365.0; string payFlag = stock.Transaction.PayStyle.ToString().Substring(0, 1).ToUpper(); string style = stock.Transaction.Strike.Style.ToString().Substring(0, 1).ToUpper(); double price = Analytics.Equities.Collar.FindZeroCostPut(myZero, myDiv, myORC, t, stock.Transaction.Strike.StrikePrice, stock.Transaction.CurrentSpot, payFlag, style, 100.0); return(price); }
/// <summary> /// Unpacks the dividends. /// </summary> /// <param name="inStock">The in stock.</param> /// <param name="inZero">The in zero.</param> /// <returns></returns> public static DivList UnpackDividends(Stock inStock, ZeroAUDCurve inZero) { var myDiv = new DivList { Divpoints = inStock.Dividends.Count }; myDiv.MakeArrays(); int idx = 0; foreach (Dividend dt in inStock.Dividends) { TimeSpan ts = dt.ExDivDate - inZero.CurveDate; myDiv.SetD(idx, dt.PaymentAmountInCents, (ts.Days / 365.0)); idx++; } return(myDiv); }