public EntityResponse <OptionBasicInformation> GetOptionInformation(string optionNo) { EntityResponse <List <OptionBasicInformation> > r = _marketDataProvider.GetOptionBasicInformation(null, optionNo); if (!r.IsSuccess) { return(EntityResponse <OptionBasicInformation> .Error(r)); } OptionBasicInformation optionInformation = r.Entity.Single(); return(optionInformation); }
public Option GetOptionTradingInformation(string optionNo) { // Get OptionBasicInfo EntityResponse <List <OptionBasicInformation> > r = _marketDataProvider.GetOptionBasicInformation(null, optionNo); if (!r.IsSuccess) { return(null); } OptionBasicInformation optionBasicInformation = r.Entity.Single(); // Get OptionQuotation List <string> optionNums = new List <string>(); optionNums.Add(optionNo); EntityResponse <List <OptionQuotation> > optionQuotesResponse = GetOptionQuotesByOptionNumbers(optionNums); OptionQuotation optionQuotation = optionQuotesResponse.Entity.Single(); // Combine the Quotation with BasicInfo Option option = new Option(null, optionBasicInformation.OptionNumber, optionBasicInformation.OptionCode) { Name = optionBasicInformation.OptionName, OptionName = optionBasicInformation.OptionName, OpenInterest = optionBasicInformation.UncoveredPositionQuantity, SecurityCode = optionBasicInformation.OptionUnderlyingCode, PreviousClose = (double)optionBasicInformation.PreviousClosingPrice, // Additional Information from OptionBasicInformation TypeOfOption = optionBasicInformation.OptionType, LimitDownPrice = optionBasicInformation.LimitDownPrice, LimitUpPrice = optionBasicInformation.LimitUpPrice, OptionUnit = optionBasicInformation.OptionUnit, OptionUnderlyingCode = optionBasicInformation.OptionUnderlyingCode, OptionUnderlyingName = optionBasicInformation.OptionUnderlyingName, }; Mapper.Map(optionQuotation, option); return(option); }
private OptionBasicInformation ConvertExpirationDate(OptionBasicInformation basic) { //if (basic.ExpireDate.DayOfYear == 365 || basic.ExpireDate.DayOfYear == 366) //{ string expiryStr = basic.OptionCode.Substring(basic.OptionCode.IndexOf(basic.OptionType == OptionType.Call ? "C" : "P") + 1, 4); int year = 2000 + Convert.ToInt32(expiryStr.Substring(0, 2)); int month = Convert.ToInt32(expiryStr.Substring(2, 2)); DateTime date = new DateTime(year, month, 1); int nthOfThursday = 0; while (nthOfThursday < 4) { if (date.DayOfWeek == DayOfWeek.Wednesday) { nthOfThursday++; } date = date.AddDays(1); } date = date.AddDays(-1); basic.ExpireDate = date; //} return(basic); }
public List <BasePortfolioItemGroupViewModel> GetPortfolioData(string customerCode, string accountCode, string tradeAccount) { #region Fetch data OptionPositionsArguments arguments = new OptionPositionsArguments { CustomerCode = customerCode, CustomerAccountCode = accountCode }; EntityResponse <List <OptionPositionInformation> > optionPositions = _portfolioManager.GetOptionPositions(arguments); EntityResponse <List <OptionableStockPositionInformation> > stockPositions = _portfolioManager.GetOptionalStockPositions(customerCode, accountCode, tradeAccount); if (!optionPositions.IsSuccess || !stockPositions.IsSuccess || optionPositions.Entity.Count == 0) { return(new List <BasePortfolioItemGroupViewModel>()); } IEnumerable <PortfolioOption> portfolioOptions = Mapper.Map <List <OptionPositionInformation>, List <PortfolioOption> >(optionPositions.Entity); IEnumerable <PortfolioStock> portfolioStocks = Mapper.Map <List <OptionableStockPositionInformation>, List <PortfolioStock> >(stockPositions.Entity); Dictionary <string, EntityResponse <OptionChain> > optionChains = new Dictionary <string, EntityResponse <OptionChain> >(); #endregion #region Fill additional information foreach (PortfolioOption portfolioItem in portfolioOptions) { EntityResponse <List <OptionBasicInformation> > optionBasicInformation = _marketDataProviderQueryable.GetOptionBasicInformation(optionNumber: portfolioItem.OptionNumber); if (optionBasicInformation.Entity == null || !optionBasicInformation.Entity.Any()) { continue; } OptionBasicInformation basicInfo = optionBasicInformation.Entity.Single(); DateTime expiryDate = basicInfo.ExpireDate; DateAndNumberOfDaysUntil expiry = _marketWorkTimeService.GetNumberOfDaysLeftUntilExpiry(expiryDate); portfolioItem.Expiry = expiry; portfolioItem.UnderlyingCode = basicInfo.OptionUnderlyingCode; portfolioItem.UnderlyingName = basicInfo.OptionUnderlyingName; portfolioItem.StrikePrice = basicInfo.StrikePrice; EntityResponse <OptionChain> optionChain; string underlying = portfolioItem.UnderlyingCode; if (optionChains.ContainsKey(underlying)) { optionChain = optionChains[underlying]; } else { optionChain = _marketDataService.GetOptionChain(underlying); optionChains.Add(underlying, optionChain); } if (optionChain == null) { continue; } Option option = optionChain.Entity[portfolioItem.OptionNumber]; if (option == null) { portfolioItem.UnderlyingCode = null; continue; } Greeks greeks = option.Greeks ?? new Greeks(); portfolioItem.LastPrice = (decimal)option.LatestTradedPrice; //optionChain.Entity.UnderlyingCurrentPrice; portfolioItem.PremiumMultiplier = option.RootPair.PremiumMultiplier; portfolioItem.Greeks = new PortfolioGreeks(portfolioItem.OptionAvailableQuantity, greeks, portfolioItem.OptionSide, portfolioItem.PremiumMultiplier); } portfolioOptions = portfolioOptions.Where(x => x.UnderlyingCode != null); foreach (PortfolioStock portfolioStock in portfolioStocks) { SecurityQuotation quote = _marketDataService.GetSecurityQuotation(portfolioStock.SecurityCode); portfolioStock.LastPrice = quote.LastPrice; portfolioStock.StockMarketValue = quote.LastPrice * portfolioStock.AvailableBalance; portfolioStock.Greeks = new PortfolioGreeks(portfolioStock.AdjustedAvailableQuantity, new Greeks() { Delta = 1 }, portfolioStock.OptionSide, 1); } #endregion IEnumerable <BasePortfolioItemGroup> groupedByStrategies = _strategyService.GetPortfolioItemsGroupedByStrategy(portfolioOptions, portfolioStocks); List <BasePortfolioItemGroupViewModel> result = Mapper.Map <IEnumerable <BasePortfolioItemGroup>, IEnumerable <BasePortfolioItemGroupViewModel> >(groupedByStrategies) .ToList(); return(result); }
public OptionBasicInformationViewModel GetOptionBasicInformation(string optionNo) { OptionBasicInformation r = _marketDataService.GetOptionInformation(optionNo); return(Mapper.Map <OptionBasicInformation, OptionBasicInformationViewModel>(r)); }