private IPvModel GenerateTestData() { Utils.Parallel.ParallelUtils.Instance.MultiThreaded = false; var usd = TestProviderHelper.CurrencyProvider.GetCurrency("USD"); var zar = TestProviderHelper.CurrencyProvider.GetCurrency("ZAR"); var nyc = TestProviderHelper.CalendarProvider.Collection["NYC"]; var ins = new Forward { TradeId = "TestA", AssetId = "FakeAsset", ExpiryDate = _originDate.AddDays(180), PaymentCurrency = zar, Notional = 1e6, Strike = 1400, DiscountCurve = "DISCO-ZAR" }; var pf = new Portfolio { Instruments = new List <IInstrument> { ins } }; var pillars = new[] { _originDate.AddDays(90), _originDate.AddDays(180) }; var discoUsd = new IrCurve(pillars, pillars.Select(p => 0.02).ToArray(), _originDate, "DISCO-USD", Interpolator1DType.Linear, usd); var discoZar = new IrCurve(pillars, pillars.Select(p => 0.02).ToArray(), _originDate, "DISCO-ZAR", Interpolator1DType.Linear, zar); var fxpairs = new List <FxPair> { new FxPair { Domestic = usd, Foreign = zar, PrimaryCalendar = nyc, SpotLag = 2.Bd() }, new FxPair { Domestic = zar, Foreign = usd, PrimaryCalendar = nyc, SpotLag = 2.Bd() }, }; var fxMatrix = new FxMatrix(TestProviderHelper.CurrencyProvider); fxMatrix.Init(usd, _originDate, new Dictionary <Currency, double> { { zar, 14.0 } }, fxpairs, new Dictionary <Currency, string> { { usd, "DISCO-USD" }, { zar, "DISCO-ZAR" } }); var fModel = new FundingModel(_originDate, new[] { discoUsd, discoZar }, TestProviderHelper.CurrencyProvider, TestProviderHelper.CalendarProvider); fModel.SetupFx(fxMatrix); var model = new AssetFxModel(_originDate, fModel); var curve = new ConstantPriceCurve(100, _originDate, TestProviderHelper.CurrencyProvider); model.AddPriceCurve("FakeAsset", curve); model.AddFixingDictionary("FakeAsset", new FixingDictionary()); model.AttachPortfolio(pf); return(model); }