XIRR Goal Seek | Happy Birthday to me

This commit is contained in:
Chika 2020-10-19 21:57:58 +03:00
parent 8c0a87cb3b
commit affe9fdded
4 changed files with 228 additions and 91 deletions

View File

@ -14,35 +14,10 @@
</component>
<component name="ChangeListManager">
<list default="true" id="2c3b0650-5589-43d4-b4b7-2979612bb30f" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/GPS_GrColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumWithVATColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/VATColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/Bisection.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/GoalXIRR.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/GPS_GrTests.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumWithVatTests.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/TLM_GrTests.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/VATColumnTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumnWithXIRR.cs" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateColumnTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/DateColumnTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateTempTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/DateTempTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/PercentPaymentTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/PercentPaymentTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/SumColumnTest.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumColumnTest.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumColumnTest.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumColumnTest.cs" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -53,22 +28,38 @@
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/72/Double.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.FinanceFormulas/XIRR.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/89/f5bc57e5/Trident.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/af/6846d1ce/GoalSeek.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9152434B-0FAC-463B-87F2-DD9AF798817F/2e/201d3c41/Assert.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/8a/efc30f2b/IGoalSeekAlgorithm.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/49/DateTime.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/72/Double.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/18D5A60D-361A-4AFD-A431-F772FA87FCC3/d9/b0109e6d/TestInvoker`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/92/f4ccca9d/GoalSeekResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9D995D4A-0EBE-4A93-85A6-BE06CB7C70EE/f6/ada9c10c/FactAttribute.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/d6/c014ca2d/GoalSeekOptions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/89/f5bc57e5/Trident.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/31F94AF4-0455-4C4C-BD4F-AB58A9F2D1BF/2C/Sum.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
</component>
@ -121,11 +112,11 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumWithVatTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/VATColumnTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/GoalXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumColumnTest.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumColumnTest.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
</list>
</option>
</component>
@ -194,7 +185,7 @@
<workItem from="1602754684591" duration="13639000" />
<workItem from="1602850022326" duration="4617000" />
<workItem from="1602854690202" duration="5777000" />
<workItem from="1603096869934" duration="23413000" />
<workItem from="1603096869934" duration="28356000" />
</task>
<task id="LOCAL-00001" summary="rename: flow">
<created>1602593830686</created>
@ -242,90 +233,90 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="1108" y="416" key="#com.intellij.ide.ui.customization.CustomizableActionsPanel.FindAvailableActionsDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603119675236" />
<state width="897" height="464" key="DebuggerActiveHint" timestamp="1603128596492">
<state width="897" height="464" key="DebuggerActiveHint" timestamp="1603130767865">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="897" height="464" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128596492" />
<state width="2517" height="464" key="GridCell.Tab.0.bottom" timestamp="1603128549927">
<state width="897" height="464" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603130767865" />
<state width="2517" height="512" key="GridCell.Tab.0.bottom" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.0.center" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.0.center" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.0.left" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.0.left" timestamp="1603133451273">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.0.right" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451273" />
<state width="2517" height="512" key="GridCell.Tab.0.right" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.1.bottom" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.1.bottom" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.1.center" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.1.center" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.1.left" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.1.left" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.1.right" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.1.right" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.2.bottom" timestamp="1603128549928">
<state width="2517" height="512" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.2.bottom" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549928" />
<state width="2517" height="464" key="GridCell.Tab.2.center" timestamp="1603128549928">
<state width="2517" height="512" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.2.center" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549928" />
<state width="2517" height="464" key="GridCell.Tab.2.left" timestamp="1603128549927">
<state width="2517" height="512" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.2.left" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549927" />
<state width="2517" height="464" key="GridCell.Tab.2.right" timestamp="1603128549928">
<state width="2517" height="512" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.2.right" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549928" />
<state width="2517" height="464" key="GridCell.Tab.3.bottom" timestamp="1603128549929">
<state width="2517" height="512" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.3.bottom" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549929" />
<state width="2517" height="464" key="GridCell.Tab.3.center" timestamp="1603128549928">
<state width="2517" height="512" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.3.center" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549928" />
<state width="2517" height="464" key="GridCell.Tab.3.left" timestamp="1603128549928">
<state width="2517" height="512" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.3.left" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549928" />
<state width="2517" height="464" key="GridCell.Tab.3.right" timestamp="1603128549928">
<state width="2517" height="512" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.3.right" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549928" />
<state width="2517" height="464" key="GridCell.Tab.4.bottom" timestamp="1603128549930">
<state width="2517" height="512" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.4.bottom" timestamp="1603133451275">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549930" />
<state width="2517" height="464" key="GridCell.Tab.4.center" timestamp="1603128549929">
<state width="2517" height="512" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451275" />
<state width="2517" height="512" key="GridCell.Tab.4.center" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549929" />
<state width="2517" height="464" key="GridCell.Tab.4.left" timestamp="1603128549929">
<state width="2517" height="512" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.4.left" timestamp="1603133451274">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549929" />
<state width="2517" height="464" key="GridCell.Tab.4.right" timestamp="1603128549929">
<state width="2517" height="512" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451274" />
<state width="2517" height="512" key="GridCell.Tab.4.right" timestamp="1603133451275">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="464" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603128549929" />
<state width="2517" height="512" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603133451275" />
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size" timestamp="1602854431119">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -334,10 +325,10 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="1108" y="385" key="RiderGenerateDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602853905402" />
<state x="1078" y="410" key="RollbackChangesDialog" timestamp="1602761804757">
<state x="1078" y="410" key="RollbackChangesDialog" timestamp="1603131092253">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="1078" y="410" key="RollbackChangesDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602761804757" />
<state x="1078" y="410" key="RollbackChangesDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603131092253" />
<state x="781" y="345" key="SettingsEditor" timestamp="1603119676785">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -358,10 +349,10 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="898" y="0" width="1161" height="1387" key="dock-window-1/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602760039715" />
<state x="930" y="299" width="730" height="801" key="find.popup" timestamp="1603107561928">
<state x="930" y="299" width="730" height="801" key="find.popup" timestamp="1603129257494">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="930" y="299" width="730" height="801" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603107561928" />
<state x="930" y="299" width="730" height="801" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603129257494" />
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup" timestamp="1602850027763">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -371,25 +362,34 @@
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs</url>
<line>41</line>
<properties documentPath="C:\Users\Chika\Projects\EvoCalculator.Core\EvoCalculator.Core.Calculation\Columns\SumColumn.cs" initialLine="41">
<url>file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumColumnTest.cs</url>
<line>308</line>
<properties documentPath="C:\Users\Chika\Projects\EvoCalculator.Core\EvoCalculator.Core.Tests\Calculation\Columns\SumColumnTest.cs" initialLine="308">
<startOffsets>
<option value="1387" />
<option value="11212" />
</startOffsets>
<endOffsets>
<option value="1417" />
<option value="11243" />
</endOffsets>
</properties>
<option name="timeStamp" value="27" />
<option name="timeStamp" value="36" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<pin-to-top-manager>
<pinned-members>
<PinnedItemInfo parentTag="Frame#EvoCalculator.Core.Tests.Calculation.Suite.Columns.TLM_GrTests.TLM_GrTest1" memberName="expected" />
<PinnedItemInfo parentTag="Type#EvoCalculator.Core.Calculation.Columns.BaseColumn`1" memberName="Values" />
<PinnedItemInfo parentTag="Frame#EvoCalculator.Core.Tests.Calculation.Suite.Columns.KaskoNmperGrTests.KaskoNmperGrTest2" memberName="preparedValues" />
</pinned-members>
</pin-to-top-manager>
<watches-manager>
<configuration name="RiderUnitTests">
<watch expression="IRR" language="C#" />
<watch expression="Convert.ToDecimal(IRR)" language="C#" />
<watch expression="preparedValues.IrrExpected" language="C#" />
<watch expression="Convert.ToDecimal(preparedValues.IrrExpected)" language="C#" />
</configuration>
</watches-manager>
</component>
</project>

