Ejemplo n.º 1
0
 public ParRateElf(int tenor, EnumTenorUnit unit, double rate, EnumRateMarket market, double fakeDays = 0)
 {
     this.Tenor    = tenor;
     this.Unit     = unit;
     this.Rate     = rate;
     this.Market   = market;
     this.FakeDays = fakeDays;
     GetName(tenor, unit);
 }
Ejemplo n.º 2
0
 public YieldElf(int tenor, EnumTenorUnit unit, double rate, EnumRateMarket market, DateTime startDate, DateTime endDate, double days, double daysAct, double zero, double df, double fr)
 {
     this.Tenor     = tenor;
     this.Unit      = unit;
     this.Rate      = rate;
     this.Market    = market;
     this.IsParRate = false;
     this.StartDate = startDate;
     this.EndDate   = endDate;
     this.Days      = days;
     this.DaysAct   = daysAct;
     this.Zero      = zero;
     this.DF        = df;
     this.FR        = fr;
     GetName(tenor, unit);
 }
Ejemplo n.º 3
0
        private void GetName(int tenor, EnumTenorUnit unit)
        {
            switch (unit)
            {
            case EnumTenorUnit.Day:
                if (tenor == 1)
                {
                    TenorName = "O/N";
                }
                else if (tenor == 2)
                {
                    TenorName = "T/N";
                }
                else
                {
                    TenorName = $"{tenor}天";
                }
                break;

            case EnumTenorUnit.Month:
                int year  = tenor / 12;
                int month = tenor % 12;
                if (year == 0)
                {
                    TenorName = $"{month}月";
                }
                else if (month == 0)
                {
                    TenorName = $"{year}年";
                }
                else
                {
                    TenorName = $"{year}年{month}月";
                }
                break;

            case EnumTenorUnit.Year:
                TenorName = $"{tenor}年";
                break;
            }
        }
Ejemplo n.º 4
0
        public YieldElf[] GetCurve(int year)
        {
            List <YieldElf> yieldList = new List <YieldElf>();

            //foreach (var item in this.ParRateList)
            //{
            //    (double zero, double FR, double DF, double newZero, double rate) = GetYield_T(item.DaysAct, item.DaysAct - 90 / 365d);
            //    yieldList.Add(new YieldElf(item, FR));
            //}
            for (int i = 0; i < year; i++)
            {
                for (int j = 1; j <= 4; j++)
                {
                    int            tenor     = i * 12 + j * 3; //#每3個月
                    EnumTenorUnit  unit      = EnumTenorUnit.Month;
                    double         rate      = 0;
                    EnumRateMarket market    = EnumRateMarket.None;
                    DateTime       startDate = DateTime.Today;
                    (DateTime endDate, bool isLastDay, double days) = m_tradeDateAx.GetSettlementDate(startDate, (i * 4) + j);
                    double daysAct = days / 365d;
                    (double zero, double fr, double df, double newZero, double swap) = GetYield_T(daysAct);
                    YieldElf yieldElf = new YieldElf(tenor, unit, rate, market, startDate, endDate, days, daysAct, zero, df, fr);
                    bool     exist    = (from item in yieldList
                                         where item.Days == days
                                         select item).Any();
                    if (!exist) //# 如果已經存在就不要加入了
                    {
                        yieldList.Add(yieldElf);
                    }
                }
            }
            var query = (from item in yieldList
                         orderby item.Days
                         select item).ToArray();

            return(query);
        }