Exemplo n.º 1
0
 private void SetProperties(PricingStructureTypeEnum pricingStructureType)
 {
     if (pricingStructureType == PricingStructureTypeEnum.BondDiscountCurve)
     {
         var rateCurveId   = CurveName.Split('-');
         var subordination = rateCurveId[rateCurveId.Length - 1];
         var indexName     = rateCurveId[0];
         for (var i = 1; i < rateCurveId.Length - 1; i++)
         {
             indexName = indexName + '-' + rateCurveId[i];
         }
         CreditInstrumentId = ProductTypeHelper.InstrumentIdHelper.Parse(indexName);
         CreditSeniority    = ProductTypeHelper.CreditSeniorityHelper.Parse(subordination);
     }
     if (pricingStructureType == PricingStructureTypeEnum.BondCurve)
     {
         var rateCurveId   = CurveName.Split('-');
         var subordination = rateCurveId[rateCurveId.Length - 1];
         var indexName     = rateCurveId[0];
         for (var i = 1; i < rateCurveId.Length - 1; i++)
         {
             indexName = indexName + '-' + rateCurveId[i];
         }
         CreditInstrumentId = ProductTypeHelper.InstrumentIdHelper.Parse(indexName);
         CreditSeniority    = ProductTypeHelper.CreditSeniorityHelper.Parse(subordination);
     }
 }
        /// <summary>
        /// The CommodityCurveIdentifier.
        /// </summary>
        /// <param name="pricingStructureType"></param>
        /// <param name="curveName"></param>
        /// <param name="buildDateTime"></param>
        public EquityCurveIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime buildDateTime)
            : base(pricingStructureType, curveName, buildDateTime)
        {
            var components = CurveName.Split('-');

            EquityAsset = components[1];
            Currency    = CurrencyHelper.Parse(components[0]);
        }
Exemplo n.º 3
0
        public void ExtractPricingStructureTypeTest()
        {
            NamedValueSet namedValueSet = new NamedValueSet();

            namedValueSet.Set("PricingStructureType", "XccySpreadCurve");

            PricingStructureTypeEnum id = PropertyHelper.ExtractPricingStructureType(namedValueSet);

            Assert.AreEqual(PricingStructureTypeEnum.XccySpreadCurve, id);
        }
Exemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="baseCurve"></param>
        /// <param name="psType"></param>
        internal void SetInterpolator(IRateCurve baseCurve, PricingStructureTypeEnum psType)
        {
            var interpDayCounter = Actual365.Instance;

            // The underlying curve and associated compounding frequency (compounding frequency required when underlying curve is a ZeroCurve)
            CompoundingFrequency = EnumHelper.Parse <CompoundingFrequencyEnum>(Holder.GetValue("CompoundingFrequency"));
            // interpolate the DiscountFactor curve based on the respective curve interpolation
            var discountFactorCurve = GetYieldCurveValuation().discountFactorCurve;

            Interpolator = new RateSpreadInterpolator(baseCurve, discountFactorCurve, GetBaseDate(), interpDayCounter);
        }
 private void SetProperties(PricingStructureTypeEnum pricingStructureType, string curveName)
 {
     if (pricingStructureType == PricingStructureTypeEnum.ExchangeTradedCurve)
     {
         var curveId = curveName.Split('-');
         if (curveId.Length > 2)
         {
             Currency = CurrencyHelper.Parse(curveId[0]);
             Exchange = curveId[1];
             Code     = curveId[2];
         }
     }
 }
Exemplo n.º 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="VolatilitySurfaceIdentifier"/> class.
        /// </summary>
        /// <param name="pricingStructureType"></param>
        /// <param name="curveName"></param>
        /// <param name="baseDate"></param>
        /// <param name="algorithm"></param>
        public VolatilitySurfaceIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime baseDate, string algorithm)
            : base(pricingStructureType, curveName, baseDate, algorithm)
        {
            var volCurveId = CurveName.Split('-');

            Currency   = CurrencyHelper.Parse(volCurveId[0]);
            Instrument = volCurveId[volCurveId.Length - 2];
            UnderlyingAssetReference = new AssetReference {
                href = Instrument
            };
            StrikeQuoteUnits = new PriceQuoteUnits {
                Value = PriceQuoteProp.Absolute
            };                                                                         //DecimalRate
        }