View File

@ -7,7 +7,7 @@ namespace EvoCalculator.Core.Calculation.Columns
public class BaseColumnWithXIRR : BaseColumn<double>
{
public double IRR { get; set; }
private DateTime[] Dates { get; set; }
protected DateTime[] Dates { get; set; }
public BaseColumnWithXIRR(int count, DateTempColumn dateTempColumn) : base(count)

View File

@ -19,14 +19,14 @@ namespace EvoCalculator.Core.Calculation.Columns
this._percentPaymentColumn = percentPaymentColumn;
}
public void ComputeValues()
public void ComputeValues(double x)
{
Values[0] = -this._preparedValues.BaseCost;
Values[1] = this._preparedValues.FirstPaymentSum;
for (var i = 3; i < Values.Length - 1; i++)
for (var i = 2; i < Values.Length - 1; i++)
{
Values[i] = Values[2] * _percentPaymentColumn.Values[i] / 100;
Values[i] = x * _percentPaymentColumn.Values[i] / 100;
}
Values[^1] = _preparedValues.LastPaymentSum;
@ -34,8 +34,8 @@ namespace EvoCalculator.Core.Calculation.Columns
public decimal Calculate(decimal inputVariable)
{
Values[2] = Convert.ToDouble(inputVariable);
this.ComputeValues();
var x = Convert.ToDouble(inputVariable);
this.ComputeValues(x);
var XIRR = new XIRR(Flows);
IRR = XIRR.GetResult();
@ -46,7 +46,14 @@ namespace EvoCalculator.Core.Calculation.Columns
{
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredIRR,
new GoalSeekOptions(initialTineSpacing: 10000));
new GoalSeekOptions(
startingStabPoint: Convert.ToDecimal(this._preparedValues.BaseCost / this._preparedValues.Nmper)
, tineExplorePercentage: 10
// , maximumAttempts: 10000
// , initialTineSpacing: 1
// , focusPercentage: 100
// , trimFinalInputValue: true
));
}
}
}

