public void VerifyClosedMarketLeverageAltVersion() { var leverage = 3m; var expected = 100 * 100m / leverage + 1; var model = new TestPatternDayTradingMarginModel(leverage, 4m); // Market is Closed on Tuesday, Feb, 16th 2016 at Midnight var security = CreateSecurity(Midnight); var order = new MarketOrder(security.Symbol, 100, security.LocalTime); Assert.AreEqual((double)leverage, (double)model.GetLeverage(security), 1e-3); Assert.AreEqual((double)expected, (double)model.GetInitialMarginRequiredForOrder( new InitialMarginRequiredForOrderParameters(new IdentityCurrencyConverter(Currencies.USD), security, order)), 1e-3); // Market is Closed on Monday, Feb, 15th 2016 at Noon (US President Day) security = CreateSecurity(NoonHoliday); order = new MarketOrder(security.Symbol, 100, security.LocalTime); Assert.AreEqual((double)leverage, (double)model.GetLeverage(security), 1e-3); Assert.AreEqual((double)expected, (double)model.GetInitialMarginRequiredForOrder( new InitialMarginRequiredForOrderParameters(new IdentityCurrencyConverter(Currencies.USD), security, order)), 1e-3); // Market is Closed on Sunday, Feb, 14th 2016 at Noon security = CreateSecurity(NoonWeekend); order = new MarketOrder(security.Symbol, 100, security.LocalTime); Assert.AreEqual((double)leverage, (double)model.GetLeverage(security), 1e-3); Assert.AreEqual((double)expected, (double)model.GetInitialMarginRequiredForOrder( new InitialMarginRequiredForOrderParameters(new IdentityCurrencyConverter(Currencies.USD), security, order)), 1e-3); }
public void VerifyOpenMarketLeverage() { // Market is Open on Tuesday, Feb, 16th 2016 at Noon var leverage = 4m; var expected = 100 * 100m / leverage + 1; var model = new TestPatternDayTradingMarginModel(); var security = CreateSecurity(Noon); var order = new MarketOrder(security.Symbol, 100, security.LocalTime); Assert.AreEqual((double)leverage, (double)model.GetLeverage(security), 1e-3); Assert.AreEqual((double)expected, (double)model.GetInitialMarginRequiredForOrder(security, order), 1e-3); }
public void VerifyOpenMarketLeverageAltVersion() { // Market is Open on Tuesday, Feb, 16th 2016 at Noon var leverage = 5m; var expected = 100 * 100m / leverage + 1; var model = new TestPatternDayTradingMarginModel(2m, leverage); var security = CreateSecurity(Noon); var order = new MarketOrder(security.Symbol, 100, security.LocalTime); Assert.AreEqual((double)leverage, (double)model.GetLeverage(security), 1e-3); Assert.AreEqual((double)expected, (double)model.GetInitialMarginRequiredForOrder( new InitialMarginRequiredForOrderParameters(new IdentityCurrencyConverter(Currencies.USD), security, order)), 1e-3); }
public void VerifyMaintenaceMargin() { var model = new TestPatternDayTradingMarginModel(); // Open Market var security = CreateSecurity(Noon); security.Holdings.SetHoldings(100m, 100); Assert.AreEqual((double)100 * 100 / 4, (double)model.GetMaintenanceMargin(security), 1e-3); // Closed Market security = CreateSecurity(Midnight); security.Holdings.SetHoldings(100m, 100); Assert.AreEqual((double)100 * 100 / 2, (double)model.GetMaintenanceMargin(security), 1e-3); }
public void VerifyClosingSoonMarketLeverage() { var closedLeverage = 2m; var openLeverage = 5m; var model = new TestPatternDayTradingMarginModel(closedLeverage, openLeverage); // Market is Closed on Tuesday, Feb, 16th 2016 at 16 var security = CreateSecurity(new DateTime(2016, 2, 16, 15, 49, 0)); Assert.AreEqual(openLeverage, model.GetLeverage(security)); Assert.IsFalse(security.Exchange.ClosingSoon); security.Exchange.SetLocalDateTimeFrontier(new DateTime(2016, 2, 16, 15, 50, 0)); Assert.AreEqual(closedLeverage, model.GetLeverage(security)); Assert.IsTrue(security.Exchange.ClosingSoon); Assert.IsTrue(security.Exchange.ExchangeOpen); security.Exchange.SetLocalDateTimeFrontier(new DateTime(2016, 2, 16, 16, 0, 0)); Assert.IsFalse(security.Exchange.ExchangeOpen); }