Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }