// I have to now test all of the MarketDataHelper methods.  Also, I WebRequest is obsolete so I will have to rewrite them somehow to use HttpClient        
// uses proxy - not working        MarketDataHelper.GetWorldTime();

// GetPremarketData : working
      // PremarketElements elements = MarketDataHelper.GetPremarketData();
      // foreach(PremarketElement element in elements)
      // {
      //   Console.WriteLine($"Market: {element.Market} {element.Timestamp} ");
      // }

// EarningsAnnouncements : working
      // EarningsAnnouncements earningsAnnouncements = MarketDataHelper.GetEarningsAnnouncements("AAPL");
      // foreach(EarningsAnnouncement ea in earningsAnnouncements)
      // {
      //   MDTrace.WriteLine(LogLevel.DEBUG,$"Symbol:{ea.Symbol} Date:{ea.Date.ToShortDateString()} Estimate:{Utility.FormatCurrency(ea.Estimate)}");
      // }

//GetZacksRank : working
      // ZacksRank zacksRank = MarketDataHelper.GetZacksRank("AAPL");
      // MDTrace.WriteLine(LogLevel.DEBUG,$"Zacks Rank: {zacksRank.Symbol} {zacksRank.Rank}");

// GetSplits
    //  Splits splits = MarketDataHelper.GetSplits();
    //  foreach(Split split in splits)
    //  {
    //    MDTrace.WriteLine(LogLevel.DEBUG,$"Symbol:{split.Symbol} Exchange:{split.Exchange} EffectiveDate:{split.EffectiveDate} Ratio:{split.Ratio} ");
    //  }

// 	GetGDPPerCapita	- working
    // EconomicIndicators economicIndicators = MarketDataHelper.GetGDPPerCapita();
    // foreach(EconomicIndicator economicIndicator in economicIndicators)
    // {
    //   String message=$"Source:{economicIndicator.Source} CountryName:{economicIndicator.CountryName} CountryCode:{economicIndicator.CountryName} IndicatorName{economicIndicator.IndicatorName} IndicatorCode:{economicIndicator.IndicatorCode} IndicatorValue:{economicIndicator.IndicatorValue} Year:{economicIndicator.Year}";
    //   MDTrace.WriteLine(LogLevel.DEBUG,message);      
    // }

/// GetDividendHistory - working
      // DividendHistory history = MarketDataHelper.GetDividendHistory("MRK");
      // String json = JsonSerializer.Serialize<DividendHistory>(history);
      // MDTrace.WriteLine(json);

// AnalystRatings - working
      // AnalystRatings analystRatings = MarketDataHelper.GetLatestAnalystRatings();
      // if(null!=analystRatings)
      // {
      //   String json = JsonSerializer.Serialize<AnalystRatings>(analystRatings,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }

// GetAnalystRatingsMarketBeat - working
      // AnalystRatings analystRatings = MarketDataHelper.GetAnalystRatingsMarketBeat("MRK");
      // if(null!=analystRatings)
      // {
      //   String json = JsonSerializer.Serialize<AnalystRatings>(analystRatings,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }      

// GetCIK - works
      //  String cik=MarketDataHelper.GetCIK("MRK");
      //  MDTrace.WriteLine($"{cik}");

// GetInsiderTransactions - works 
      // InsiderTransactions insiderTransactions = MarketDataHelper.GetInsiderTransactions("AAPL",30);
      // if(null!=insiderTransactions)
      // {
      //   String json = JsonSerializer.Serialize<InsiderTransactions>(insiderTransactions,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }

// GetInsiderTransactions - works 
      // InsiderTransactions insiderTransactions = MarketDataHelper.GetInsiderTransactionsYear("AAPL",2023);
      // if(null!=insiderTransactions)
      // {
      //   String json = JsonSerializer.Serialize<InsiderTransactions>(insiderTransactions,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }

// GetSECFilings - works
      // SECFilings secFilings = MarketDataHelper.GetSECFilings("MRK");
      // MDTrace.WriteLine(LogLevel.DEBUG,$"Got {secFilings.Count} filings.");

// GetYieldCurve - works
      // YieldCurve yieldCurve = MarketDataHelper.GetYieldCurve(2024);
      // if(null!=yieldCurve)
      // {
      //   String json = JsonSerializer.Serialize<YieldCurve>(yieldCurve,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }      

