internal ElementReferenceArrayChainTickers(string underlier, uint numPoints, string strDtExp, OptionalityEnum optionality)
            : base("CHAIN_TICKERS", new List<Element>())
        {
            //assume that the underlier takes the form "ABC US EQUITY"
            string ticker = underlier.Substring(0, underlier.IndexOf(' '));

            DateTime dtExp;
            if (string.IsNullOrWhiteSpace(strDtExp))
                dtExp = DateTime.Today.AddMonths(1).AddDays(-DateTime.Today.Day).AddDays(20); //assume the 20th of the month
            else if (strDtExp.Length == 8)
                dtExp = DateTime.ParseExact(strDtExp, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
            else if (strDtExp.Length == 6)
                dtExp = DateTime.ParseExact(strDtExp + "20", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); //assume the 20th of the month
            else if (strDtExp[strDtExp.Length - 1] == 'F')
            {
                uint numMonths = uint.Parse(strDtExp.Substring(0, strDtExp.Length - 1));
                dtExp = DateTime.Today.AddMonths((int)numMonths).AddDays(-DateTime.Today.Day).AddDays(20); //assume the 20th of the month
            }
            else
                throw new NotImplementedException("BEmu.ReferenceDataRequest.ElementReferenceArrayChainTickers: unable to determine the dtExp");

            int strike = Types.RandomDataGenerator.Strike();
            for (int count = 0; count < numPoints; count++, strike += 5)
            {
                //string optionTicker = string.Format("{0} US {1:MM/dd/yy} {2}{3}", ticker, dtExp, (char)optionality, strike);

                Element elm = new ElementReferenceArrayChainTickersItem(ticker, dtExp, optionality, strike);

                base._values.Add(elm);
            }
        }
        internal ElementReferenceArrayChainTickers(string underlier, uint numPoints, string strDtExp, OptionalityEnum optionality) : base("CHAIN_TICKERS", new List <Element>())
        {
            //assume that the underlier takes the form "ABC US EQUITY"
            string ticker = underlier.Substring(0, underlier.IndexOf(' '));

            DateTime dtExp;

            if (string.IsNullOrWhiteSpace(strDtExp))
            {
                dtExp = DateTime.Today.AddMonths(1).AddDays(-DateTime.Today.Day).AddDays(20); //assume the 20th of the month
            }
            else if (strDtExp.Length == 8)
            {
                dtExp = DateTime.ParseExact(strDtExp, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
            }
            else if (strDtExp.Length == 6)
            {
                dtExp = DateTime.ParseExact(strDtExp + "20", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); //assume the 20th of the month
            }
            else if (strDtExp[strDtExp.Length - 1] == 'F')
            {
                uint numMonths = uint.Parse(strDtExp.Substring(0, strDtExp.Length - 1));
                dtExp = DateTime.Today.AddMonths((int)numMonths).AddDays(-DateTime.Today.Day).AddDays(20); //assume the 20th of the month
            }
            else
            {
                throw new NotImplementedException("BEmu.ReferenceDataRequest.ElementReferenceArrayChainTickers: unable to determine the dtExp");
            }

            int strike = Types.RandomDataGenerator.Strike();

            for (int count = 0; count < numPoints; count++, strike += 5)
            {
                //string optionTicker = string.Format("{0} US {1:MM/dd/yy} {2}{3}", ticker, dtExp, (char)optionality, strike);

                Element elm = new ElementReferenceArrayChainTickersItem(ticker, dtExp, optionality, strike);

                base._values.Add(elm);
            }
        }