Beispiel #1
0
        /// <summary>
        /// Converts GUI formatted RFQ into the web service format.
        /// </summary>
        /// <param name="sourceRequestForQuote"> the GUI formatted RFQ to be converted.</param>
        /// <returns> the web service formatted RFQ.</returns>
        /// <exception cref="ArgumentNullException"> thrown if the GUI formatted RFQ is null.</exception>
        private requestDetailImpl CreateServiceRequestFromRequestForQuote(IRequestForQuote sourceRequestForQuote)
        {
            if (sourceRequestForQuote == null)
            {
                throw new ArgumentNullException("sourceRequestForQuote");
            }

            var serviceRequestToCreate = new requestDetailImpl();

            if (sourceRequestForQuote.Legs != null && sourceRequestForQuote.Legs.Count > 0)
            {
                var legsArray = new optionDetailImpl[sourceRequestForQuote.Legs.Count];
                var legCount  = 0;
                foreach (var leg in sourceRequestForQuote.Legs)
                {
                    legsArray[legCount++] = CreateServiceOptionLegFromRequestForQuoteLeg(leg);
                }
                serviceRequestToCreate.legs = new optionDetailListImpl()
                {
                    optionDetailList = legsArray
                };
            }

            serviceRequestToCreate.bookCode   = sourceRequestForQuote.BookCode;
            serviceRequestToCreate.request    = sourceRequestForQuote.Request;
            serviceRequestToCreate.identifier = sourceRequestForQuote.Identifier;
            serviceRequestToCreate.clientId   = sourceRequestForQuote.Client.Identifier;
            serviceRequestToCreate.isOTC      = sourceRequestForQuote.IsOTC;
            serviceRequestToCreate.status     = sourceRequestForQuote.Status.ToString();         //6

            serviceRequestToCreate.tradeDate          = sourceRequestForQuote.TradeDate.ToShortDateString();
            serviceRequestToCreate.expiryDate         = sourceRequestForQuote.ExpiryDate.ToShortDateString();     //8
            serviceRequestToCreate.dayCountConvention = sourceRequestForQuote.DayCountConvention;

            serviceRequestToCreate.lotSize    = sourceRequestForQuote.LotSize;
            serviceRequestToCreate.multiplier = sourceRequestForQuote.Multiplier;
            serviceRequestToCreate.contracts  = sourceRequestForQuote.Contracts;
            serviceRequestToCreate.quantity   = sourceRequestForQuote.Quantity;           //12

            serviceRequestToCreate.notionalMillions = sourceRequestForQuote.NotionalMillions;
            serviceRequestToCreate.notionalFXRate   = sourceRequestForQuote.NotionalFXRate;
            serviceRequestToCreate.notionalCurrency = sourceRequestForQuote.NotionalCurrency.ToString();             //15

            serviceRequestToCreate.delta = sourceRequestForQuote.Delta;
            serviceRequestToCreate.gamma = sourceRequestForQuote.Gamma;
            serviceRequestToCreate.vega  = sourceRequestForQuote.Vega;
            serviceRequestToCreate.theta = sourceRequestForQuote.Theta;
            serviceRequestToCreate.rho   = sourceRequestForQuote.Rho;           //20

            serviceRequestToCreate.deltaNotional = sourceRequestForQuote.DeltaNotional;
            serviceRequestToCreate.gammaNotional = sourceRequestForQuote.GammaNotional;
            serviceRequestToCreate.vegaNotional  = sourceRequestForQuote.VegaNotional;
            serviceRequestToCreate.thetaNotional = sourceRequestForQuote.ThetaNotional;
            serviceRequestToCreate.rhoNotional   = sourceRequestForQuote.RhoNotional;           //25

            serviceRequestToCreate.deltaShares = sourceRequestForQuote.DeltaShares;
            serviceRequestToCreate.gammaShares = sourceRequestForQuote.GammaShares;
            serviceRequestToCreate.vegaShares  = sourceRequestForQuote.VegaShares;
            serviceRequestToCreate.thetaShares = sourceRequestForQuote.ThetaShares;
            serviceRequestToCreate.rhoShares   = sourceRequestForQuote.RhoShares;           //30

            serviceRequestToCreate.askFinalAmount       = sourceRequestForQuote.AskFinalAmount;
            serviceRequestToCreate.askFinalPercentage   = sourceRequestForQuote.AskFinalPercentage;
            serviceRequestToCreate.askImpliedVol        = sourceRequestForQuote.AskImpliedVol;
            serviceRequestToCreate.askPremiumAmount     = sourceRequestForQuote.AskPremiumAmount;
            serviceRequestToCreate.askPremiumPercentage = sourceRequestForQuote.AskPremiumPercentage;             //35

            serviceRequestToCreate.bidFinalAmount       = sourceRequestForQuote.BidFinalAmount;
            serviceRequestToCreate.bidFinalPercentage   = sourceRequestForQuote.BidFinalPercentage;
            serviceRequestToCreate.bidImpliedVol        = sourceRequestForQuote.BidImpliedVol;
            serviceRequestToCreate.bidPremiumAmount     = sourceRequestForQuote.BidPremiumAmount;
            serviceRequestToCreate.bidPremiumPercentage = sourceRequestForQuote.BidPremiumPercentage;             //40

            serviceRequestToCreate.premiumAmount     = sourceRequestForQuote.PremiumAmount;
            serviceRequestToCreate.premiumPercentage = sourceRequestForQuote.PremiumPercentage;
            serviceRequestToCreate.impliedVol        = sourceRequestForQuote.ImpliedVol;      //43

            serviceRequestToCreate.salesCreditAmount     = sourceRequestForQuote.SalesCreditAmount;
            serviceRequestToCreate.salesCreditPercentage = sourceRequestForQuote.SalesCreditPercentage;
            serviceRequestToCreate.salesCreditCurrency   = sourceRequestForQuote.SalesCreditCurrency.ToString();
            serviceRequestToCreate.salesCreditFXRate     = sourceRequestForQuote.SalesCreditFXRate;         //47

            serviceRequestToCreate.premiumSettlementCurrency     = sourceRequestForQuote.PremiumSettlementCurrency.ToString();
            serviceRequestToCreate.premiumSettlementDate         = sourceRequestForQuote.PremiumSettlementDate.ToShortDateString();
            serviceRequestToCreate.premiumSettlementDaysOverride = sourceRequestForQuote.PremiumSettlementDaysOverride;
            serviceRequestToCreate.premiumSettlementFXRate       = sourceRequestForQuote.PremiumSettlementFXRate;       //51

            serviceRequestToCreate.salesComment  = sourceRequestForQuote.SalesComment;
            serviceRequestToCreate.traderComment = sourceRequestForQuote.TraderComment;
            serviceRequestToCreate.clientComment = sourceRequestForQuote.ClientComment;             //54

            serviceRequestToCreate.hedgePrice   = sourceRequestForQuote.HedgePrice;
            serviceRequestToCreate.hedgeType    = sourceRequestForQuote.HedgeType.ToString();
            serviceRequestToCreate.totalPremium = sourceRequestForQuote.TotalPremium;
            serviceRequestToCreate.pickedUpBy   = sourceRequestForQuote.PickedUpBy;           //58

            return(serviceRequestToCreate);
        }
Beispiel #2
0
        /// <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);
        }