// GetETFHoldings - works
      // ETFHoldings etfHoldings = MarketDataHelper.GetETFHoldings("JFNNX");
      // if(null!=etfHoldings)
      // {
      //   String json = JsonSerializer.Serialize<ETFHoldings>(etfHoldings,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyProfile - works
      // CompanyProfile companyProfile = MarketDataHelper.GetCompanyProfile("MRK");
      // if(null!=companyProfile)
      // {
      //   String json = JsonSerializer.Serialize<CompanyProfile>(companyProfile,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyProfileYahoo - works
      // CompanyProfile companyProfile = MarketDataHelper.GetCompanyProfileYahoo("MRK");
      // if(null!=companyProfile)
      // {
      //   String json = JsonSerializer.Serialize<CompanyProfile>(companyProfile,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyProfileMorningStar - works
      // CompanyProfile companyProfile = MarketDataHelper.GetCompanyProfileMorningStar("MRK","xnys");
      // if(null!=companyProfile)
      // {
      //   String json = JsonSerializer.Serialize<CompanyProfile>(companyProfile,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyProfileYahoo - works
      // CompanyProfile companyProfile =  MarketDataHelper.GetCompanyProfileYahoo("MRK");
      // if(null!=companyProfile)
      // {
      //   String json = JsonSerializer.Serialize<CompanyProfile>(companyProfile,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyHeadlinesSeekingAlpha - works
      // Headlines headlines = MarketDataHelper.GetCompanyHeadlinesSeekingAlpha("GLD");
      // if(null!=headlines)
      // {
      //   String json = JsonSerializer.Serialize<Headlines>(headlines,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyHeadlinesMarketWatch - gets unauthorized
      // Headlines headlines = MarketDataHelper.GetCompanyHeadlinesMarketWatch("SPY");
      // if(null!=headlines)
      // {
      //   String json = JsonSerializer.Serialize<Headlines>(headlines,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetCompanyHeadlinesNASDAQ - works
      // Headlines headlines = MarketDataHelper.GetCompanyHeadlinesNASDAQ("SPY");
      // if(null!=headlines)
      // {
      //   String json = JsonSerializer.Serialize<Headlines>(headlines,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetConsumerPriceIndices - works
      // PriceIndices priceIndices = MarketDataHelper.GetConsumerPriceIndices();
      // if(null!=priceIndices)
      // {
      //   String json = JsonSerializer.Serialize<PriceIndices>(priceIndices,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetAnalystPriceTarget - works
      // AnalystPriceTarget analystPriceTarget = MarketDataHelper.GetAnalystPriceTarget("MRK");
      // if(null!=analystPriceTarget)
      // {
      //   String json = JsonSerializer.Serialize<AnalystPriceTarget>(analystPriceTarget,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

      //   public static Dictionary<TimeSeriesElement.ElementType, TimeSeriesCollection> GetHistoricalValues(String symbol)

// GetHistoricalValues - works
    //  Dictionary<TimeSeriesElement.ElementType, TimeSeriesCollection> series = MarketDataHelper.GetHistoricalValues("MRK");
    //   if(null!=series)
    //   {
    //     String json = JsonSerializer.Serialize<Dictionary<TimeSeriesElement.ElementType, TimeSeriesCollection>>(series,
    //     new JsonSerializerOptions()
    //     {
    //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
    //     });  
    //     MDTrace.WriteLine(json);      
    //   }    

// GetCashflowStatement - works
      // List<CashflowStatement> cashflowStatements = MarketDataHelper.GetCashflowStatement("NVDA",CashflowStatement.PeriodType.Annual);
      // if(null!=cashflowStatements)
      // {
      //   String json = JsonSerializer.Serialize<List<CashflowStatement>>(cashflowStatements,
      //   new JsonSerializerOptions()
      //   {
      //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //   });  
      //   MDTrace.WriteLine(json);      
      // }    

// GetIncomeStatement - works
        // List<IncomeStatement> incomeStatements = MarketDataHelper.GetIncomeStatement("NVDA",IncomeStatement.PeriodType.Annual);
        // if(null!=incomeStatements)
        // {
        //   String json = JsonSerializer.Serialize<List<IncomeStatement>>(incomeStatements,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }    

// GetIncomeStatementFinViz - works
        // List<IncomeStatement> incomeStatements = MarketDataHelper.GetIncomeStatementFinViz("NVDA",IncomeStatement.PeriodType.Annual);
        // if(null!=incomeStatements)
        // {
        //   String json = JsonSerializer.Serialize<List<IncomeStatement>>(incomeStatements,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }    
// GetIncomeStatementNASDAQ - works
        // List<IncomeStatement> incomeStatements = MarketDataHelper.GetIncomeStatementNASDAQ("NVDA",IncomeStatement.PeriodType.Annual);
        // if(null!=incomeStatements)
        // {
        //   String json = JsonSerializer.Serialize<List<IncomeStatement>>(incomeStatements,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }          

// GetBalanceSheet - works
        // List<BalanceSheet> balanceSheets = MarketDataHelper.GetBalanceSheet("NVDA",BalanceSheet.PeriodType.Annual);
        // if(null!=balanceSheets)
        // {
        //   String json = JsonSerializer.Serialize<List<BalanceSheet>>(balanceSheets,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }     

