Пример #1
0
        public async Task MultiPeriodCapitalUsageIsAverageOfNonzeroValues()
        {
            DateTime dt = new DateTime(2000, 1, 2);

            for (int i = 0; i < 10; i++)
            {
                var es = new EquitySummary
                {
                    Date  = dt,
                    Total = 10000
                };
                _dbContext.EquitySummaries.Add(es);
            }

            _t.Orders.Add(new Order {
                Quantity = 10, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 1), Currency = new Currency {
                    Name = "USD"
                }
            });
            _t.Orders.Add(new Order {
                Quantity = -10, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 4), Currency = new Currency {
                    Name = "USD"
                }
            });

            _t.Orders.Add(new Order {
                Quantity = 20, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 9, 10, 0, 0), Currency = new Currency {
                    Name = "USD"
                }
            });
            _t.Orders.Add(new Order {
                Quantity = -20, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 9, 10, 0, 0), Currency = new Currency {
                    Name = "USD"
                }
            });

            await _repository.UpdateStats(_t);

            Assert.AreEqual((4 * 1000 + 1 * 2000) / 5, _t.CapitalTotal);
        }
Пример #2
0
        public void MultiPeriodCapitalUsageIsAverageOfNonzeroValues()
        {
            DateTime dt = new DateTime(2000, 1, 2);
            for (int i = 0; i < 10; i++)
            {
                var es = new EquitySummary
                {
                    Date = dt,
                    Total = 10000
                };
                _dbSetStub.Add(es);
            }

            _t.Orders.Add(new Order { Quantity = 10, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 1), Currency = new Currency { Name = "USD" } });
            _t.Orders.Add(new Order { Quantity = -10, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 4), Currency = new Currency { Name = "USD" } });
            
            _t.Orders.Add(new Order { Quantity = 20, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 9, 10, 0, 0), Currency = new Currency { Name = "USD" } });
            _t.Orders.Add(new Order { Quantity = -20, Instrument = _inst, Price = 100, FXRateToBase = 1, BuySell = "BUY", TradeDate = new DateTime(2000, 1, 9, 10, 0, 0), Currency = new Currency { Name = "USD" } });

            _repository.UpdateStats(_t, true);

            Assert.AreEqual((4 * 1000 + 1 * 2000) / 5, _t.CapitalTotal);
        }