Exemplo n.º 7
0
 private void SetProperties(PricingStructureTypeEnum pricingStructureType, string curveName)
 {
     if (pricingStructureType == PricingStructureTypeEnum.RateCurve ||
         pricingStructureType == PricingStructureTypeEnum.RateBasisCurve ||
         pricingStructureType == PricingStructureTypeEnum.ClearedRateCurve ||
         pricingStructureType == PricingStructureTypeEnum.RateSpreadCurve)
     {
         var rateCurveId = curveName.Split('-');
         var indexTenor  = rateCurveId[rateCurveId.Length - 1];
         var indexName   = rateCurveId[0];
         for (var i = 1; i < rateCurveId.Length - 1; i++)
         {
             indexName = indexName + '-' + rateCurveId[i];
         }
         ForecastRateIndex = ForecastRateIndexHelper.Parse(indexName, indexTenor);
     }
     if (pricingStructureType == PricingStructureTypeEnum.DiscountCurve ||
         pricingStructureType == PricingStructureTypeEnum.RateXccyCurve)
     {
         var rateCurveId   = CurveName.Split('-');
         var subordination = rateCurveId[rateCurveId.Length - 1];
         var indexName     = rateCurveId[0];
         for (var i = 1; i < rateCurveId.Length - 1; i++)
         {
             indexName = indexName + '-' + rateCurveId[i];
         }
         CreditInstrumentId = InstrumentIdHelper.Parse(indexName);
         CreditSeniority    = CreditSeniorityHelper.Parse(subordination);
     }
     if (pricingStructureType == PricingStructureTypeEnum.InflationCurve)
     {
         var rateCurveId = CurveName.Split('-');
         var indexTenor  = rateCurveId[rateCurveId.Length - 1];
         var indexName   = rateCurveId[0];
         for (var i = 1; i < rateCurveId.Length - 1; i++)
         {
             indexName = indexName + '-' + rateCurveId[i];
         }
         ForecastRateIndex = ForecastRateIndexHelper.Parse(indexName, indexTenor);
     }
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PricingStructureIdentifier"/> class.
 /// </summary>
 /// <param name="pricingStructureType">Type of the curve.</param>
 /// <param name="curveName">Name of the index.</param>
 /// <param name="buildDateTime">The build date time.</param>
 /// <param name="algorithm">The algorithm.</param>
 public PricingStructureIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName,
                                   DateTime buildDateTime, String algorithm)
 {
     DataType             = "Market";
     SourceSystem         = "Orion";
     Domain               = SourceSystem + '.' + DataType;
     PricingStructureType = pricingStructureType;
     CurveName            = curveName;
     BuildDateTime        = buildDateTime;
     BaseDate             = buildDateTime.Date;
     Algorithm            = algorithm;
     Properties           = new NamedValueSet();
     Properties.Set("DataType", "Market");
     Properties.Set(CurveProp.SourceSystem, "Orion");
     Properties.Set(CurveProp.PricingStructureType, PricingStructureType.ToString());
     Properties.Set(CurveProp.BuildDateTime, BuildDateTime);
     Properties.Set(CurveProp.BaseDate, BaseDate);
     Properties.Set(CurveProp.Algorithm, Algorithm);
     Properties.Set(CurveProp.CurveName, CurveName);
     SetProperties();
     UpdateProperties();
 }
Exemplo n.º 9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PricingStructureIdentifier"/> class.
 /// </summary>
 /// <param name="pricingStructureType">Type of the curve.</param>
 /// <param name="curveName">Name of the index.</param>
 /// <param name="buildDateTime">The build date time.</param>
 public PricingStructureIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime buildDateTime)
     : this(pricingStructureType, curveName, buildDateTime, AlgorithmsProp.Default)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PricingStructureIdentifier"/> class.
 /// </summary>
 /// <param name="pricingStructureType">Type of the curve.</param>
 /// <param name="curveName">Name of the index.</param>
 /// <param name="buildDateTime">The build date time.</param>
 public PricingStructureIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime buildDateTime)
     : this(pricingStructureType, curveName, buildDateTime, "Default")
 {
 }
Exemplo n.º 11
0
 ///<summary>
 /// An id for a rate curve.
 ///</summary>
 ///<param name="pricingStructureType">The pricing strucutre type.</param>
 ///<param name="curveName">The curve name.</param>
 ///<param name="buildDateTime">The build date time.</param>
 ///<param name="algorithm">The algorithm.</param>
 public BondCurveIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime buildDateTime, string algorithm)
     : base(pricingStructureType, curveName, buildDateTime, algorithm)
 {
     SetProperties(PricingStructureType);
 }
Exemplo n.º 12
0
 ///<summary>
 /// Gets all the Forecast curve name.
 ///</summary>
 ///<returns></returns>
 private static string GetForecastCurveName(PricingStructureTypeEnum curveType, FloatingRateIndex floatingRateIndex)
 {
     return(curveType + "." + floatingRateIndex.Value);
 }
