/// <summary>
 ///
 /// </summary>
 public TimeSeries()
 {
     Name             = "Series1";
     IntegrationOrder = 1;
     Frequency        = DataFrequency.Daily;
     _timeDataDict    = new SortedList <DateTime, T>();
 }
        public TimeSeries(IEnumerable <TSDataPoint <T> > datapoints, string name, uint integrationOrder, DataFrequency freq = DataFrequency.Daily)
        {
            Name             = "Series1";
            IntegrationOrder = integrationOrder;
            Frequency        = freq;
            _timeDataDict    = new SortedList <DateTime, T>();

            foreach (var d in datapoints)
            {
                _timeDataDict.Add(d.Date, d.Value);
            }
        }
        private List <DataFrequency> SortFrequenciesByDescending(Dictionary <string, int> dict)
        {
            List <DataFrequency> data = new List <DataFrequency>();

            foreach (KeyValuePair <string, int> entry in dict)
            {
                DataFrequency dataPoint = new DataFrequency(entry.Key, entry.Value);
                data.Add(dataPoint);
            }

            data = data.OrderByDescending(location => location.frequency).ToList();
            return(data);
        }
Example #4
0
        /// <summary>
        /// Create a single variable time series object with a specific length, given an enumerable sequence with 'infinite' length
        /// </summary>
        /// <param name="data">Infinite enumerable sequence</param>
        /// <param name="integrationOrder">The time series integration order, in finance this translates to 0 for returns series and 1 for a price series</param>
        /// <param name="numperiods">The length (number of time periods) of the time series, takes the first n samples from the enumerable sequence</param>
        /// <param name="freq">The frequency of the data, i.e. Daily, Weekly, Monthly etc</param>
        /// <returns>A single variable time series object that implements the generic ITimeSeries interface</returns>
        public static ITimeSeries <T> Create(IEnumerable <T> data, uint integrationOrder, int numperiods, DataFrequency freq)
        {
            string name = "series1";
            List <TSDataPoint <T> > datapoints = new List <TSDataPoint <T> >();

            switch (freq)
            {
            case DataFrequency.Monthly:
            {
                int count = 0;
                // Use TakeWhile ??
                foreach (var d in data)
                {
                    datapoints.Add(new TSDataPoint <T>(DateTime.Today.AddMonths(-count), d));
                    count++;
                    if (count >= numperiods)
                    {
                        break;
                    }
                }
            }
            break;

            case DataFrequency.Daily:
            {
                int count = 0;
                foreach (var d in data)
                {
                    datapoints.Add(new TSDataPoint <T>(DateTime.Today.AddDays(-count), d));
                    count++;
                    if (count >= numperiods)
                    {
                        break;
                    }
                }
            }
            break;

            default:
            {
                int count = 0;
                foreach (var d in data)
                {
                    datapoints.Add(new TSDataPoint <T>(DateTime.Today.AddDays(-count), d));
                    count++;
                    if (count >= numperiods)
                    {
                        break;
                    }
                }
            }
            break;
            }

            return(new TimeSeries <T>(datapoints, name, integrationOrder, freq));
        }
Example #5
0
 public static ITimeSeries <T> Create(IEnumerable <TSDataPoint <T> > timeseries, uint integrationOrder = 1, DataFrequency frequency = DataFrequency.Daily)
 {
     return(new TimeSeries <T>(timeseries, "Series1", integrationOrder, frequency));
 }
Example #6
0
            public static ITimeSeries <double> RandomWalk(double drift, double stepsigma, int numsteps = 100, DataFrequency freq = DataFrequency.Daily)
            {
                var norm = new Normal(drift, stepsigma);

                norm.RandomSource = new Random(RandomSeed);
                var data = norm.Samples();

                var walk = new List <double>();
                var last = 1.0;

                walk.Add(last);

                int count = 0;

                // Use TakeWhile ??
                foreach (var d in data)
                {
                    last = last + d;
                    walk.Add(last);
                    count++;
                    if (count >= numsteps)
                    {
                        break;
                    }
                }

                return(TimeSeriesFactory <double> .Create(walk, integrationOrder : 1, freq : freq));
            }
Example #7
0
            public static ITimeSeries <double> Gaussian(double mu, double sigma, int numperiods = 100, DataFrequency freq = DataFrequency.Daily)
            {
                var norm = new Normal(mu, sigma);

                norm.RandomSource = new Random(RandomSeed);
                var data = norm.Samples();

                return(TimeSeriesFactory <double> .Create(data, 0, numperiods, freq));
            }