public void DoesRequestMatchFilter_InvalidExpiryEndDateWithHyphen_ArgumentExceptionThrown() { // Act var test = new RequestForQuoteImpl() { ExpiryDate = new DateTime(2012, 12, 23) }.DoesRequestMatchFilter(new Dictionary <string, string>() { { RequestForQuoteConstants.EXPIRY_DATE_CRITERION, "-INVALID_DATE" } }); }
public void DoesRequestMatchFilter_InvalidTradeStartDateWithHyphen_ArgumentExceptionThrown() { // Act var test = new RequestForQuoteImpl() { TradeDate = new DateTime(2012, 12, 23) }.DoesRequestMatchFilter(new Dictionary <string, string>() { { RequestForQuoteConstants.TRADE_DATE_CRITERION, "INVALID_DATE-" } }); }
public void HandlePublishedNewRequestEvent(NewRequestForQuoteEventPayload eventPayload) { if (eventPayload == null) { throw new ArgumentNullException("eventPayload"); } IRequestForQuote request = new RequestForQuoteImpl(); request.Legs = optionRequestParser.ParseRequest(eventPayload.NewRequestText.ToUpper(), request); request.Request = eventPayload.NewRequestText; request.Status = StatusEnum.PENDING; request.Identifier = -1; request.Client = eventPayload.NewRequestClient; request.TradeDate = DateTime.Today; if (request.Legs != null) { request.ExpiryDate = request.Legs[0].MaturityDate; } request.LotSize = 100; request.Multiplier = 10; request.Contracts = 100; request.NotionalFXRate = 1; request.NotionalMillions = 1; request.BookCode = eventPayload.NewRequestBookCode; request.DayCountConvention = 250.0; request.PremiumSettlementFXRate = 1; request.SalesCreditFXRate = 1; request.IsOTC = true; request.SalesCreditPercentage = 2; request.PremiumSettlementDaysOverride = 1; request.PremiumSettlementDate = DateTime.Today.AddDays(request.PremiumSettlementDaysOverride); request.CalculatePricing(optionRequestPricer); TodaysRequests.Add(request); Requests.Clear(); Requests.AddRange(TodaysRequests); NotifyPropertyChanged("Requests"); // TODO - add all fields with their defaults. if (log.IsDebugEnabled) { log.Debug("Received and prcoessed published new request for quote => " + request); } }
/// <summary> /// Converts web service formatted RFQ into the GUI format. /// </summary> /// <param name="serviceRequest"> the web service formatted RFQ to be converted.</param> /// <returns> the GUI formatted RFQ.</returns> /// <exception cref="ArgumentNullException"> thrown if the web service formatted RFQ is null.</exception> /// <exception cref="InvalidDataException"> thrown if status or notionalCurrency or salesCreditCurrency or premiumSettlementCurrency or /// hedgeType or tradeDate or expiryDate or premiumSettlementDate is invalid and cannot be converted from the string representation.</exception> private IRequestForQuote CreateRequestForQuoteFromServiceRequest(requestDetailImpl serviceRequest) { if (serviceRequest == null) { throw new ArgumentNullException("serviceRequest"); } StatusEnum convertedStatus = StatusEnum.PENDING; if (serviceRequest.status != null) { if (!Enum.TryParse(serviceRequest.status, true, out convertedStatus)) { throw new InvalidDataException("status"); } } CurrencyEnum convertedNotionalCurrency = CurrencyEnum.USD; if (serviceRequest.notionalCurrency != null) { if (!Enum.TryParse(serviceRequest.notionalCurrency, true, out convertedNotionalCurrency)) { throw new InvalidDataException("notionalCurrency"); } } CurrencyEnum convertedSalesCreditCurrency = CurrencyEnum.USD; if (serviceRequest.salesCreditCurrency != null) { if (!Enum.TryParse(serviceRequest.salesCreditCurrency, true, out convertedSalesCreditCurrency)) { throw new InvalidDataException("salesCreditCurrency"); } } CurrencyEnum convertedPremiumSettlementCurrency = CurrencyEnum.USD; if (serviceRequest.premiumSettlementCurrency != null) { if (!Enum.TryParse(serviceRequest.premiumSettlementCurrency, true, out convertedPremiumSettlementCurrency)) { throw new InvalidDataException("premiumSettlementCurrency"); } } HedgeTypeEnum convertedHedgeType = HedgeTypeEnum.FUTURES; if (serviceRequest.hedgeType != null) { if (!Enum.TryParse(serviceRequest.hedgeType, true, out convertedHedgeType)) { throw new InvalidDataException("hedgeType"); } } var convertedTradeDate = DateTime.Now; if (serviceRequest.tradeDate != null) { if (!DateTime.TryParse(serviceRequest.tradeDate, out convertedTradeDate)) { throw new InvalidDataException("tradeDate"); } } var convertedExpiryDate = DateTime.Now; if (serviceRequest.expiryDate != null) { if (!DateTime.TryParse(serviceRequest.expiryDate, out convertedExpiryDate)) { throw new InvalidDataException("expiryDate"); } } var convertedPremiumSettlementDate = DateTime.Now; if (serviceRequest.premiumSettlementDate != null) { if (!DateTime.TryParse(serviceRequest.premiumSettlementDate, out convertedPremiumSettlementDate)) { throw new InvalidDataException("premiumSettlementDate"); } } var requestForQuoteToCreate = new RequestForQuoteImpl(); if (serviceRequest.legs != null && serviceRequest.legs.optionDetailList != null) { if (serviceRequest.legs.optionDetailList.Length > 0) { requestForQuoteToCreate.Legs = new List <OptionDetailImpl>(); } foreach (var leg in serviceRequest.legs.optionDetailList) { var optionLeg = CreateRequestForQuoteLegFromServiceOptionLeg(leg); optionLeg.ParentRequest = requestForQuoteToCreate; requestForQuoteToCreate.AddLeg(optionLeg); } } requestForQuoteToCreate.BookCode = serviceRequest.bookCode; requestForQuoteToCreate.Request = serviceRequest.request; requestForQuoteToCreate.Identifier = serviceRequest.identifier; requestForQuoteToCreate.Client = clientManager.GetClientWithMatchingIdentifier(serviceRequest.clientId); requestForQuoteToCreate.IsOTC = serviceRequest.isOTC; requestForQuoteToCreate.Status = convertedStatus; //6 requestForQuoteToCreate.TradeDate = convertedTradeDate; requestForQuoteToCreate.ExpiryDate = convertedExpiryDate; //8 requestForQuoteToCreate.DayCountConvention = serviceRequest.dayCountConvention; requestForQuoteToCreate.LotSize = serviceRequest.lotSize; requestForQuoteToCreate.Multiplier = serviceRequest.multiplier; requestForQuoteToCreate.Contracts = serviceRequest.contracts; requestForQuoteToCreate.NotionalMillions = serviceRequest.notionalMillions; requestForQuoteToCreate.NotionalFXRate = serviceRequest.notionalFXRate; requestForQuoteToCreate.NotionalCurrency = convertedNotionalCurrency; //15 requestForQuoteToCreate.Delta = serviceRequest.delta; requestForQuoteToCreate.Gamma = serviceRequest.gamma; requestForQuoteToCreate.Vega = serviceRequest.vega; requestForQuoteToCreate.Theta = serviceRequest.theta; requestForQuoteToCreate.Rho = serviceRequest.rho; //20 requestForQuoteToCreate.AskFinalAmount = serviceRequest.askFinalAmount; requestForQuoteToCreate.AskFinalPercentage = serviceRequest.askFinalPercentage; requestForQuoteToCreate.AskImpliedVol = serviceRequest.askImpliedVol; requestForQuoteToCreate.AskPremiumAmount = serviceRequest.askPremiumAmount; requestForQuoteToCreate.AskPremiumPercentage = serviceRequest.askPremiumPercentage; //35 requestForQuoteToCreate.BidFinalAmount = serviceRequest.bidFinalAmount; requestForQuoteToCreate.BidFinalPercentage = serviceRequest.bidFinalPercentage; requestForQuoteToCreate.BidImpliedVol = serviceRequest.bidImpliedVol; requestForQuoteToCreate.BidPremiumAmount = serviceRequest.bidPremiumAmount; requestForQuoteToCreate.BidPremiumPercentage = serviceRequest.bidPremiumPercentage; //40 requestForQuoteToCreate.PremiumAmount = serviceRequest.premiumAmount; requestForQuoteToCreate.PremiumPercentage = serviceRequest.premiumPercentage; requestForQuoteToCreate.ImpliedVol = serviceRequest.impliedVol; //43 requestForQuoteToCreate.SalesCreditAmount = serviceRequest.salesCreditAmount; requestForQuoteToCreate.SalesCreditPercentage = serviceRequest.salesCreditPercentage; requestForQuoteToCreate.SalesCreditCurrency = convertedSalesCreditCurrency; requestForQuoteToCreate.SalesCreditFXRate = serviceRequest.salesCreditFXRate; //47 requestForQuoteToCreate.PremiumSettlementCurrency = convertedPremiumSettlementCurrency; requestForQuoteToCreate.PremiumSettlementDate = convertedPremiumSettlementDate; requestForQuoteToCreate.PremiumSettlementDaysOverride = serviceRequest.premiumSettlementDaysOverride; requestForQuoteToCreate.PremiumSettlementFXRate = serviceRequest.premiumSettlementFXRate; //51 requestForQuoteToCreate.SalesComment = serviceRequest.salesComment; requestForQuoteToCreate.TraderComment = serviceRequest.traderComment; requestForQuoteToCreate.ClientComment = serviceRequest.clientComment; //54 requestForQuoteToCreate.HedgePrice = serviceRequest.hedgePrice; requestForQuoteToCreate.HedgeType = convertedHedgeType; requestForQuoteToCreate.PickedUpBy = serviceRequest.pickedUpBy; //58 return(requestForQuoteToCreate); }
public void DoesRequestMatchFilter_NullCriteria_ArgumentNullExceptionThrown() { // Act var test = new RequestForQuoteImpl().DoesRequestMatchFilter(null); }