Пример #1
0
        public void RoundTripViaProtoBuf()
        {
            var aModel = GetModel();
            var to     = aModel.ToTransportObject();
            var ms     = new MemoryStream();

            ProtoBuf.Serializer.Serialize(ms, to);
            //ms.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            var to2     = ProtoBuf.Serializer.Deserialize <TO_AssetFxModel>(ms);
            var aModel2 = new AssetFxModel(to2, TestProviderHelper.CurrencyProvider, TestProviderHelper.CalendarProvider);

            Assert.Equal(aModel.GetPriceCurve("OIL").GetPriceForDate(ValDate.AddDays(100)), aModel2.GetPriceCurve("OIL").GetPriceForDate(ValDate.AddDays(100)));
            Assert.Equal(aModel.GetPriceCurve("OIL", zar).GetPriceForDate(ValDate.AddDays(100)), aModel2.GetPriceCurve("OIL", zar).GetPriceForDate(ValDate.AddDays(100)));
            Assert.Equal(aModel.GetCompositeVolForStrikeAndDate("OIL", ValDate.AddDays(100), 1000, zar), aModel2.GetCompositeVolForStrikeAndDate("OIL", ValDate.AddDays(100), 1000, zar));
        }
Пример #2
0
        public void FixingsVolsCurvesFacts()
        {
            var fModel    = new Mock <IFundingModel>();
            var matrix    = new Mock <IFxMatrix>();
            var pair      = new FxPair();
            var dict      = new Mock <IFixingDictionary>();
            var surface   = new Mock <IVolSurface>();
            var surface2  = new Mock <IVolSurface>();
            var surfaceFx = new Mock <IVolSurface>();
            var curve     = new Mock <IPriceCurve>();

            curve.Setup(c => c.GetPriceForDate(DateTime.Today)).Returns(456.0);
            curve.Setup(c => c.GetPriceForFixingDate(DateTime.Today)).Returns(457.0);
            surface.Setup(s => s.AssetId).Returns("blah");
            surface2.Setup(s => s.AssetId).Returns("blah2");
            matrix.Setup(f => f.GetFxPair(It.IsAny <string>())).Returns(pair);
            fModel.Setup(f => f.GetFxRate(It.IsAny <DateTime>(), It.IsAny <Currency>(), It.IsAny <Currency>())).Returns(77.0);
            fModel.Setup(f => f.FxMatrix).Returns(matrix.Object);
            fModel.Setup(f => f.VolSurfaces).Returns(new Dictionary <string, IVolSurface> {
                { "bla/haa", surfaceFx.Object }
            });
            var sut = new AssetFxModel(DateTime.Today, fModel.Object);

            sut.AddPriceCurve("blah", curve.Object);
            sut.AddPriceCurves(new Dictionary <string, IPriceCurve> {
                { "blah2", curve.Object }
            });
            Assert.Same(curve.Object, sut.GetPriceCurve("blah"));
            Assert.Same(curve.Object, sut.GetPriceCurve("blah2"));

            sut.AddFixingDictionary("blah", dict.Object);
            sut.AddFixingDictionaries(new Dictionary <string, IFixingDictionary> {
                { "blah2", dict.Object }
            });
            Assert.Same(dict.Object, sut.GetFixingDictionary("blah"));
            Assert.Same(dict.Object, sut.GetFixingDictionary("blah2"));
            Assert.False(sut.TryGetFixingDictionary("wooo", out var flob));

            sut.AddVolSurface("blah", surface.Object);
            sut.AddVolSurfaces(new Dictionary <string, IVolSurface> {
                { "blah2", surface2.Object }
            });
            Assert.Same(surface.Object, sut.GetVolSurface("blah"));
            Assert.Same(surface2.Object, sut.GetVolSurface("blah2"));

            sut.GetVolForStrikeAndDate("blah", DateTime.Today, 123);
            surface.Verify(s => s.GetVolForAbsoluteStrike(123, DateTime.Today, 456), Times.Once);
            sut.GetVolForDeltaStrikeAndDate("blah", DateTime.Today, 123);
            surface.Verify(s => s.GetVolForDeltaStrike(123, DateTime.Today, 457.0), Times.Once);

            sut.GetAverageVolForStrikeAndDates("blah", new[] { DateTime.Today }, 123);
            surface.Verify(s => s.GetVolForAbsoluteStrike(123, DateTime.Today, 456), Times.Exactly(2));
            sut.GetAverageVolForMoneynessAndDates("blah", new[] { DateTime.Today }, 1.0);
            surface.Verify(s => s.GetVolForAbsoluteStrike(456, DateTime.Today, 456), Times.Exactly(2));

            sut.GetFxVolForStrikeAndDate("bla/haa", DateTime.Today, 123);
            surfaceFx.Verify(s => s.GetVolForAbsoluteStrike(123, DateTime.Today, 77), Times.Once);
            sut.GetFxVolForDeltaStrikeAndDate("bla/haa", DateTime.Today, 123);
            surfaceFx.Verify(s => s.GetVolForDeltaStrike(123, DateTime.Today, 77), Times.Once);

            sut.OverrideBuildDate(DateTime.MinValue);
            Assert.Equal(DateTime.MinValue, sut.BuildDate);
            sut.OverrideBuildDate(DateTime.Today);
        }
Пример #3
0
        public void RoundTrip()
        {
            var aModel  = GetModel();
            var to      = aModel.ToTransportObject();
            var aModel2 = new AssetFxModel(to, TestProviderHelper.CurrencyProvider, TestProviderHelper.CalendarProvider);

            Assert.Equal(aModel.GetPriceCurve("OIL").GetPriceForDate(ValDate.AddDays(100)), aModel2.GetPriceCurve("OIL").GetPriceForDate(ValDate.AddDays(100)));
            Assert.Equal(aModel.GetPriceCurve("OIL", zar).GetPriceForDate(ValDate.AddDays(100)), aModel2.GetPriceCurve("OIL", zar).GetPriceForDate(ValDate.AddDays(100)));
            Assert.Equal(aModel.GetCompositeVolForStrikeAndDate("OIL", ValDate.AddDays(100), 1000, zar), aModel2.GetCompositeVolForStrikeAndDate("OIL", ValDate.AddDays(100), 1000, zar));
        }