public IncrementData(DataFromDB data_from_db)
 {
     this.ActiveDays = data_from_db.ActiveDays;
       Init(data_from_db);
 }
        public Weight(
      DataFromDB data_from_db, 
      RangeData rng_data,
      VolData vol_data)
        {
            this.ActiveDays = data_from_db.ActiveDays;

              this.KospiBasic = new SortedList<DateTime, double>();
              this.KospiPriceBoost = new SortedList<DateTime, double>();
              this.KospiVolBoost = new SortedList<DateTime, double>();
              this.KospiWeight = new SortedList<DateTime, double>();
              this.KtbWeight = new SortedList<DateTime, double>();
              this.UsdkrwWeight = new SortedList<DateTime, double>();

              this.KospiVolAdjustedWeight = new SortedList<DateTime, double>();
              this.KtbVolAdjustedWeight = new SortedList<DateTime, double>();
              this.UsdkrwVolAdjustedWeight = new SortedList<DateTime, double>();

              foreach (DateTime cur_dt in this.ActiveDays.Keys)
              {
            if (rng_data.Ktb.ContainsKey(cur_dt))
            {
              double bond_pos = rng_data.Ktb[cur_dt];
              double bond_reverse = 1.0 - bond_pos;
              double basic_weight = bond_reverse *
            (100 - MacroAAMagicNumber.AGE) / 100;

              if (rng_data.Kospi.ContainsKey(cur_dt))
              {
            double kospi_pos = rng_data.Kospi[cur_dt];
            double kospi_price_boost = 1.5 - kospi_pos;

            if (vol_data.Kospi.ContainsKey(cur_dt))
            {
              double kospi_vol_boost = MacroAAMagicNumber.KOSPI_VOL_PIVOT +
                1 - vol_data.Kospi[cur_dt];

              double kospi_weight = basic_weight * kospi_price_boost *
                kospi_vol_boost;

              if (rng_data.Usdkrw.ContainsKey(cur_dt))
              {
                double usdkrw_pos = rng_data.Usdkrw[cur_dt];
                double usdkrw_weight = bond_pos *
                  MacroAAMagicNumber.USDKRW_MAX_WEIGHT * (1.0 - usdkrw_pos);

                double bond_weight = 1.0 - kospi_weight - usdkrw_weight;

                this.KospiBasic.Add(cur_dt, basic_weight);
                this.KospiPriceBoost.Add(cur_dt, kospi_price_boost);
                this.KospiVolBoost.Add(cur_dt, kospi_vol_boost);
                this.KospiWeight.Add(cur_dt, kospi_weight);
                this.UsdkrwWeight.Add(cur_dt, usdkrw_weight);
                this.KtbWeight.Add(cur_dt, bond_weight);

                double bond_weight_per_vol =
                  bond_weight / MacroAAMagicNumber.BOND_VOL_PIVOT;
                double kospi_weight_per_vol =
                  kospi_weight / MacroAAMagicNumber.KOSPI_VOL_PIVOT;
                double usdkrw_weight_per_vol =
                  usdkrw_weight / MacroAAMagicNumber.USDKRW_VOL_PIVOT;

                double weight_per_vol_sum = bond_weight_per_vol +
                  kospi_weight_per_vol + usdkrw_weight_per_vol;

                double bond_vol_adj_weight =
                  bond_weight_per_vol / weight_per_vol_sum;
                double kospi_vol_adj_weight =
                  kospi_weight_per_vol / weight_per_vol_sum;
                double usdkrw_vol_adj_weight =
                  usdkrw_weight_per_vol / weight_per_vol_sum;

                this.KospiVolAdjustedWeight.Add(cur_dt, kospi_vol_adj_weight);
                this.KtbVolAdjustedWeight.Add(cur_dt, bond_vol_adj_weight);
                this.UsdkrwVolAdjustedWeight.Add(cur_dt, usdkrw_vol_adj_weight);

                //logger.Info("{0} - [{1:n2} - {2:n2} - {3:n2}] - " +
                //  "[{4:n2} - {5:n2} - {6:n2}] - [{7:n2} - {8:n2} - {9:n2}]",
                //  cur_dt,

                //  bond_weight,
                //  kospi_weight,
                //  usdkrw_weight,

                //  bond_weight_per_vol,
                //  kospi_weight_per_vol,
                //  usdkrw_weight_per_vol,

                //  bond_vol_adj_weight,
                //  kospi_vol_adj_weight,
                //  usdkrw_vol_adj_weight);
              }
            }
              }
            }
              }
        }
 public VolData(DataFromDB data_from_db, IncrementData inc_data)
 {
     this.ActiveDays = data_from_db.ActiveDays;
       SetKospiVolData(inc_data);
 }
        public RangeData(DataFromDB data_from_db)
        {
            this.ActiveDays = data_from_db.ActiveDays;

              this.Kospi = SetRangeData(
            MacroAAMagicNumber.KOSPI_PRICE_MAX,
            MacroAAMagicNumber.KOSPI_PRICE_MIN,
            data_from_db.Kospi);

              this.Ktb = SetRangeData(
            MacroAAMagicNumber.BOND_RATE_MAX,
            MacroAAMagicNumber.BOND_RATE_MIN,
            data_from_db.Ktb);

              this.Usdkrw = SetRangeData(
            MacroAAMagicNumber.USDKRW_PRICE_MAX,
            MacroAAMagicNumber.USDKRW_PRICE_MIN,
            data_from_db.Usdkrw);
        }
        DataFromDB LoadDataFromDB(MacroSpotData last_data, int limit)
        {
            DBManager manager = new DBManager();
              MySqlConnection con = manager.OpenConnection(Const.DATABASE_NAME);

              SortedList<DateTime, double> kospi_data =
            LoadDataFromDB_Raw(con, "KOSPI Index", limit);

              SortedList<DateTime, double> ktb_data =
            LoadDataFromDB_Raw(con, "KWNDF3 CMPN CURNCY", limit);

              SortedList<DateTime, double> usdkrw_data =
            LoadDataFromDB_Raw(con, "USDKRW Curncy", limit);

              SortedList<DateTime, double> kospi_future_data =
            LoadDataFromDB_Raw(con, "KM1 R:00_0_R Index", limit);

              SortedList<DateTime, double> ktb_future_data =
            LoadDataFromDB_Raw(con, "KE1 R:00_0_R Comdty", limit);

              SortedList<DateTime, double> usdkrw_future_data =
            LoadDataFromDB_Raw(con, "KU1 R:00_0_R Curncy", limit);

              SortedList<DateTime, double> active_days =
            new SortedList<DateTime, double>();

              active_days = GetActiveDays(kospi_data, ktb_data);
              active_days = GetActiveDays(active_days, usdkrw_data);
              active_days = GetActiveDays(active_days, kospi_future_data);
              active_days = GetActiveDays(active_days, ktb_future_data);
              active_days = GetActiveDays(active_days, usdkrw_future_data);

              DataFromDB output = new DataFromDB();
              output.ActiveDays = active_days;
              output.Kospi = kospi_data;
              output.Ktb = ktb_data;
              output.Usdkrw = usdkrw_data;
              output.KospiFuture = kospi_future_data;
              output.KtbFuture = ktb_future_data;
              output.UsdkrwFuture = usdkrw_future_data;

              if (last_data != null)
              {
            DateTime key = last_data.CurDateTime;
            output.ActiveDays.Add(key, 0);
            output.Kospi.Add(key, last_data.KospiPrice);
            output.KospiFuture.Add(key, last_data.KospiFuturePrice);
            output.Ktb.Add(key, last_data.BondRate);
            output.KtbFuture.Add(key, last_data.BondFuturePrice);
            output.Usdkrw.Add(key, last_data.UsdkrwPrice);
            output.UsdkrwFuture.Add(key, last_data.UsdkrwFuturePrice);
              }

              con.Close();
              return output;
        }
 void Init(DataFromDB data_from_db)
 {
     this.Kospi = Init_Raw(data_from_db.Kospi);
       this.Ktb = Init_Raw(data_from_db.Ktb);
       this.Usdkrw = Init_Raw(data_from_db.Usdkrw);
       this.KospiFuture = Init_Raw(data_from_db.KospiFuture);
       this.KtbFuture = Init_Raw(data_from_db.KtbFuture);
       this.UsdkrwFuture = Init_Raw(data_from_db.UsdkrwFuture);
 }