using System; using System.Linq; using EvoCalculator.Core.Models.Calculation.Interfaces; using EvoCalculator.Core.Models.Calculation.Models; namespace EvoCalculator.Core.FinanceFormulas { public class XNPV : IFinanceFormula { private readonly Flow[] _flows; private readonly double _rate; public XNPV(Flow[] flows, double rate) { _flows = flows; _rate = rate; } public double GetResult() { var firstDate = _flows[0].Date; return _flows.Sum(flow => flow.Value / Math.Pow(1 + _rate, (flow.Date - firstDate).TotalDays / 365)); } } }