Refactor code formatting and improve consistency across various test files

- Removed unnecessary blank lines in multiple test files to enhance readability.
- Ensured consistent spacing and formatting in the `Trima`, `Usf`, `Vidya`, `Wma`, and `Atr` test classes.
- Updated comments for clarity and consistency in the `Atr` and `Adl` classes.
- Adjusted project files for better structure and maintainability.
This commit is contained in:
Miha Kralj
2025-12-28 17:44:08 -08:00
parent ad6eebf812
commit 13d7c1215d
169 changed files with 10815 additions and 10814 deletions
+15 -15
View File
@@ -21,7 +21,7 @@ public class SkewTests
// Variance (Sample) = 2.5
// StdDev (Sample) = 1.58113883
// Skewness (Sample) = 0 (Symmetric)
var skew = new Skew(5, isPopulation: false);
skew.Update(new TValue(DateTime.UtcNow, 1));
skew.Update(new TValue(DateTime.UtcNow, 2));
@@ -38,7 +38,7 @@ public class SkewTests
// Test data: 1, 1, 1, 10
// Mean = 3.25
// Skewness should be positive (right tail)
var skew = new Skew(4, isPopulation: false);
skew.Update(new TValue(DateTime.UtcNow, 1));
skew.Update(new TValue(DateTime.UtcNow, 1));
@@ -54,7 +54,7 @@ public class SkewTests
// Test data: 10, 10, 10, 1
// Mean = 7.75
// Skewness should be negative (left tail)
var skew = new Skew(4, isPopulation: false);
skew.Update(new TValue(DateTime.UtcNow, 10));
skew.Update(new TValue(DateTime.UtcNow, 10));
@@ -68,16 +68,16 @@ public class SkewTests
public void Update_HandlesUpdates_IsNewFalse()
{
var skew = new Skew(5);
// 1, 2, 3, 4
skew.Update(new TValue(DateTime.UtcNow, 1));
skew.Update(new TValue(DateTime.UtcNow, 2));
skew.Update(new TValue(DateTime.UtcNow, 3));
skew.Update(new TValue(DateTime.UtcNow, 4));
// Add 5
skew.Update(new TValue(DateTime.UtcNow, 5), isNew: true);
// Update 5 to 10
var res2 = skew.Update(new TValue(DateTime.UtcNow, 10), isNew: false);
@@ -97,10 +97,10 @@ public class SkewTests
{
var skew = new Skew(5);
for (int i = 0; i < 5; i++) skew.Update(new TValue(DateTime.UtcNow, i));
skew.Reset();
Assert.False(skew.IsHot);
// Should behave like new
skew.Update(new TValue(DateTime.UtcNow, 1));
Assert.Equal(0, skew.Last.Value); // Not enough data
@@ -111,7 +111,7 @@ public class SkewTests
{
var data = new double[] { 1, 2, 3, 4, 5, 10, 1, 2, 3 };
int period = 5;
// Streaming
var skew = new Skew(period);
var streamingResults = new System.Collections.Generic.List<double>();
@@ -139,7 +139,7 @@ public class SkewTests
// StdDev (Pop) = sqrt(2/3)
// M3 (Pop) = ((1-2)^3 + (2-2)^3 + (3-2)^3) / 3 = 0
// Skew (Pop) = 0
var skew = new Skew(3, isPopulation: true);
skew.Update(new TValue(DateTime.UtcNow, 1));
skew.Update(new TValue(DateTime.UtcNow, 2));
@@ -166,7 +166,7 @@ public class SkewTests
skew.Update(new TValue(DateTime.UtcNow, 1));
skew.Update(new TValue(DateTime.UtcNow, 2));
skew.Update(new TValue(DateTime.UtcNow, double.NaN)); // Should be treated as 0 or handled gracefully
var result = skew.Last.Value;
Assert.True(double.IsNaN(result) || result == 0);
}
@@ -177,12 +177,12 @@ public class SkewTests
// Run for > 1000 updates to trigger Resync
var skew = new Skew(10);
var gbm = new GBM(startPrice: 100, mu: 0.05, sigma: 0.2, seed: 123);
for (int i = 0; i < 1100; i++)
{
skew.Update(new TValue(DateTime.UtcNow, gbm.Next().Close));
}
Assert.True(double.IsFinite(skew.Last.Value));
}
@@ -195,10 +195,10 @@ public class SkewTests
for (int i = 0; i < count; i++) data[i] = (double)i;
var series = new TSeries(new System.Collections.Generic.List<long>(new long[count]), new System.Collections.Generic.List<double>(data));
// Batch calculation
var batchResult = Skew.Calculate(series, 10);
// Verify last value against streaming
var skew = new Skew(10);
double lastStreaming = 0;
+2 -2
View File
@@ -22,7 +22,7 @@ public sealed class SkewValidationTests : IDisposable
int period = 20;
var skew = new Skew(period, isPopulation: false);
var popSkew = new Skew(period, isPopulation: true);
var quotes = _data.SkenderQuotes.ToList();
double[] input = quotes.Select(q => (double)q.Close).ToArray();
@@ -37,7 +37,7 @@ public sealed class SkewValidationTests : IDisposable
var window = input[(i - period + 1)..(i + 1)];
double expected = Statistics.Skewness(window);
double expectedPop = Statistics.PopulationSkewness(window);
Assert.Equal(expected, val.Value, 1e-6);
Assert.Equal(expectedPop, popVal.Value, 1e-6);
}
+19 -19
View File
@@ -80,7 +80,7 @@ public sealed class Skew : AbstractBase
{
double oldNewest = _buffer.Newest;
_buffer.UpdateNewest(input.Value);
double val = input.Value;
_sum = _sum - oldNewest + val;
_sumSq = _sumSq - (oldNewest * oldNewest) + (val * val);
@@ -92,7 +92,7 @@ public sealed class Skew : AbstractBase
{
double n = _buffer.Count;
double mean = _sum / n;
// Calculate 2nd moment (Variance)
// m2 = Sum((x-mean)^2) / n = (SumSq - Sum^2/n) / n
double m2Numerator = _sumSq - (_sum * _sum) / n;
@@ -106,7 +106,7 @@ public sealed class Skew : AbstractBase
// = SumCu - 3*mean*SumSq + 3*mean^2*Sum - n*mean^3
// Since Sum = n*mean:
// = SumCu - 3*mean*SumSq + 2*n*mean^3
double m3Numerator = _sumCu - 3 * mean * _sumSq + 2 * n * mean * mean * mean;
double m3 = m3Numerator / n;
@@ -232,7 +232,7 @@ public sealed class Skew : AbstractBase
double sum = 0;
double sumSq = 0;
double sumCu = 0;
int i = 0;
// Warmup phase
@@ -259,11 +259,11 @@ public sealed class Skew : AbstractBase
double oldVal = source[i - period];
if (!double.IsFinite(oldVal)) oldVal = 0;
sum = sum - oldVal + val;
sumSq = sumSq - (oldVal * oldVal) + (val * val);
sumCu = sumCu - (oldVal * oldVal * oldVal) + (val * val * val);
output[i] = CalculateSkewFromSums(sum, sumSq, sumCu, period, isPopulation);
tickCount++;
@@ -293,7 +293,7 @@ public sealed class Skew : AbstractBase
private static double CalculateSkewFromSums(double sum, double sumSq, double sumCu, double n, bool isPopulation)
{
double mean = sum / n;
double m2Numerator = sumSq - (sum * sum) / n;
if (m2Numerator < Epsilon) return 0;
double m2 = m2Numerator / n;
@@ -326,7 +326,7 @@ public sealed class Skew : AbstractBase
sum += val;
sumSq += val * val;
sumCu += val * val * val;
double n = i + 1;
Unsafe.Add(ref outRef, i) = (n >= 3) ? CalculateSkewFromSums(sum, sumSq, sumCu, n, isPopulation) : 0;
}
@@ -383,34 +383,34 @@ public sealed class Skew : AbstractBase
var vShift1 = Avx2.Permute4x64(vDelta.AsUInt64(), 0b_10_01_00_00).AsDouble(); // skipcq: CS-R1131
vShift1 = Avx.Blend(vZero, vShift1, 0b_1110);
var vP1 = Avx.Add(vDelta, vShift1);
// Shift 2: [0, 0, d0, d0+d1]
var vShift2 = Avx2.Permute4x64(vP1.AsUInt64(), 0b_01_00_00_00).AsDouble(); // skipcq: CS-R1131
vShift2 = Avx.Blend(vZero, vShift2, 0b_1100);
var vP2 = Avx.Add(vP1, vShift2);
var vSums = Avx.Add(Vector256.Create(sum), vP2);
// Prefix sum for SumSq
var vShiftSq1 = Avx2.Permute4x64(vDeltaSq.AsUInt64(), 0b_10_01_00_00).AsDouble(); // skipcq: CS-R1131
vShiftSq1 = Avx.Blend(vZero, vShiftSq1, 0b_1110);
var vP1Sq = Avx.Add(vDeltaSq, vShiftSq1);
var vShiftSq2 = Avx2.Permute4x64(vP1Sq.AsUInt64(), 0b_01_00_00_00).AsDouble(); // skipcq: CS-R1131
vShiftSq2 = Avx.Blend(vZero, vShiftSq2, 0b_1100);
var vP2Sq = Avx.Add(vP1Sq, vShiftSq2);
var vSumSqs = Avx.Add(Vector256.Create(sumSq), vP2Sq);
// Prefix sum for SumCu
var vShiftCu1 = Avx2.Permute4x64(vDeltaCu.AsUInt64(), 0b_10_01_00_00).AsDouble(); // skipcq: CS-R1131
vShiftCu1 = Avx.Blend(vZero, vShiftCu1, 0b_1110);
var vP1Cu = Avx.Add(vDeltaCu, vShiftCu1);
var vShiftCu2 = Avx2.Permute4x64(vP1Cu.AsUInt64(), 0b_01_00_00_00).AsDouble(); // skipcq: CS-R1131
vShiftCu2 = Avx.Blend(vZero, vShiftCu2, 0b_1100);
var vP2Cu = Avx.Add(vP1Cu, vShiftCu2);
var vSumCus = Avx.Add(Vector256.Create(sumCu), vP2Cu);
// Calculate Skewness
@@ -440,13 +440,13 @@ public sealed class Skew : AbstractBase
// g1 = m3 / (m2 * sqrt(m2))
var vM2Sqrt = Avx.Sqrt(vM2);
var vDenom = Avx.Multiply(vM2, vM2Sqrt);
// Check for small m2
var vMask = Avx.Compare(vM2, vEpsilon, FloatComparisonMode.OrderedGreaterThanNonSignaling);
var vG1 = Avx.Divide(vM3, vDenom);
var vSkew = Avx.Multiply(vG1, vCorrection);
// Apply mask
vSkew = Avx.BlendVariable(vZero, vSkew, vMask);
@@ -481,11 +481,11 @@ public sealed class Skew : AbstractBase
{
double val = Unsafe.Add(ref srcRef, i);
double oldVal = Unsafe.Add(ref srcRef, i - period);
sum = sum - oldVal + val;
sumSq = sumSq - (oldVal * oldVal) + (val * val);
sumCu = sumCu - (oldVal * oldVal * oldVal) + (val * val * val);
Unsafe.Add(ref outRef, i) = CalculateSkewFromSums(sum, sumSq, sumCu, n, isPopulation);
}
}