Beispiel #1
0
 /// <summary>
 /// Gets the orc vol.
 /// </summary>
 /// <param name="k">The k.</param>
 /// <param name="timeToMaturity">The time to maturity.</param>
 /// <param name="atm">The atm.</param>
 /// <param name="currentVol">The current vol.</param>
 /// <param name="slopeRef">The slope ref.</param>
 /// <param name="putCurve">The put curve.</param>
 /// <param name="callCurve">The call curve.</param>
 /// <param name="dnCutOff">The dn cut off.</param>
 /// <param name="upCutOff">Up cut off.</param>
 /// <param name="vcr">The VCR.</param>
 /// <param name="scr">The SCR.</param>
 /// <param name="ssr">The SSR.</param>
 /// <param name="dsr">The DSR.</param>
 /// <param name="usr">The usr.</param>
 /// <param name="refFwd">The ref FWD.</param>
 /// <returns></returns>
 public double GetWingVol(double k, double timeToMaturity, double atm, double currentVol, double slopeRef, double putCurve, double callCurve,
                          double dnCutOff, double upCutOff, double vcr, double scr, double ssr, double dsr, double usr,
                          double refFwd)
 {
     return(EquitiesLibrary.GetWingVol(k, timeToMaturity, atm, currentVol, slopeRef, putCurve, callCurve,
                                       dnCutOff, upCutOff, vcr, scr, ssr, dsr, usr, refFwd));
 }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rateAsArray"></param>
        /// <param name="compoundingFrequency"></param>
        /// <returns></returns>
        public object[,] ConvToContinuousRate(Excel.Range rateAsArray, string compoundingFrequency)
        {
            var rate     = DataRangeHelper.StripDoubleRange(rateAsArray);
            var retArray = EquitiesLibrary.ConvToContinuousRate(rate.ToArray(), compoundingFrequency);
            var result   = RangeHelper.ConvertArrayToRange(retArray);

            return(result);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="xvalue"></param>
        /// <param name="xAsArray"></param>
        /// <param name="yAsArray"></param>
        /// <param name="interpType"></param>
        /// <returns></returns>
        public double InterpolateOnValues(double xvalue, Excel.Range xAsArray, Excel.Range yAsArray, string interpType)
        {
            //At this stage only linear interpolation is supported
            var x = DataRangeHelper.StripDoubleRange(xAsArray);
            var y = DataRangeHelper.StripDoubleRange(yAsArray);

            return(EquitiesLibrary.InterpolateOnValues(xvalue, x.ToArray(), y.ToArray(), interpType));
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="valueDate"></param>
        /// <param name="datesAsArray"></param>
        /// <param name="amountsAsArray"></param>
        /// <param name="interpType"></param>
        /// <returns></returns>
        public double InterpolateOnDates(DateTime valueDate, Excel.Range datesAsArray, Excel.Range amountsAsArray, string interpType)
        {
            //At this stage only linear interpolation is supported
            var dates   = DataRangeHelper.StripDateTimeRange(datesAsArray);
            var amounts = DataRangeHelper.StripDoubleRange(amountsAsArray);

            return(EquitiesLibrary.InterpolateOnDates(valueDate, dates.ToArray(), amounts.ToArray(), interpType));
        }
Beispiel #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="spot"></param>
        /// <param name="strike"></param>
        /// <param name="vol"></param>
        /// <param name="paystyle"></param>
        /// <param name="today"></param>
        /// <param name="expiry"></param>
        /// <param name="zeroDatesAsArray"></param>
        /// <param name="zeroRatesAsArray"></param>
        /// <param name="q"></param>
        /// <returns></returns>
        public double BlackScholesPricerContDiv(double spot, double strike, double vol, string paystyle, DateTime today,
                                                DateTime expiry, Excel.Range zeroDatesAsArray, Excel.Range zeroRatesAsArray, double q)
        {
            var    zeroDates = DataRangeHelper.StripDateTimeRange(zeroDatesAsArray);
            var    zeroRates = DataRangeHelper.StripDoubleRange(zeroRatesAsArray);
            double pr        = EquitiesLibrary.BlackScholesPricerContDiv(spot, strike, vol, paystyle, today, expiry, zeroDates.ToArray(), zeroRates.ToArray(), q);

            return(pr);
        }
Beispiel #6
0
        /// <summary>
        /// Returns the PV (as at the valueDate) of the payment stream.
        /// Only payments occuring on or between valueDate and finalDate are included in the sum.
        /// All other payments are ignored.
        /// </summary>
        /// <param name="valueDate">The date at which the PV is taken.</param>
        /// <param name="paymentDatesAsArray">The dates on which payments are made, in ascending order.</param>
        /// <param name="paymentAmountsAsArray">The amounds of payments.</param>
        /// <param name="zeroDatesAsArray">The dates corresponding to the ZCB discount curve, in ascending order.</param>
        /// <param name="zeroRatesAsArray">The rates corresponding to the ZCB discount curve.</param>
        /// <param name="finalDate">The final date on which payments are to be included.</param>
        /// <returns>A double representing the PV.</returns>
        public double PVofPaymentStream(DateTime valueDate, DateTime finalDate, Excel.Range paymentDatesAsArray, Excel.Range paymentAmountsAsArray,
                                        Excel.Range zeroDatesAsArray, Excel.Range zeroRatesAsArray)
        {
            var paymentDates   = DataRangeHelper.StripDateTimeRange(paymentDatesAsArray);
            var paymentAmounts = DataRangeHelper.StripDoubleRange(paymentAmountsAsArray);
            var zeroDates      = DataRangeHelper.StripDateTimeRange(zeroDatesAsArray);
            var zeroRates      = DataRangeHelper.StripDoubleRange(zeroRatesAsArray);

            return(EquitiesLibrary.PVofPaymentStream(valueDate, finalDate, paymentDates.ToArray(), paymentAmounts.ToArray(), zeroDates.ToArray(), zeroRates.ToArray()));
        }
Beispiel #7
0
        /// <summary>
        /// Gets the ATM forward.
        /// </summary>
        /// <param name="spot"></param>
        /// <param name="zeroDatesAsArray"></param>
        /// <param name="zeroRatesAsArray">The zero curve.</param>
        /// <param name="divDatesAsArray"></param>
        /// <param name="divAmsAsArray">The div curve.</param>
        /// <param name="today"></param>
        /// <param name="expiry"></param>
        /// <returns></returns>
        public double GetForward(DateTime today, DateTime expiry, double spot, Excel.Range zeroDatesAsArray, Excel.Range zeroRatesAsArray,
                                 Excel.Range divDatesAsArray, Excel.Range divAmsAsArray)
        {
            var zeroDates = DataRangeHelper.StripDateTimeRange(zeroDatesAsArray);
            var zeroRates = DataRangeHelper.StripDoubleRange(zeroRatesAsArray);
            var divDates  = DataRangeHelper.StripDateTimeRange(divDatesAsArray);
            var divAms    = DataRangeHelper.StripDoubleRange(divAmsAsArray);

            return(EquitiesLibrary.GetForward(today, expiry, spot, zeroDates.ToArray(), zeroRates.ToArray(), divDates.ToArray(), divAms.ToArray()));
        }
Beispiel #8
0
        /// <summary>
        /// Pricers the specified style.
        /// </summary>
        /// <param name="style">The style.</param>
        /// <param name="spot">The spot.</param>
        /// <param name="strike">The strike.</param>
        /// <param name="vol">The vol.</param>
        /// <param name="today"></param>
        /// <param name="expiry"></param>
        /// <param name="paystyle">The paystyle.</param>
        /// <param name="zeroDatesAsArray"></param>
        /// <param name="zeroRatesAsArray">The zero curve.</param>
        /// <param name="divDatesAsArray"></param>
        /// <param name="divAmsAsArray">The div curve.</param>
        /// <param name="gridsteps">The gridsteps.</param>
        /// <param name="smoo">The smoo.</param>
        /// <param name="flatFlag">if set to <c>true</c> [flat flag].</param>
        /// <returns></returns>
        public double BinomialRelativePricer(string style, double spot, double strike, double vol, DateTime today, DateTime expiry,
                                             string paystyle, Excel.Range zeroDatesAsArray, Excel.Range zeroRatesAsArray, Excel.Range divDatesAsArray, Excel.Range divAmsAsArray, double gridsteps, string smoo, bool flatFlag)
        {
            var    divDates  = DataRangeHelper.StripDateTimeRange(divDatesAsArray);
            var    divAms    = DataRangeHelper.StripDoubleRange(divAmsAsArray);
            var    zeroDates = DataRangeHelper.StripDateTimeRange(zeroDatesAsArray);
            var    zeroRates = DataRangeHelper.StripDoubleRange(zeroRatesAsArray);
            double pr        = EquitiesLibrary.BinomialRelativePricer(style, spot, strike, vol, today, expiry, paystyle, zeroDates.ToArray(), zeroRates.ToArray(), divDates.ToArray(), divAms.ToArray(), gridsteps, smoo, flatFlag);

            return(pr);
        }
Beispiel #9
0
        /// <summary>
        /// Gets the greeks.
        /// </summary>
        /// <param name="style">The style.</param>
        /// <param name="spot">The spot.</param>
        /// <param name="strike">The strike.</param>
        /// <param name="vol">The vol.</param>
        /// <param name="expiry"></param>
        /// <param name="paystyle">The paystyle.</param>
        /// <param name="zeroDatesAsArray"></param>
        /// <param name="zeroRatesAsArray">The zero curve.</param>
        /// <param name="divDatesAsArray"></param>
        /// <param name="divAmsAsArray">The div curve.</param>
        /// <param name="gridsteps">The gridsteps.</param>
        /// <param name="smoo">The smoo.</param>
        /// <param name="flatFlag">if set to <c>true</c> [flat flag].</param>
        /// <param name="today"></param>
        /// <returns></returns>
        public object[,] BinomialRelativeGetGreeks(string style, double spot, double strike, double vol, DateTime today, DateTime expiry,
                                                   string paystyle, Excel.Range zeroDatesAsArray, Excel.Range zeroRatesAsArray, Excel.Range divDatesAsArray, Excel.Range divAmsAsArray, double gridsteps, string smoo, bool flatFlag)
        {
            var zeroDates = DataRangeHelper.StripDateTimeRange(zeroDatesAsArray);
            var zeroRates = DataRangeHelper.StripDoubleRange(zeroRatesAsArray);
            var divDates  = DataRangeHelper.StripDateTimeRange(divDatesAsArray);
            var divAms    = DataRangeHelper.StripDoubleRange(divAmsAsArray);
            var retArray  = EquitiesLibrary.BinomialRelativeGetGreeks(style, spot, strike, vol, today, expiry, paystyle, zeroDates.ToArray(), zeroRates.ToArray(), divDates.ToArray(), divAms.ToArray(), gridsteps, smoo, flatFlag);
            var result    = RangeHelper.ConvertArrayToRange(retArray);

            return(result);
        }
Beispiel #10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="baseAmount"></param>
        /// <param name="valueDate"></param>
        /// <param name="finalDatesAsArray"></param>
        /// <param name="paymentDatesAsArray"></param>
        /// <param name="paymentAmountsAsArray"></param>
        /// <param name="zeroDatesAsArray"></param>
        /// <param name="zeroRatesAsArray"></param>
        /// <returns></returns>
        public object[,] DivYield(double baseAmount, DateTime valueDate, Excel.Range finalDatesAsArray, Excel.Range paymentDatesAsArray,
                                  Excel.Range paymentAmountsAsArray, Excel.Range zeroDatesAsArray,
                                  Excel.Range zeroRatesAsArray)
        {
            var finalDates     = DataRangeHelper.StripDateTimeRange(finalDatesAsArray);
            var paymentDates   = DataRangeHelper.StripDateTimeRange(paymentDatesAsArray);
            var paymentAmounts = DataRangeHelper.StripDoubleRange(paymentAmountsAsArray);
            var zeroDates      = DataRangeHelper.StripDateTimeRange(zeroDatesAsArray);
            var zeroRates      = DataRangeHelper.StripDoubleRange(zeroRatesAsArray);
            var retArray       = EquitiesLibrary.DivYield(baseAmount, valueDate, finalDates.ToArray(), paymentDates.ToArray(), paymentAmounts.ToArray(), zeroDates.ToArray(), zeroRates.ToArray());
            var result         = RangeHelper.ConvertArrayToRange(retArray);

            return(result);
        }