// GetBalanceSheetFinViz - works
        // List<BalanceSheet> balanceSheets = MarketDataHelper.GetBalanceSheetFinViz("NVDA",BalanceSheet.PeriodType.Annual);
        // if(null!=balanceSheets)
        // {
        //   String json = JsonSerializer.Serialize<List<BalanceSheet>>(balanceSheets,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }     

// GetBalanceSheetNASDAQ - works
        // List<BalanceSheet> balanceSheets = MarketDataHelper.GetBalanceSheetNASDAQ("NVDA",BalanceSheet.PeriodType.Annual);
        // if(null!=balanceSheets)
        // {
        //   String json = JsonSerializer.Serialize<List<BalanceSheet>>(balanceSheets,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }              

// GetCurrencyConversion - works
        // CurrencyConversionCollection collection = MarketDataHelper.GetCurrencyConversion("USD",DateTime.Parse("24-03-2025")); 
        // if(null!=collection)
        // {
        //   String json = JsonSerializer.Serialize<List<CurrencyConversionElement>>((List<CurrencyConversionElement>)collection,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }         

// GetFundamentalFinViz - works
        // Fundamental fundamental = MarketDataHelper.GetFundamentalFinViz("NVDA");    
        // if(null!=fundamental)
        // {
        //   String json = JsonSerializer.Serialize<Fundamental>(fundamental,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }                

// GetFundamental - works
        // Fundamental fundamental = MarketDataHelper.GetFundamental("NVDA");    
        // if(null!=fundamental)
        // {
        //   String json = JsonSerializer.Serialize<Fundamental>(fundamental,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // } 
        
// GetLatestPrice - works        
		    // Price price = MarketDataHelper.GetLatestPrice("NVDA"); 
        // if(null!=price)
        // {
        //   String json = JsonSerializer.Serialize<Price>(price,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // } 

// GetLatestPriceYahoo - works
		    // Price price = MarketDataHelper.GetLatestPriceYahoo("NVDA"); 
        // if(null!=price)
        // {
        //   String json = JsonSerializer.Serialize<Price>(price,
        //   new JsonSerializerOptions()
        //   {
        //     NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
        //   });  
        //   MDTrace.WriteLine(json);      
        // }        

//GetLatestPriceBigCharts - works
      //   Price price = MarketDataHelper.GetLatestPriceBigCharts("NVDA"); 
      //   if(null!=price)
      //   {
      //     String json = JsonSerializer.Serialize<Price>(price,
      //     new JsonSerializerOptions()
      //     {
      //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //     });  
      //     MDTrace.WriteLine(json);      
      //   }             

// GetLatestPriceGoogle - works
      //   Price price = MarketDataHelper.GetLatestPriceGoogle("NVDA"); 
      //   if(null!=price)
      //   {
      //     String json = JsonSerializer.Serialize<Price>(price,
      //     new JsonSerializerOptions()
      //     {
      //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //     });  
      //     MDTrace.WriteLine(json);      
      //   }       

// GetPricesAsOf - works
      // Prices prices = MarketDataHelper.GetPricesAsOf("NVDA", DateTime.Parse("03/25/2025"),DateTime.Parse("03/02/2025"));                   
      //   if(null!=prices)
      //   {
      //     String json = JsonSerializer.Serialize<Prices>(prices,
      //     new JsonSerializerOptions()
      //     {
      //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //     });  
      //     MDTrace.WriteLine(json);      
      //   }       

// GetPriceAsOf - works
      //   Price price = MarketDataHelper.GetPriceAsOf("NVDA",DateTime.Parse("03/24/2025")); 
      //   if(null!=price)
      //   {
      //     String json = JsonSerializer.Serialize<Price>(price,
      //     new JsonSerializerOptions()
      //     {
      //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //     });  
      //     MDTrace.WriteLine(json);      
      //   }   

// GetDailyPrice - works
      //   Price price = MarketDataHelper.GetDailyPrice("NVDA",DateTime.Parse("03/24/2025"));
      //   if(null!=price)
      //   {
      //     String json = JsonSerializer.Serialize<Price>(price,
      //     new JsonSerializerOptions()
      //     {
      //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //     });  
      //     MDTrace.WriteLine(json);      
      //   }     

      // Prices prices = MarketDataHelper.GetDailyPrices("NVDA", DateTime.Parse("03/25/2025"),DateTime.Parse("03/02/2025"));        
      //   if(null!=prices)
      //   {
      //     String json = JsonSerializer.Serialize<Prices>(prices,
      //     new JsonSerializerOptions()
      //     {
      //       NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals
      //     });  
      //     MDTrace.WriteLine(json);      
      //   } 
