protected double Fator(ICDI cdi, DateTime naData)
        {
            var fator = 1.0;
            var taxas = _taxasDIOver
                        .Where(t => t.Data >= cdi.DataDaAplicacao && t.Data < naData)
                        .Select(t => t.Taxa).ToList();

            foreach (var diOver in taxas)
            {
                var fatorDiario = (Math.Pow((1.0 + diOver), (1.0 / 252.0)) - 1);
                fator *= (fatorDiario * cdi.Taxa) + 1;
            }
            return(fator);
        }
        protected double ValorIOF(ICDI cdi, DateTime naData)
        {
            var rendimentoBruto = ValorBruto(cdi, naData) - ValorAplicado(cdi);

            return(ValorIOF(rendimentoBruto, cdi, naData));
        }
        protected double ValorIOF(double rendimentoBruto, ICDI cdi, DateTime naData)
        {
            var dias = (int)((naData - cdi.DataDaAplicacao).TotalDays);

            return(ValorIOF(rendimentoBruto, dias));
        }
 protected double RendimentoBruto(ICDI cdi, DateTime naData) =>
 RendimentoBruto(ValorBruto(cdi, naData), ValorAplicado(cdi));
 protected double ValorBruto(ICDI cdi, DateTime naData)
 {
     return(Fator(cdi, naData) * cdi.PrecoUnitario * cdi.Quantidade);
 }
 protected double ValorAplicado(ICDI cdi) => cdi.PrecoUnitario * cdi.Quantidade;