Exemplo n.º 1
0
        public void CanGetSeries()
        {
            const string response =
                @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<seriess realtime_start=""2012-04-26"" realtime_end=""2012-04-26"">
  <series id=""CPIAUCNS"" realtime_start=""2012-04-26"" realtime_end=""2012-04-26"" title=""Consumer Price Index for All Urban Consumers: All Items"" observation_start=""1913-01-01"" observation_end=""2012-03-01"" frequency=""Monthly"" frequency_short=""M"" units=""Index 1982-84=100"" units_short=""Index 1982-84=100"" seasonal_adjustment=""Not Seasonally Adjusted"" seasonal_adjustment_short=""NSA"" last_updated=""2012-04-13 08:53:00-05"" popularity=""78"" notes=""Handbook of Methods - (http://www.bls.gov/opub/hom/pdf/homch17.pdf) Understanding the CPI: Frequently Asked Questions - (http://stats.bls.gov:80/cpi/cpifaq.htm)""/>
</seriess>";
            var downloader  = new MockDownloader(response);
            var fred        = new Fred("key", downloader);
            var series      = fred.GetSeries("CPIAUCNS");
            var expectedUrl = "http://api.stlouisfed.org/fred/series?api_key=key&series_id=CPIAUCNS" + RealtimeNow;

            Assert.AreEqual(expectedUrl, downloader.Url);
            Assert.AreEqual("CPIAUCNS", series.Id);
            Assert.AreEqual("Consumer Price Index for All Urban Consumers: All Items", series.Title);
            Assert.AreEqual(new DateTime(2012, 4, 26), series.RealtimeStart);
            Assert.AreEqual(new DateTime(2012, 4, 26), series.RealtimeEnd);
            Assert.AreEqual(new DateTime(1913, 1, 1), series.ObservationStart);
            Assert.AreEqual(new DateTime(2012, 3, 1), series.ObservationEnd);
            Assert.AreEqual(Frequency.Monthly, series.Frequency);
            Assert.AreEqual("Index 1982-84=100", series.Units);
            Assert.AreEqual(false, series.SeasonalAdjusted);
            var expectedDate = new DateTime(2012, 4, 13, 13, 53, 0, DateTimeKind.Utc);

            Assert.AreEqual(expectedDate.ToLocalTime(), series.LastUpdated);
            Assert.AreEqual(78, series.Popularity);
            Assert.AreEqual("Handbook of Methods - (http://www.bls.gov/opub/hom/pdf/homch17.pdf) Understanding the CPI: Frequently Asked Questions - (http://stats.bls.gov:80/cpi/cpifaq.htm)", series.Notes);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            var fred = new Fred("661c0a90e914477da5a7518293de5f8e");

            int startYear;
            int endYear;
            int startMonth;
            int endMonth;

            int deflateYear = 0;

            var data = new Dictionary <string, IList <Observation> >
            {
            };

            //get year of rGDP dollars
            //if (data.ContainsKey("rGDP"))
            {
                //var series = data["rGDP"];

                var series = fred.GetSeries("GDPC1");
                var units  = series.Units;
                //Console.WriteLine("Units: ");
                //Console.WriteLine(units);

                //string resultString = Regex.Match(units, @"\d+").Value;
                deflateYear = extractNumber(series.Units);

                Console.WriteLine("deflate year: {0}", deflateYear.ToString());
            }

            string entry;

            WriteLine("Pushing ENTER accepts default values");
            Write("Enter start year [2005]: ");
            entry = ReadLine();
            if (entry == "")
            {
                entry = "2005";
            }
            startYear = Convert.ToInt32(entry);

            WriteLine("Enter end year [2015] ");
            Write("years must cover rGDP real year to deinflate: ");
            entry = ReadLine();
            if (entry == "")
            {
                entry = "2015";
            }
            endYear = Convert.ToInt32(entry);

            Write("Enter start month, ex. Jan = 1 or Oct = [10]: ");
            entry = ReadLine();
            if (entry == "")
            {
                entry = "10";
            }
            startMonth = Convert.ToInt32(entry);

            Write("Enter end month, ex. Jan = 1 or Oct = [10]: ");
            entry = ReadLine();
            if (entry == "")
            {
                entry = "10";
            }
            endMonth = Convert.ToInt32(entry);

            DateTime startDate = new DateTime(startYear, startMonth, 1);
            DateTime endDate   = new DateTime(endYear, endMonth, DateTime.DaysInMonth(endYear, endMonth));

            //can't use # in GetSeriesObservations.  Ignores the dates.

            //my names
            string[] dataNames = new string[] { "rGDP", "pSaveRate", "fedFundRate", "empPopRatio", "consConfIndex", "consPriceIndex", "housingSeries" };

            //online series names
            string[] obsNames = new string[] { "GDPC1", "PSAVERT", "DFF", "EMRATIO", "UMCSENT", "CP0000USM086NEST", "SPCS20RSA" };

            int dataCounter = 0;

            //create lists as FredAPI objects
            foreach (var instance in dataNames)
            {
                if (dataNames[dataCounter] == "rGDP")
                {
                    data.Add(dataNames[dataCounter], fred.GetSeriesObservations(obsNames[dataCounter], startDate, endDate).ToList());
                }
                else
                {
                    data.Add(dataNames[dataCounter], fred.GetSeriesObservations(obsNames[dataCounter], startDate, endDate, frequency: Frequency.Monthly).ToList());
                }

                dataCounter++;
            }
            ;

            //MinMaxDates(ref data);

            //convert data to sortedList (the DateTime becomes key of the SortedList), the string is the Key of the Dictionary.
            var sortedDataList = new Dictionary <string, SortedList <DateTime, double?> > {
            };

            dataCounter = 0;

            foreach (var obData in data)
            {
                var list = obData.Value;
                sortedDataList.Add(dataNames[dataCounter], new SortedList <DateTime, double?>(list.ToDictionary(x => x.Date, x => x.Value)));
                dataCounter++;
            }

            //print data before changes
            //PrintData(sortedDataList); - will crash now because of gaps in rGDP

            //insert records (into rGDP)
            //ideally might want to have this second.
            FillInGaps(ref sortedDataList);

            //identify minmax dates, and trim list, if ran before FillInGaps, rGDP doesn't populate up till HighestDate2
            MinMaxDates(ref sortedDataList);

            PrintData(sortedDataList);
            PrintDataToFile(sortedDataList, "preConversion");

            //deInflate

            deInflate(ref sortedDataList, deflateYear);

            PrintData(sortedDataList);

            PrintDataToFile(sortedDataList, "postConversion");

            parseData(sortedDataList, args);
        }
Exemplo n.º 3
0
        public void CanGetSeries()
        {
            const string response =
                @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<seriess realtime_start=""2012-04-26"" realtime_end=""2012-04-26"">
  <series id=""CPIAUCNS"" realtime_start=""2012-04-26"" realtime_end=""2012-04-26"" title=""Consumer Price Index for All Urban Consumers: All Items"" observation_start=""1913-01-01"" observation_end=""2012-03-01"" frequency=""Monthly"" frequency_short=""M"" units=""Index 1982-84=100"" units_short=""Index 1982-84=100"" seasonal_adjustment=""Not Seasonally Adjusted"" seasonal_adjustment_short=""NSA"" last_updated=""2012-04-13 08:53:00-05"" popularity=""78"" notes=""Handbook of Methods - (http://www.bls.gov/opub/hom/pdf/homch17.pdf) Understanding the CPI: Frequently Asked Questions - (http://stats.bls.gov:80/cpi/cpifaq.htm)""/>
</seriess>";
            var downloader = new MockDownloader(response);
            var fred = new Fred("key", downloader);
            var series = fred.GetSeries("CPIAUCNS");
            var expectedUrl = "http://api.stlouisfed.org/fred/series?api_key=key&series_id=CPIAUCNS" + RealtimeNow;
            Assert.AreEqual(expectedUrl, downloader.Url);
            Assert.AreEqual("CPIAUCNS", series.Id);
            Assert.AreEqual("Consumer Price Index for All Urban Consumers: All Items", series.Title);
            Assert.AreEqual(new DateTime(2012, 4, 26), series.RealtimeStart);
            Assert.AreEqual(new DateTime(2012, 4, 26), series.RealtimeEnd);
            Assert.AreEqual(new DateTime(1913, 1, 1), series.ObservationStart);
            Assert.AreEqual(new DateTime(2012, 3, 1), series.ObservationEnd);
            Assert.AreEqual(Frequency.Monthly, series.Frequency);
            Assert.AreEqual("Index 1982-84=100", series.Units);
            Assert.AreEqual(false, series.SeasonalAdjusted);
            var expectedDate = new DateTime(2012, 4, 13, 13, 53, 0, DateTimeKind.Utc);
            Assert.AreEqual(expectedDate.ToLocalTime(), series.LastUpdated);
            Assert.AreEqual(78, series.Popularity);
            Assert.AreEqual("Handbook of Methods - (http://www.bls.gov/opub/hom/pdf/homch17.pdf) Understanding the CPI: Frequently Asked Questions - (http://stats.bls.gov:80/cpi/cpifaq.htm)", series.Notes);
        }