Tuple<DateTime, double> GetVol(int cur_index, IncrementData inc_data) { IList<DateTime> key_list = this.ActiveDays.Keys; int start_index = Math.Max(cur_index - VOL_DAYS + 1, 0); List<double> values = new List<double>(); for (int i = start_index; i <= cur_index; ++i) { DateTime dt_cur = key_list[i]; if (inc_data.Kospi.ContainsKey(dt_cur)) { values.Add(inc_data.Kospi[dt_cur]); } } if (values.Count <= 1) { return null; } double stdev = GetStandardDeviation(values); return new Tuple<DateTime, double> (key_list[cur_index], stdev * Math.Sqrt(252)); }
void SetKospiVolData(IncrementData inc_data) { this.Kospi = new SortedList<DateTime, double>(); IList<DateTime> key_list = this.ActiveDays.Keys; for (int i = 0; i < key_list.Count; ++i) { Tuple<DateTime, double> vol = GetVol(i, inc_data); if (vol != null) { this.Kospi.Add(vol.Item1, vol.Item2); //logger.Info("{0} - {1:n3}", vol.Item1, vol.Item2); } } }
public VolData(DataFromDB data_from_db, IncrementData inc_data) { this.ActiveDays = data_from_db.ActiveDays; SetKospiVolData(inc_data); }