Files
QuanTAlib/perf/perf.csproj
T
Miha Kralj 67ad6f0cba v0.8.7: Replace periodic ResyncInterval with Kahan compensated summation
Comprehensive refactor across all indicators replacing the periodic
ResyncInterval-based drift correction (every 1000 ticks recalculate
from scratch) with Kahan compensated summation for running sums.

Key changes:
- Remove ResyncInterval constants and TickCount fields from all State records
- Add Kahan compensation fields (SumComp, SumSqComp, etc.) to State records
- Replace naive sum += val - removed with Kahan delta pattern
- Remove Resync()/RecalculateSum() methods that did O(N) recalculation
- Update batch/SIMD paths to use Kahan compensation instead of resync loops
- IIR filters (EMA, REMA, RGMA) simplified: inherently self-correcting
- Version bump to 0.8.7
- Build system: README version stamping via Directory.Build.props
- Minor doc/test tolerance adjustments for new numerical characteristics

Affected modules: channels, core, cycles, dynamics, errors, momentum,
oscillators, statistics, trends_FIR, trends_IIR, volatility, volume
2026-03-13 22:01:31 -07:00

36 lines
1.3 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<RestoreAdditionalProjectSources>https://www.myget.org/F/ooplesfinance_stockindicators/api/v3/index.json</RestoreAdditionalProjectSources>
<!-- NativeAOT is NOT compatible with BenchmarkDotNet (uses reflection/Assembly.Location) -->
<!-- BenchmarkDotNet creates optimized JIT processes for benchmarking -->
</PropertyGroup>
<!-- Exclude sibling progressive benchmark (belongs to progressive.csproj) -->
<ItemGroup>
<Compile Remove="Progressive.cs" />
<Compile Remove="obj\progressive\**" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\lib\quantalib.csproj" />
</ItemGroup>
<ItemGroup>
<!-- Comparison libraries -->
<PackageReference Include="OoplesFinance.StockIndicators" Version="1.1.1" />
<PackageReference Include="Skender.Stock.Indicators" Version="2.6.1" />
<PackageReference Include="Tulip.NETCore" Version="0.8.0.1" />
<PackageReference Include="TALib.NETCore" Version="0.5.0" />
<!-- Benchmarking -->
<PackageReference Include="BenchmarkDotNet" Version="0.15.3" />
</ItemGroup>
</Project>