예제 #1
0
        /// <inheritdoc />
        public bool Equals(Position other)
        {
            if (other == null)
            {
                return(false);
            }

            return(Center.Equals(other.Center) &&
                   Forward.Equals(other.Forward) &&
                   Up.Equals(other.Up));
        }
예제 #2
0
        public static SyntaxTree Parse(IEnumerable <Token> tokens)
        {
            SyntaxTreeNode root          = null;
            SyntaxTreeNode forwardedNode = null;

            foreach (var token in tokens)
            {
                if (root == null)
                {
                    root = new SyntaxTreeNode(token);
                    if (forwardedNode != null)
                    {
                        root.Children.Add(forwardedNode);
                    }
                    continue;
                }

                switch (token.TokenType)
                {
                case TokenType.Operator when Operator.Forward.Equals(token.Value):
                    forwardedNode = root;

                    root = null;
                    continue;

                case TokenType.Operator:
                    var tmp = root;
                    root = new SyntaxTreeNode(token);
                    root.Children.Add(tmp);
                    continue;

                default:
                    root.Children.Add(new SyntaxTreeNode(token));
                    continue;
                }
            }

            return(new SyntaxTree(root));
        }
예제 #3
0
        public void ForwardFact()
        {
            var orgin    = new DateTime(2019, 06, 12);
            var usd      = TestProviderHelper.CurrencyProvider.GetCurrency("USD");
            var zar      = TestProviderHelper.CurrencyProvider.GetCurrency("ZAR");
            var fixDates = new[] { orgin };
            var x        = new Forward()
            {
                AssetId          = "QS",
                DiscountCurve    = "X",
                ExpiryDate       = orgin,
                FxConversionType = FxConversionType.None,
                Notional         = 1,
                PaymentCurrency  = usd,
                PaymentDate      = orgin,
                SpotLag          = 0.Bd(),
                Strike           = 1000,
            };
            var xFx = new Forward()
            {
                AssetId          = "USD/ZAR",
                DiscountCurve    = "Y",
                ExpiryDate       = orgin,
                FxConversionType = FxConversionType.None,
                Notional         = 1,
                PaymentCurrency  = usd,
                PaymentDate      = orgin,
                SpotLag          = 0.Bd(),
                Strike           = 1000,
            };
            var x2 = new Forward()
            {
                AssetId          = "QS",
                DiscountCurve    = "X",
                ExpiryDate       = orgin,
                FxConversionType = FxConversionType.AverageThenConvert,
                Notional         = 1,
                PaymentCurrency  = zar,
                PaymentDate      = orgin,
                SpotLag          = 0.Bd(),
                Strike           = 1000,
            };

            var fakeModel = new Mock <IAssetFxModel>();
            var c         = new ConstantPriceCurve(100, DateTime.Today, TestProviderHelper.CurrencyProvider)
            {
                Currency = usd
            };

            fakeModel.Setup(xx => xx.GetPriceCurve(It.IsAny <string>(), null)).Returns(c);
            fakeModel.Setup(xx => xx.BuildDate).Returns(DateTime.Today);
            var fxMatrix = new FxMatrix(TestProviderHelper.CurrencyProvider);

            fxMatrix.Init(usd, orgin, new Dictionary <Currency, double>(), new List <FxPair>(), new Dictionary <Currency, string> {
                { usd, "X" }, { zar, "Y" }
            });
            var fModel = new Mock <IFundingModel>();

            fModel.Setup(xx => xx.FxMatrix).Returns(fxMatrix);
            fakeModel.Setup(xx => xx.FundingModel).Returns(fModel.Object);

            Assert.Equal(usd, x.Currency);
            Assert.Equal(usd, x.PaymentCurrency);
            var a = x.AssetIds;

            Assert.Contains("QS", a);

            Assert.Single(x.IrCurves(fakeModel.Object));
            var ir2 = xFx.IrCurves(fakeModel.Object);

            Assert.Contains("X", ir2);
            Assert.Contains("Y", ir2);
            ir2 = x2.IrCurves(fakeModel.Object);
            Assert.Contains("X", ir2);
            Assert.Contains("Y", ir2);

            Assert.Equal(string.Empty, x.FxPair(fakeModel.Object));
            Assert.Equal("USD/ZAR", x2.FxPair(fakeModel.Object));

            Assert.Equal(FxConversionType.None, x.FxType(fakeModel.Object));
            Assert.Equal(orgin, x.LastSensitivityDate);

            var pf = x.PastFixingDates(orgin.AddDays(1));

            Assert.Contains("QS", pf.Keys);

            var y = (Forward)x.Clone();

            Assert.True(x.Equals(y));
            y.TradeId = "xxx";
            Assert.False(x.Equals(y));

            var z = (Forward)x.SetStrike(0);

            Assert.Equal(0, z.Strike);

            Assert.Equal(1.0, z.SupervisoryDelta(fakeModel.Object));
        }
예제 #4
0
 public bool Equals(AnimationInfo other)
 {
     return(AnimID.Equals(other.AnimID) && Frames.Equals(other.Frames) && Count.Equals(other.Count) &&
            Forward.Equals(other.Forward) && Repeat.Equals(other.Repeat) && Delay.Equals(other.Delay));
 }