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()); } } }
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()); } } }