Exemplo n.º 13
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="cache"></param>
 /// <param name="nameSpace"></param>
 /// <param name="pricingStructureType"></param>
 /// <param name="algorithmName"></param>
 public PricingStructureAlgorithmsHolder(ILogger logger, ICoreCache cache, string nameSpace, PricingStructureTypeEnum pricingStructureType, string algorithmName)
 {
     if (cache != null)
     {
         _pricingStructureAlgorithm = GetAlgorithm(logger, cache, nameSpace, pricingStructureType, algorithmName);
     }
 }
Exemplo n.º 14
0
 ///<summary>
 /// Gets all the Forecast curve name.
 ///</summary>
 ///<returns></returns>
 private static string GetForecastCurveName(PricingStructureTypeEnum curveType, ForecastRateIndex floatingRateIndex)
 {
     return(curveType + "." + floatingRateIndex.floatingRateIndex.Value + "-" + floatingRateIndex.indexTenor.ToString());
 }
Exemplo n.º 15
0
 ///<summary>
 /// Gets all the Forecast curve name.
 ///</summary>
 ///<returns></returns>
 private static string GetForecastCurveName(PricingStructureTypeEnum curveType, FloatingRateIndex floatingRateIndex, Period[] periods)
 {
     return(curveType + "." + floatingRateIndex.Value + "-" + periods[0].ToString());
 }
Exemplo n.º 16
0
        /// <summary>
        /// Tries to get the algorithm.
        /// </summary>
        /// <param name="nameSpace"></param>
        /// <param name="pricingStructureType"></param>
        /// <param name="algorithmName"></param>
        /// <param name="logger"></param>
        /// <param name="cache">The value</param>
        /// <returns>Whether the property existed or not</returns>
        public Algorithm GetAlgorithm(ILogger logger, ICoreCache cache, string nameSpace, PricingStructureTypeEnum pricingStructureType, string algorithmName)
        {
            Algorithm algorithm = null;

            if (cache != null)
            {
                try
                {
                    var uniqueName = nameSpace + "." + AlgorithmsProp.GenericName + "." + pricingStructureType + "." +
                                     algorithmName;
                    var item = cache.LoadItem <Algorithm>(uniqueName);
                    algorithm = (Algorithm)item?.Data;
                }
                catch (Exception ex)
                {
                    logger.Log(ex);
                }
            }
            return(algorithm);
        }
Exemplo n.º 17
0
        //TODO this is not yet implemented. FIX IT!
        internal void SetSpreadInterpolator(TermCurve discountFactorCurve, string algorithm, PricingStructureTypeEnum psType)
        {
            var curveId = (RateCurveIdentifier)PricingStructureIdentifier;

            // The underlying curve and associated compounding frequency (compounding frequency required when underlying curve is a ZeroCurve)
            CompoundingFrequency        = EnumHelper.Parse <CompoundingFrequencyEnum>(Holder.GetValue("CompoundingFrequency"));
            UnderlyingInterpolatedCurve = Holder.GetValue("UnderlyingCurve"); //TODO this redundant.
            var interpDayCounter = Actual365.Instance;
            var underlyingCurve  = ParseUnderlyingCurve(UnderlyingInterpolatedCurve);

            // interpolate the DiscountFactor curve based on the respective curve interpolation
            if (underlyingCurve != UnderlyingCurveTypes.ZeroCurve)
            {
                Interpolator = new TermCurveInterpolator(discountFactorCurve, GetBaseDate(), interpDayCounter);
            }
            // otherwise interpolate our underlying curve will be a zero curve
            else
            {
                var zeroCurve = new ZeroRateCurve
                {
                    rateCurve = YieldCurveAnalytics.ToZeroCurve(discountFactorCurve,
                                                                GetBaseDate(),
                                                                CompoundingFrequency, DayCounter)
                };
                zeroCurve.rateCurve.interpolationMethod = InterpolationMethodHelper.Parse(Holder.GetValue("CurveInterpolation"));
                zeroCurve.compoundingFrequency          = FpML.V5r3.Reporting.CompoundingFrequency.Create(CompoundingFrequency);
                GetYieldCurveValuation().zeroCurve      = zeroCurve;
                if (curveId.Algorithm == "SpreadInterpolation")
                {
                }
                else
                {
                    Interpolator =
                        new TermCurveInterpolator(GetYieldCurveValuation().zeroCurve.rateCurve, GetBaseDate(), interpDayCounter);
                }//TODO this is where to add the spread stuff.
            }
        }
 /// <summary>
 /// The CommodityCurveIdentifier.
 /// </summary>
 /// <param name="pricingStructureType"></param>
 /// <param name="curveName"></param>
 /// <param name="buildDateTime"></param>
 public CommodityCurveIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime buildDateTime)
     : base(pricingStructureType, curveName, buildDateTime)
 {
     CommodityAsset = CurveName.Split('-')[1];
 }
