public void CalculateOrderFeeForLongOrShortFutures(int quantity)
        {
            var tz       = TimeZones.NewYork;
            var security = new Future(Symbols.Fut_SPY_Feb19_2016,
                                      SecurityExchangeHours.AlwaysOpen(tz),
                                      new Cash("USD", 0, 0),
                                      SymbolProperties.GetDefault("USD"),
                                      ErrorCurrencyConverter.Instance,
                                      RegisteredSecurityDataTypesProvider.Null,
                                      new SecurityCache()
                                      );

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var feeModel = new AlphaStreamsFeeModel();

            var parameters = new OrderFeeParameters(
                security,
                new MarketOrder(security.Symbol, quantity, DateTime.UtcNow)
                );

            var fee = feeModel.GetOrderFee(parameters);

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            Assert.AreEqual(Math.Abs(quantity) * 0.50m, fee.Value.Amount);
        }
        public void CalculateOrderFeeForCfd()
        {
            var tz       = TimeZones.NewYork;
            var security = new Cfd(
                SecurityExchangeHours.AlwaysOpen(tz),
                new Cash("EUR", 0, 0),
                new SubscriptionDataConfig(typeof(QuoteBar), Symbols.DE30EUR, Resolution.Minute, tz, tz, true, false, false),
                new SymbolProperties("DE30EUR", "EUR", 1, 0.01m, 1m, string.Empty),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null
                );

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 12000, 12000));

            var feeModel = new AlphaStreamsFeeModel();

            var fee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    security,
                    new MarketOrder(security.Symbol, 1, DateTime.UtcNow)
                    )
                );

            Assert.AreEqual(0, fee.Value.Amount);
        }
        public void ReturnsFeeInQuoteCurrencyInOtherCurrency()
        {
            Crypto btceur = new Crypto(
                SecurityExchangeHours.AlwaysOpen(TimeZones.NewYork),
                new Cash("EUR", 0, 10),
                new SubscriptionDataConfig(typeof(TradeBar), Symbols.BTCEUR, Resolution.Minute, TimeZones.NewYork, TimeZones.NewYork, true, false, false),
                new SymbolProperties("BTCEUR", "EUR", 1, 0.01m, 0.00000001m, string.Empty),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null
                );

            btceur.SetMarketPrice(new Tick(DateTime.UtcNow, btceur.Symbol, 100, 100));

            var feeModel = new AlphaStreamsFeeModel();

            var fee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    btceur,
                    new MarketOrder(btceur.Symbol, 1, DateTime.UtcNow)
                    )
                );

            Assert.AreEqual("EUR", fee.Value.Currency);
            Assert.AreEqual(0.2m, fee.Value.Amount);
        }
        public void CalculateOrderFeeForLongOrShortForexNonUsd(int quantity)
        {
            var conversionRate = 1.2m;
            var tz             = TimeZones.NewYork;
            var security       = new Forex(
                SecurityExchangeHours.AlwaysOpen(tz),
                new Cash("GBP", 0, conversionRate),
                new SubscriptionDataConfig(typeof(TradeBar), Symbols.EURGBP, Resolution.Minute, tz, tz, true, false, false),
                new SymbolProperties("EURGBP", "GBP", 1, 0.01m, 0.00000001m, string.Empty),
                ErrorCurrencyConverter.Instance,
                RegisteredSecurityDataTypesProvider.Null
                );

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var feeModel = new AlphaStreamsFeeModel();

            var fee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    security,
                    new MarketOrder(security.Symbol, quantity, DateTime.UtcNow)
                    )
                );

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            Assert.AreEqual(0.000002m * security.Price * Math.Abs(quantity) * conversionRate, fee.Value.Amount);
        }
        public void GetOrderFeeThrowsForUnsupportedSecurityType()
        {
            Assert.Throws <ArgumentException>(
                () =>
            {
                var tz       = TimeZones.NewYork;
                var security = new Cfd(
                    SecurityExchangeHours.AlwaysOpen(tz),
                    new Cash("EUR", 0, 0),
                    new SubscriptionDataConfig(typeof(QuoteBar), Symbols.DE30EUR, Resolution.Minute, tz, tz, true, false, false),
                    new SymbolProperties("DE30EUR", "EUR", 1, 0.01m, 1m),
                    ErrorCurrencyConverter.Instance,
                    RegisteredSecurityDataTypesProvider.Null
                    );
                security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 12000, 12000));

                var feeModel = new AlphaStreamsFeeModel();

                feeModel.GetOrderFee(
                    new OrderFeeParameters(
                        security,
                        new MarketOrder(security.Symbol, 1, DateTime.UtcNow)
                        )
                    );
            });
        }
        public void CalculateEquityFeeInUSD()
        {
            var feeModel = new AlphaStreamsFeeModel();
            var security = SecurityTests.GetSecurity();

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var fee = feeModel.GetOrderFee(
                new OrderFeeParameters(
                    security,
                    new MarketOrder(security.Symbol, 1000, DateTime.UtcNow)
                    )
                );

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            Assert.AreEqual(5m, fee.Value.Amount);
        }
Esempio n. 7
0
        public void CalculateOrderFeeForLongOrShortEquity(int quantity)
        {
            var security = SecurityTests.GetSecurity();

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var feeModel = new AlphaStreamsFeeModel();

            var parameters = new OrderFeeParameters(
                security,
                new MarketOrder(security.Symbol, quantity, DateTime.UtcNow)
                );

            var fee = feeModel.GetOrderFee(parameters);

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            var expected = 0m * security.Price * quantity;

            Assert.AreEqual(expected, fee.Value.Amount);
        }
        public void GetMinimumOrderFeeForLongOrShortOptions(int quantity)
        {
            var tz       = TimeZones.NewYork;
            var security = new Option(Symbols.SPY_C_192_Feb19_2016,
                                      SecurityExchangeHours.AlwaysOpen(tz),
                                      new Cash("USD", 0, 0),
                                      new OptionSymbolProperties(SymbolProperties.GetDefault("USD")),
                                      ErrorCurrencyConverter.Instance
                                      );

            security.SetMarketPrice(new Tick(DateTime.UtcNow, security.Symbol, 100, 100));

            var feeModel = new AlphaStreamsFeeModel();

            var parameters = new OrderFeeParameters(
                security,
                new MarketOrder(security.Symbol, quantity, DateTime.UtcNow)
                );

            var fee = feeModel.GetOrderFee(parameters);

            Assert.AreEqual(Currencies.USD, fee.Value.Currency);
            Assert.AreEqual(Math.Abs(quantity) * 0.50m, fee.Value.Amount);
        }