示例#1
0
 public string[] IrCurves(IAssetFxModel model)
 {
     if (FxConversionType == FxConversionType.None && model.GetPriceCurve(AssetId).Currency == PaymentCurrency)
     {
         return new[] { DiscountCurve }
     }
     ;
     else
     {
         if (IsFx)
         {
             var fxCurve       = model.FundingModel.FxMatrix.DiscountCurveMap[PaymentCurrency];
             var ccy1          = model.FundingModel.GetCurrency(AssetId.Split('/')[0]);
             var ccy2          = model.FundingModel.GetCurrency(AssetId.Split('/')[1]);
             var ccy1Curve     = model.FundingModel.FxMatrix.DiscountCurveMap[ccy1];
             var ccy2Curve     = model.FundingModel.FxMatrix.DiscountCurveMap[ccy2];
             var assetCurveCcy = model.GetPriceCurve(AssetId).Currency;
             var assetCurve    = model.FundingModel.FxMatrix.DiscountCurveMap[assetCurveCcy];
             return((new[] { DiscountCurve, fxCurve, assetCurve, ccy1Curve, ccy2Curve }).Distinct().ToArray());
         }
         else
         {
             var fxCurve       = model.FundingModel.FxMatrix.DiscountCurveMap[PaymentCurrency];
             var assetCurveCcy = model.GetPriceCurve(AssetId).Currency;
             var assetCurve    = model.FundingModel.FxMatrix.DiscountCurveMap[assetCurveCcy];
             return((new[] { DiscountCurve, fxCurve, assetCurve }).Distinct().ToArray());
         }
     }
 }
示例#2
0
文件: ETC.cs 项目: wy6688/qwack
        public string[] IrCurves(IAssetFxModel model)
        {
            if (IsFx)
            {
                var ccys = AssetId.Split('/');
                var c1   = model.FundingModel.FxMatrix.GetDiscountCurve(ccys[0]);
                var c2   = model.FundingModel.FxMatrix.GetDiscountCurve(ccys[1]);
                return((new[] { DiscountCurve, c1, c2 }).Distinct().Where(x => !string.IsNullOrWhiteSpace(x)).ToArray());
            }
            else
            {
                if (string.IsNullOrEmpty(FxPair(model)))
                {
                    return new[] { DiscountCurve }
                }
                ;
                else
                {
                    var fxCurve = model.FundingModel.FxMatrix.DiscountCurveMap[PaymentCurrency];

                    var assetCurveCcy = model.GetPriceCurve(AssetId).Currency;
                    var assetCurve    = model.FundingModel.FxMatrix.DiscountCurveMap[assetCurveCcy];
                    return((new[] { DiscountCurve, fxCurve, assetCurve }).Distinct().ToArray());
                }
            }
        }