Exemplo n.º 19
0
        /// <summary>
        /// Returns properties from the pricing structure. <see cref="NamedValueSet"/> class.
        /// </summary>
        /// <param name="fpmlData">The FPML data.</param>
        /// <param name="pricingStructureType"></param>
        public static NamedValueSet GeneralCurve(Pair <PricingStructure, PricingStructureValuation> fpmlData, PricingStructureTypeEnum pricingStructureType)
        {
            switch (pricingStructureType)
            {
            case PricingStructureTypeEnum.RateCurve:
                return(RateCurve(fpmlData));

            //case PricingStructureTypeEnum.RateSpreadCurve:
            //    break;
            //case PricingStructureTypeEnum.RateBasisCurve:
            //    break;
            case PricingStructureTypeEnum.DiscountCurve:
                return(DiscountCurve(fpmlData));

            case PricingStructureTypeEnum.InflationCurve:
                return(InflationCurve(fpmlData));

            case PricingStructureTypeEnum.FxCurve:
                return(FxCurve(fpmlData));

            case PricingStructureTypeEnum.FxVolatilityMatrix:
                return(FxVolatilityMatrix(fpmlData));

            //case PricingStructureTypeEnum.SurvivalProbabilityCurve:
            //    break;
            case PricingStructureTypeEnum.CommodityCurve:
                return(CommodityCurve(fpmlData));

            case PricingStructureTypeEnum.CommodityVolatilityMatrix:
                return(CommodityVolatilityMatrix(fpmlData));

            case PricingStructureTypeEnum.RateVolatilityMatrix:
                return(RateVolatilityMatrix(fpmlData));

            case PricingStructureTypeEnum.RateATMVolatilityMatrix:
                return(RateATMVolatilityMatrix(fpmlData));

            //case PricingStructureTypeEnum.RateVolatilityCube:
            //    return RateVolatilityCube(fpmlData);
            case PricingStructureTypeEnum.LPMCapFloorCurve:
                return(RateVolatilityMatrix(fpmlData));

            //case PricingStructureTypeEnum.LPMSwaptionCurve:
            //    break;
            //case PricingStructureTypeEnum.VolatilitySurface:
            //    break;
            //case PricingStructureTypeEnum.VolatilityCube:
            //    break;
            //case PricingStructureTypeEnum.VolatilitySurface2:
            //    break;
            case PricingStructureTypeEnum.EquityVolatilityMatrix:
                return(EquityVolatilityMatrix(fpmlData));

            //case PricingStructureTypeEnum.EquityWingVolatilityMatrix:
            //    return EquityWingVolatilityMatrix(fpmlData);
            default:
                throw new ArgumentOutOfRangeException(nameof(pricingStructureType));
            }
        }
Exemplo n.º 20
0
 /// <summary>
 /// The FxCurveIdentifier.
 /// </summary>
 /// <param name="pricingStructureType"></param>
 /// <param name="curveName"></param>
 /// <param name="quoteBasis"></param>
 /// <param name="buildDateTime"></param>
 public FxCurveIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, QuoteBasisEnum quoteBasis, DateTime buildDateTime)
     : base(pricingStructureType, curveName, buildDateTime)
 {
     SetProperties(quoteBasis);
 }
Exemplo n.º 21
0
 /// <summary>
 /// The FxCurveIdentifier.
 /// </summary>
 /// <param name="pricingStructureType"></param>
 /// <param name="curveName"></param>
 /// <param name="buildDateTime"></param>
 public FxCurveIdentifier(PricingStructureTypeEnum pricingStructureType, string curveName, DateTime buildDateTime)
     : base(pricingStructureType, curveName, buildDateTime)
 {
     SetProperties(QuoteBasisEnum.Currency2PerCurrency1);
 }
Exemplo n.º 22
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="baseCurve"></param>
        /// <param name="spreadXArray"></param>
        /// <param name="spreadYArray"></param>
        /// <param name="psType"></param>
        protected void SetInterpolator(ICommodityCurve baseCurve, IList <double> spreadXArray, IList <double> spreadYArray, PricingStructureTypeEnum psType)
        {
            //var curveId = (RateCurveIdentifier)PricingStructureIdentifier;
            var interpDayCounter = Actual365.Instance;

            // interpolate the DiscountFactor curve based on the respective curve interpolation
            if (psType == PricingStructureTypeEnum.CommoditySpreadCurve)
            {
                Interpolator = new CommoditySpreadInterpolator2(baseCurve, spreadXArray, spreadYArray, true);
            }
        }