diff --git a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml
index d174da7..c7fb440 100644
--- a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml
+++ b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml
@@ -57,7 +57,7 @@
-
+
diff --git a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml
index 1d9e1ef..84d55be 100644
--- a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml
+++ b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml
@@ -14,17 +14,12 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -57,9 +52,9 @@
+
-
@@ -78,7 +73,7 @@
-
+
@@ -122,7 +117,7 @@
1602504351800
-
+
@@ -248,10 +243,10 @@
-
+
-
+
@@ -260,10 +255,14 @@
-
+
-
+
+
+
+
+
diff --git a/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs b/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs
index fac2e86..d5d40c6 100644
--- a/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs
+++ b/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs
@@ -6,17 +6,17 @@ namespace EvoCalculator.Core.Calculation.FinanceFormulas
{
public class XIRR : IFinanceFormula
{
- private FlowValue[] _values;
+ private Flow[] _flows;
private double _guess = 0.1;
- public XIRR(FlowValue[] values)
+ public XIRR(Flow[] flows)
{
- _values = values;
+ _flows = flows;
}
- public XIRR(FlowValue[] values, double guess)
+ public XIRR(Flow[] flows, double guess)
{
- _values = values;
+ _flows = flows;
_guess = guess;
}
@@ -24,8 +24,8 @@ namespace EvoCalculator.Core.Calculation.FinanceFormulas
{
var x1 = 0.0;
var x2 = _guess;
- var f1 = new XNPV(_values, x1).GetResult();
- var f2 = new XNPV(_values, x2).GetResult();
+ var f1 = new XNPV(_flows, x1).GetResult();
+ var f2 = new XNPV(_flows, x2).GetResult();
for (var i = 0; i < 100; i++)
{
@@ -33,18 +33,18 @@ namespace EvoCalculator.Core.Calculation.FinanceFormulas
if (Math.Abs(f1) < Math.Abs(f2))
{
x1 += 1.6 * (x1 - x2);
- f1 = new XNPV(_values, x1).GetResult();
+ f1 = new XNPV(_flows, x1).GetResult();
}
else
{
x2 += 1.6 * (x2 - x1);
- f2 = new XNPV(_values, x2).GetResult();
+ f2 = new XNPV(_flows, x2).GetResult();
}
}
if (f1 * f2 > 0.0) return 0;
- var f = new XNPV(_values, x1).GetResult();
+ var f = new XNPV(_flows, x1).GetResult();
var dx = 0.0;
var rtb = 0.0;
if (f < 0.0)
@@ -62,7 +62,7 @@ namespace EvoCalculator.Core.Calculation.FinanceFormulas
{
dx *= 0.5;
var xMid = rtb + dx;
- var fMid = new XNPV(_values, xMid).GetResult();
+ var fMid = new XNPV(_flows, xMid).GetResult();
if (fMid <= 0.0) rtb = xMid;
if (Math.Abs(fMid) < 1.0e-6 || Math.Abs(dx) < 1.0e-6) return xMid;
}
diff --git a/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs b/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs
index 98b225c..f537991 100644
--- a/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs
+++ b/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs
@@ -7,20 +7,20 @@ namespace EvoCalculator.Core.Calculation.FinanceFormulas
{
public class XNPV : IFinanceFormula
{
- private FlowValue[] _values;
+ private Flow[] _flows;
private double _rate;
- public XNPV(FlowValue[] values, double rate)
+ public XNPV(Flow[] flows, double rate)
{
- _values = values;
+ _flows = flows;
_rate = rate;
}
public double GetResult()
{
- var firstDate = _values[0].Date;
- return _values.Sum(flowValue =>
- flowValue.Flow / Math.Pow(1 + _rate, (flowValue.Date - firstDate).TotalDays / 365));
+ var firstDate = _flows[0].Date;
+ return _flows.Sum(flow =>
+ flow.Value / Math.Pow(1 + _rate, (flow.Date - firstDate).TotalDays / 365));
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Models/Calculation/Models/FlowValues.cs b/EvoCalculator.Core.Models/Calculation/Models/Flow.cs
similarity index 68%
rename from EvoCalculator.Core.Models/Calculation/Models/FlowValues.cs
rename to EvoCalculator.Core.Models/Calculation/Models/Flow.cs
index b4597c2..b5ac82b 100644
--- a/EvoCalculator.Core.Models/Calculation/Models/FlowValues.cs
+++ b/EvoCalculator.Core.Models/Calculation/Models/Flow.cs
@@ -2,9 +2,9 @@
namespace EvoCalculator.Core.Models.Calculation.Models
{
- public class FlowValue
+ public class Flow
{
public DateTime Date;
- public double Flow;
+ public double Value;
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs b/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs
index c29d2fb..eb258a9 100644
--- a/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs
@@ -11,72 +11,72 @@ namespace EvoCalculator.Core.Tests.Calculation.Suite
{
private readonly ITestOutputHelper output;
- readonly FlowValue[] _flowValues =
+ readonly Flow[] _flows =
{
- new FlowValue
+ new Flow
{
Date = new DateTime(2020, 09, 01),
- Flow = -6500000
+ Value = -6500000
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2020, 09, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2020, 10, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2020, 11, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2020, 12, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 1, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 2, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 3, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 4, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 5, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 6, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 7, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
- new FlowValue
+ new Flow
{
Date = new DateTime(2021, 8, 01),
- Flow = 608944.445718643
+ Value = 608944.445718643
},
};
@@ -88,7 +88,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Suite
[Fact]
public void XNPVTest()
{
- var XNPV = new XNPV(_flowValues.Skip(1).ToArray(), 0.3);
+ var XNPV = new XNPV(_flows.Skip(1).ToArray(), 0.3);
var res = XNPV.GetResult();
output.WriteLine(res.ToString());
Assert.InRange(res, 6490000, 6590000);
@@ -97,7 +97,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Suite
[Fact]
public void XIRRTest()
{
- var XIRR = new XIRR(_flowValues);
+ var XIRR = new XIRR(_flows);
var res = XIRR.GetResult();
output.WriteLine(res.ToString());
Assert.InRange(res, 0.29, 0.31);