public void CreateInstrumetTest_Create_FlowdownSpread_Test() { var factory = new InstrumentFactory(); var instrumentState = Substitute.For <ITTInstrumentState>(); var def = new InstrDef("CME", "ZN", "SPREAD", "CME Reduced Tick Spread: 1xZN Dec15:-1xMar16", "+ZNZ5-ZNH6", "FlowdownSpread"); Instrument instrument = factory.CreateInstrument(def, instrumentState); Assert.IsType <InstrumentSpreadFlowdown>(instrument); }
public void CreateInstrumetTest_Create_SpreadImpliedNonlinearModel_Test() { var factory = new InstrumentFactory(); var instrumentState = Substitute.For <ITTInstrumentState>(); var def = new InstrDef("CME", "ZN", "FUTURE", "Dec15", "ZNZ5", "SpreadImpliedNonlinear"); Instrument instrument = factory.CreateInstrument(def, instrumentState); Assert.IsType <InstrumentFutureSpreadImplied>(instrument); }
public void CreateInstrumentTest_Build_SpreadBasicPriceModel_Test() { string seriesZNZ5 = "AAASSSBBBFFFZNZ5"; string seriesZNH6 = "AAASSSBBBFFFZNH6"; var factory = Substitute.ForPartsOf <InstrumentFactory>(); var instrumentStateZNZ5 = Substitute.For <ITTInstrumentState>(); instrumentStateZNZ5.SpreadType.Returns(TTSpreadType.None); instrumentStateZNZ5.Exchange.Returns("CME"); instrumentStateZNZ5.Series.Returns(seriesZNZ5); instrumentStateZNZ5.PointValue.Returns(1000f); var defZNZ5 = new InstrDef("CME", "ZN", "FUTURE", "Dec15", "ZNZ5", "Basic"); Instrument instrumentZNZ5 = Substitute.ForPartsOf <Instrument>(instrumentStateZNZ5); factory.CreateBasicOutright(Arg.Is(instrumentStateZNZ5)).Returns(instrumentZNZ5); Instrument instrumentZNZ5Returned = factory.CreateInstrument(defZNZ5, instrumentStateZNZ5); Assert.Same(instrumentZNZ5, instrumentZNZ5Returned); var instrumentStateZNH6 = Substitute.For <ITTInstrumentState>(); instrumentStateZNH6.SpreadType.Returns(TTSpreadType.None); instrumentStateZNH6.Exchange.Returns("CME"); instrumentStateZNH6.Series.Returns(seriesZNH6); instrumentStateZNH6.PointValue.Returns(1000f); var defZNH6 = new InstrDef("CME", "ZN", "FUTURE", "Mar16", "ZNH6", "SpreadImplied"); InstrumentFutureSpreadImplied instrumentZNH6 = Substitute.ForPartsOf <InstrumentFutureSpreadImplied>(instrumentStateZNH6, null, new ArithmeticMeanAggregation()); factory.CreateSpreadImpliedOutright(Arg.Is(instrumentStateZNH6)).Returns(instrumentZNH6); InstrumentFutureSpreadImplied instrumentZNH6Returned = factory.CreateInstrument(defZNH6, instrumentStateZNH6) as InstrumentFutureSpreadImplied; Assert.Same(instrumentZNH6, instrumentZNH6Returned); var ttLeg1 = Substitute.For <ITTLeg>(); ttLeg1.Ratio.Returns(1); ttLeg1.Exchange.Returns(defZNZ5.Exchange); ttLeg1.Series.Returns(seriesZNZ5); ttLeg1.ProductName.Returns(defZNZ5.Product); ttLeg1.ProductType.Returns(defZNZ5.ProdType); ttLeg1.Expiry.Returns(defZNZ5.Contract); var ttLeg2 = Substitute.For <ITTLeg>(); ttLeg2.Ratio.Returns(-1); ttLeg2.Exchange.Returns(defZNH6.Exchange); ttLeg2.Series.Returns(seriesZNH6); ttLeg2.ProductName.Returns(defZNH6.Product); ttLeg2.ProductType.Returns(defZNH6.ProdType); ttLeg2.Expiry.Returns(defZNH6.Contract); var instrumentStateSpread = Substitute.For <ITTInstrumentState>(); instrumentStateSpread.Legs.Returns(new ITTLeg[] { ttLeg1, ttLeg2 }); instrumentStateSpread.SpreadType.Returns(TTSpreadType.ReducedTickSpread); instrumentStateSpread.Exchange.Returns("CME"); var defSpread = new InstrDef("CME", "ZN", "SPREAD", "CME Reduced Tick Spread: 1xZN Dec15:-1xMar16", "+ZNZ5-ZNH6", "Basic"); InstrumentSpread instrumentSpread = Substitute.ForPartsOf <InstrumentSpread>(instrumentStateSpread); factory.CreateSpreadInstrument(Arg.Is(instrumentStateSpread)).Returns(instrumentSpread); InstrumentSpread instrumentSpreadReturned = factory.CreateInstrument(defSpread, instrumentStateSpread) as InstrumentSpread; Assert.Same(instrumentSpread, instrumentSpreadReturned); factory.UpdateInstrument(instrumentStateSpread); Assert.NotNull(instrumentSpread.Legs); Assert.Equal(instrumentSpread.Legs.Length, 2); Assert.Equal(instrumentSpread.Legs[0].Instrument, instrumentZNZ5); Assert.Equal(instrumentSpread.Legs[0].Ratio, 1); Assert.Equal(instrumentSpread.Legs[0].Weight, 1f, 5); Assert.Equal(instrumentSpread.Legs[1].Instrument, instrumentZNH6); Assert.Equal(instrumentSpread.Legs[1].Ratio, -1); Assert.Equal(instrumentSpread.Legs[1].Weight, -1f, 5); Assert.False(instrumentSpread.IsNetChangePx); instrumentZNZ5.OnPriceChanged += Raise.Event(); instrumentZNH6.Received(1).OnLinkedInstrumentChanged(Arg.Any <object>(), Arg.Any <EventArgs>()); instrumentZNH6.ClearReceivedCalls(); instrumentZNZ5.OnPriceChanged += Raise.Event(); instrumentSpread.OnPriceChanged += Raise.Event(); instrumentZNH6.Received(2).OnLinkedInstrumentChanged(Arg.Any <object>(), Arg.Any <EventArgs>()); }