View File

@ -178,5 +178,135 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
var values = sumColumn.Values;
Assert.Equal(expected, values);
}
[Fact]
public void SumColumnTest2()
{
var preparedValues =
new PreparedValues()
{
BaseCost = 2500000,
FirstPaymentSum = 625000,
Nmper = 12,
LastPaymentSum = 25000,
IrrExpected = 0.304
};
var percentPaymentColumn = new PercentPaymentColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
0.00,
0.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
0.00,
}
};
var dateTempColumn = new DateTempColumn(67)
{
Values = new[]
{
new DateTime(2020, 10, 19),
new DateTime(2020, 10, 19),
new DateTime(2020, 11, 19),
new DateTime(2020, 12, 19),
new DateTime(2021, 1, 19),
new DateTime(2021, 2, 19),
new DateTime(2021, 3, 19),
new DateTime(2021, 4, 19),
new DateTime(2021, 5, 19),
new DateTime(2021, 6, 19),
new DateTime(2021, 7, 19),
new DateTime(2021, 8, 19),
new DateTime(2021, 9, 19),
new DateTime(2021, 10, 19),
new DateTime(2021, 11, 19),
new DateTime(2021, 12, 19),
new DateTime(2022, 1, 19),
new DateTime(2022, 2, 19),
new DateTime(2022, 3, 19),
new DateTime(2022, 4, 19),
new DateTime(2022, 5, 19),
new DateTime(2022, 6, 19),
new DateTime(2022, 7, 19),
new DateTime(2022, 8, 19),
new DateTime(2022, 9, 19),
new DateTime(2022, 10, 19),
new DateTime(2022, 11, 19),
new DateTime(2022, 12, 19),
new DateTime(2023, 1, 19),
new DateTime(2023, 2, 19),
new DateTime(2023, 3, 19),
new DateTime(2023, 4, 19),
new DateTime(2023, 5, 19),
new DateTime(2023, 6, 19),
new DateTime(2023, 7, 19),
new DateTime(2023, 8, 19),
new DateTime(2023, 9, 19),
new DateTime(2023, 10, 19),
new DateTime(2023, 11, 19),
new DateTime(2023, 12, 19),
new DateTime(2024, 1, 19),
new DateTime(2024, 2, 19),
new DateTime(2024, 3, 19),
new DateTime(2024, 4, 19),
new DateTime(2024, 5, 19),
new DateTime(2024, 6, 19),
new DateTime(2024, 7, 19),
new DateTime(2024, 8, 19),
new DateTime(2024, 9, 19),
new DateTime(2024, 10, 19),
new DateTime(2024, 11, 19),
new DateTime(2024, 12, 19),
new DateTime(2025, 1, 19),
new DateTime(2025, 2, 19),
new DateTime(2025, 3, 19),
new DateTime(2025, 4, 19),
new DateTime(2025, 5, 19),
new DateTime(2025, 6, 19),
new DateTime(2025, 7, 19),
new DateTime(2025, 8, 19),
new DateTime(2025, 9, 19),
}
};
var expected = new[]
{
-2500000,
625000,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
209113.783333333,
25000
};
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn);
sumColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
var values = sumColumn.Values;
Assert.Equal(expected, values);
}
}
}