/// <summary>
        /// Checks if there is fundamental data for
        /// </summary>
        /// <param name="ticker">The ticker.</param>
        /// <param name="date">The date.</param>
        /// <param name="mapFile">The map file.</param>
        /// <param name="fineAvailableDates"></param>
        /// <param name="fineFundamentalFolder">The fine fundamental folder.</param>
        /// <returns></returns>
        private static bool CheckFundamentalData(DateTime date, MapFile mapFile, IEnumerable <DateTime> fineAvailableDates, DirectoryInfo fineFundamentalFolder)
        {
            // Check if security has fine file within a trailing month for a date-ticker set.
            // There are tricky cases where a folder named by a ticker can have data for multiple securities.
            // e.g  GOOG -> GOOGL (GOOG T1AZ164W5VTX) / GOOCV -> GOOG (GOOCV VP83T1ZUHROL) case.
            // The fine data in the 'fundamental/fine/goog' folder will be for 'GOOG T1AZ164W5VTX' up to the 2014-04-02 and for 'GOOCV VP83T1ZUHROL' afterward.
            // Therefore, date before checking if the security has fundamental data for a date, we need to filter the fine files the map's first date.
            var firstDate = mapFile?.FirstDate ?? DateTime.MinValue;
            var hasFundamentalDataForDate = fineAvailableDates.Where(d => d >= firstDate).Any(d => date.AddMonths(-1) <= d && d <= date);

            // The following section handles mergers and acquisitions cases.
            // e.g. YHOO -> AABA (YHOO R735QTJ8XC9X)
            // The dates right after the acquisition, valid fine fundamental data for AABA are still under the former ticker folder.
            // Therefore if no fine fundamental data is found in the 'fundamental/fine/aaba' folder, it searches into the 'yhoo' folder.
            if (mapFile != null && mapFile.Count() > 2 && !hasFundamentalDataForDate)
            {
                var previousTicker = mapFile.LastOrDefault(m => m.Date < date)?.MappedSymbol;
                if (previousTicker != null)
                {
                    var previousTickerFineFundamentalFolder = Path.Combine(fineFundamentalFolder.FullName, previousTicker);
                    if (Directory.Exists(previousTickerFineFundamentalFolder))
                    {
                        var previousTickerFineAvailableDates = Directory.GetFiles(previousTickerFineFundamentalFolder, "*.zip")
                                                               .Select(f => DateTime.ParseExact(Path.GetFileNameWithoutExtension(f), DateFormat.EightCharacter, CultureInfo.InvariantCulture))
                                                               .ToList();
                        hasFundamentalDataForDate = previousTickerFineAvailableDates.Where(d => d >= firstDate).Any(d => date.AddMonths(-1) <= d && d <= date);
                    }
                }
            }

            return(hasFundamentalDataForDate);
        }