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); }
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); }
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; } }
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); }