Exemple #1
0
        /// <summary>
        /// Calculate forward price, discount factor and volatility.
        /// </summary>
        protected override void PriceAndVolatility(double baseDate, double valueDate, Vector forwardPrice, Vector discountFactor, Vector volatility)
        {
            CommodityFutureOption deal = (CommodityFutureOption)Deal;

            double t       = CalcUtils.DaysToYears(valueDate - baseDate);
            double tSettle = CalcUtils.DaysToYears(deal.Settlement_Date - baseDate);

            // Get spot price in contract currency
            forwardPrice.Assign(fCommodityPrice.Get(t) / fFxRate.Get(t));

            if (volatility != null)
            {
                double tExpiry = CalcUtils.DaysToYears(deal.Expiry_Date - baseDate);
                if (tExpiry > t)
                {
                    // temporary use of discountFactor vector to store strike
                    discountFactor.Assign(deal.Strike);
                    // Get volatility using spot price and strike
                    volatility.Assign(fCommodityPriceVol.Get(t, forwardPrice, discountFactor, tExpiry));
                }
                else
                {
                    volatility.Clear();
                }
            }

            fDiscountRate.GetValue(discountFactor, t, tSettle);

            // Get forward factor and complete calculation of forward price
            forwardPrice.MultiplyBy(fCommodityPrice.ForwardFactor(t, tSettle, fFxRate));
        }
Exemple #2
0
        /// <summary>
        /// Prepare for valuation anything that is dependent upon the scenario.
        /// </summary>
        public override void PreValue(PriceFactorList factors)
        {
            base.PreValue(factors);

            CommodityFutureOption deal = (CommodityFutureOption)Deal;

            deal.GetCommodityDealHelper().PreValueAsset(out fCommodityPrice, out fCommodityPriceVol, factors);
        }
Exemple #3
0
        /// <summary>
        /// Register price factors.
        /// </summary>
        public override void RegisterFactors(PriceFactorList factors, ErrorList errors)
        {
            base.RegisterFactors(factors, errors);

            CommodityFutureOption deal = (CommodityFutureOption)Deal;

            deal.GetCommodityDealHelper().RegisterFactors(factors, errors);
        }