// TS12_DetrendedScaling: Detrended fluctuation scaling.
// Standalone model implementation with embedded safety and engine code.
// Market scope: EUR/USD completed-hour return aggregation horizons.
// These are not actual bond maturities or a futures calendar spread.
// Model diagnostic: detrended fluctuation exponent.
// Quality heuristic: Persistence above one half and log-scale fit residual.
// Limitation: Finite samples and deterministic oscillations can resemble long memory; this is not proof of a Hurst process.
// No claim of profitability, calibration, or independent strategy returns.
// Inputs: 256 newest-first log returns; all must be finite and within [-1,1].
// Output: bounded signed edge; positive buys, negative sells, zero abstains.
// Quality is a heuristic filter, never a calibrated success probability.
// The synthetic suite below is included in the total file line count.
// Regenerate with build_sources.py; compare hashes before deployment.
#include <default.c>
string TS2Algo = "TS12";
string TS2TestLog = "Log/TS12_DetrendedScaling_test.txt";
int TS2Holding = 24;
// Embedded input, state, and test contracts; identical safety is not novel alpha.
#define TS2_N 256
var TS2Returns[256];
var TS2Quality;
var TS2Statistic;
var TS2Raw;
int TS2Checks;
int TS2Failures;
var TS2Model();
var TS2Bound(var Value)
{
if (Value != Value)
return 0.;
return max(-1., min(1., Value));
}
var TS2Evaluate()
{
int Index;
var Energy;
TS2Quality = 0.;
TS2Statistic = 0.;
TS2Raw = 0.;
Energy = 0.;
for (Index = 0; Index < TS2_N; Index++)
{
if (TS2Returns[Index] != TS2Returns[Index])
return 0.;
if (abs(TS2Returns[Index]) > 1.)
return 0.;
Energy += TS2Returns[Index] * TS2Returns[Index];
}
if (Energy < 1.e-24)
return 0.;
TS2Raw = TS2Model();
if (TS2Raw != TS2Raw || abs(TS2Raw) > 1.e12)
{
TS2Quality = 0.;
return 0.;
}
TS2Quality = max(0., min(1., TS2Quality));
return TS2Bound(TS2Raw);
}
void TS2Expect(int Passed, string Label)
{
TS2Checks++;
if (!Passed)
{
TS2Failures++;
file_append(TS2TestLog, strf("FAIL: %s\n", Label));
}
}
// BEGIN ANALYTICAL MODEL
// Integrated demeaned return profile; detrend separately inside each box.
// The scaling exponent selects persistence, while signed drift sets direction.
var TS2Model()
{
int Sizes[6] = {8, 12, 18, 27, 40, 60};
var Profile[240], Fluctuation[6];
var Mean, Sum, XSum, XXSum, YSum, XYSum, Slope, Intercept;
var Residual, Error, XS, YS, XX, XY, Exponent, FitError;
var ShortDrift, LongDrift, Variation, Agreement, Signal;
int Scale, Box, Offset, Width, Count, Position;
Mean = 0.;
for (Position = 0; Position < 240; Position++)
Mean += TS2Returns[Position] / 240.;
Sum = 0.;
for (Position = 0; Position < 240; Position++)
{
Sum += TS2Returns[239 - Position] - Mean;
Profile[Position] = Sum;
}
for (Scale = 0; Scale < 6; Scale++)
{
Width = Sizes[Scale];
Count = 240 / Width;
Error = 0.;
XSum = Width * (Width - 1.) / 2.;
XXSum = Width * (Width - 1.) * (2. * Width - 1.) / 6.;
for (Box = 0; Box < Count; Box++)
{
YSum = 0.;
XYSum = 0.;
for (Offset = 0; Offset < Width; Offset++)
{
YSum += Profile[Box * Width + Offset];
XYSum += Offset * Profile[Box * Width + Offset];
}
Slope = (Width * XYSum - XSum * YSum) / (Width * XXSum - XSum * XSum);
Intercept = (YSum - Slope * XSum) / Width;
for (Offset = 0; Offset < Width; Offset++)
{
Residual = Profile[Box * Width + Offset] - Intercept - Slope * Offset;
Error += Residual * Residual;
}
}
Fluctuation[Scale] = sqrt(Error / (Count * Width));
}
XS = 0.; YS = 0.; XX = 0.; XY = 0.;
for (Scale = 0; Scale < 6; Scale++)
{
if (Fluctuation[Scale] < 1.e-16)
return 0.;
XS += log(Sizes[Scale]);
YS += log(Fluctuation[Scale]);
XX += pow(log(Sizes[Scale]), 2.);
XY += log(Sizes[Scale]) * log(Fluctuation[Scale]);
}
Exponent = (6. * XY - XS * YS) / (6. * XX - XS * XS);
Intercept = (YS - Exponent * XS) / 6.;
FitError = 0.;
for (Scale = 0; Scale < 6; Scale++)
FitError += pow(log(Fluctuation[Scale]) - Intercept - Exponent * log(Sizes[Scale]), 2.);
ShortDrift = 0.; LongDrift = 0.; Variation = 0.;
for (Position = 0; Position < 60; Position++)
{
LongDrift += TS2Returns[Position] / 60.;
Variation += TS2Returns[Position] * TS2Returns[Position] / 60.;
if (Position < 12)
ShortDrift += TS2Returns[Position] / 12.;
}
Agreement = ShortDrift * LongDrift;
TS2Statistic = Exponent;
TS2Quality = max(0., min(1., (Exponent - 0.5) * 2.)) / (1. + FitError);
if (Agreement <= 0. || Exponent <= 0.55)
return 0.;
Signal = (ShortDrift + LongDrift) * sqrt(12.);
return Signal / sqrt(Variation + Signal * Signal + 1.e-24);
}
// END ANALYTICAL MODEL
// Synthetic property tests: executed only with -d TS2_SELFTEST.
// Tests do not execute trades, query market data, or establish profitability.
// Known-response anchor: not just a generic bounded-output assertion.
void TS2KnownResponse()
{
int I;
var Edge, Negative;
for (I = 0; I < 256; I++)
TS2Returns[I] = 0.0005;
Edge = TS2Evaluate();
TS2Expect(Edge == 0., "known straight path: model-specific response");
for (I = 0; I < 256; I++)
TS2Returns[I] = -0.0005;
Negative = TS2Evaluate();
TS2Expect(abs(Edge + Negative) < 1.e-7, "known straight path: symmetric response");
}
// Case 1: slow_sine; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case1()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.0008 * sin(0.07 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "slow_sine: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "slow_sine: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "slow_sine: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "slow_sine: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "slow_sine: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "slow_sine: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[12] = 2.;
TS2Expect(TS2Evaluate() == 0., "slow_sine: implausible return rejected");
TS2Expect(TS2Quality == 0., "slow_sine: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "slow_sine: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "slow_sine: quality restored");
}
// Case 2: fast_sine; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case2()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.0012 * sin(1.1 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "fast_sine: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "fast_sine: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "fast_sine: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "fast_sine: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "fast_sine: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "fast_sine: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[49] = 2.;
TS2Expect(TS2Evaluate() == 0., "fast_sine: implausible return rejected");
TS2Expect(TS2Quality == 0., "fast_sine: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "fast_sine: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "fast_sine: quality restored");
}
// Case 3: two_scale_beating; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case3()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.0009 * sin(0.18 * I) + 0.0007 * sin(0.21 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "two_scale_beating: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "two_scale_beating: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "two_scale_beating: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "two_scale_beating: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "two_scale_beating: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "two_scale_beating: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[86] = 2.;
TS2Expect(TS2Evaluate() == 0., "two_scale_beating: implausible return rejected");
TS2Expect(TS2Quality == 0., "two_scale_beating: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "two_scale_beating: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "two_scale_beating: quality restored");
}
// Case 4: amplitude_burst; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case4()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.0004 * sin(0.31 * I) * (1. + 3. * exp(-pow((I - 28.) / 8., 2.)));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "amplitude_burst: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "amplitude_burst: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "amplitude_burst: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "amplitude_burst: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "amplitude_burst: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "amplitude_burst: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[123] = 2.;
TS2Expect(TS2Evaluate() == 0., "amplitude_burst: implausible return rejected");
TS2Expect(TS2Quality == 0., "amplitude_burst: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "amplitude_burst: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "amplitude_burst: quality restored");
}
// Case 5: chirp_acceleration; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case5()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.001 * sin(0.0018 * I * I + 0.05 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "chirp_acceleration: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "chirp_acceleration: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "chirp_acceleration: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "chirp_acceleration: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "chirp_acceleration: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "chirp_acceleration: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[160] = 2.;
TS2Expect(TS2Evaluate() == 0., "chirp_acceleration: implausible return rejected");
TS2Expect(TS2Quality == 0., "chirp_acceleration: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "chirp_acceleration: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "chirp_acceleration: quality restored");
}
// Case 6: chirp_deceleration; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case6()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.001 * sin(7. * sqrt(I + 1.));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "chirp_deceleration: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "chirp_deceleration: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "chirp_deceleration: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "chirp_deceleration: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "chirp_deceleration: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "chirp_deceleration: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[197] = 2.;
TS2Expect(TS2Evaluate() == 0., "chirp_deceleration: implausible return rejected");
TS2Expect(TS2Quality == 0., "chirp_deceleration: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "chirp_deceleration: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "chirp_deceleration: quality restored");
}
// Case 7: positive_drift_noise; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case7()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.0003 + 0.0009 * sin(0.77 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "positive_drift_noise: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "positive_drift_noise: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "positive_drift_noise: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "positive_drift_noise: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "positive_drift_noise: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "positive_drift_noise: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[234] = 2.;
TS2Expect(TS2Evaluate() == 0., "positive_drift_noise: implausible return rejected");
TS2Expect(TS2Quality == 0., "positive_drift_noise: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "positive_drift_noise: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "positive_drift_noise: quality restored");
}
// Case 8: negative_drift_noise; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case8()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = -0.0003 + 0.0009 * sin(0.77 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "negative_drift_noise: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "negative_drift_noise: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "negative_drift_noise: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "negative_drift_noise: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "negative_drift_noise: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "negative_drift_noise: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[15] = 2.;
TS2Expect(TS2Evaluate() == 0., "negative_drift_noise: implausible return rejected");
TS2Expect(TS2Quality == 0., "negative_drift_noise: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "negative_drift_noise: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "negative_drift_noise: quality restored");
}
// Case 9: mixed_frequency_drift; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case9()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = 0.0002 + 0.0006 * sin(0.23 * I) + 0.0004 * cos(1.37 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "mixed_frequency_drift: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "mixed_frequency_drift: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "mixed_frequency_drift: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "mixed_frequency_drift: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "mixed_frequency_drift: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "mixed_frequency_drift: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[52] = 2.;
TS2Expect(TS2Evaluate() == 0., "mixed_frequency_drift: implausible return rejected");
TS2Expect(TS2Quality == 0., "mixed_frequency_drift: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "mixed_frequency_drift: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "mixed_frequency_drift: quality restored");
}
// Case 10: alternating_sign; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case10()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 2 == 0, 0.001, -0.001);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "alternating_sign: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "alternating_sign: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "alternating_sign: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "alternating_sign: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "alternating_sign: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "alternating_sign: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[89] = 2.;
TS2Expect(TS2Evaluate() == 0., "alternating_sign: implausible return rejected");
TS2Expect(TS2Quality == 0., "alternating_sign: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "alternating_sign: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "alternating_sign: quality restored");
}
// Case 11: three_bar_blocks; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case11()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 6 < 3, 0.001, -0.001);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "three_bar_blocks: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "three_bar_blocks: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "three_bar_blocks: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "three_bar_blocks: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "three_bar_blocks: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "three_bar_blocks: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[126] = 2.;
TS2Expect(TS2Evaluate() == 0., "three_bar_blocks: implausible return rejected");
TS2Expect(TS2Quality == 0., "three_bar_blocks: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "three_bar_blocks: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "three_bar_blocks: quality restored");
}
// Case 12: five_bar_blocks; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case12()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 10 < 5, 0.001, -0.001);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "five_bar_blocks: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "five_bar_blocks: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "five_bar_blocks: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "five_bar_blocks: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "five_bar_blocks: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "five_bar_blocks: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[163] = 2.;
TS2Expect(TS2Evaluate() == 0., "five_bar_blocks: implausible return rejected");
TS2Expect(TS2Quality == 0., "five_bar_blocks: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "five_bar_blocks: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "five_bar_blocks: quality restored");
}
// Case 13: one_sided_steps; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case13()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I < 24, 0.001, 0.0001) + 0.0001 * sin(I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "one_sided_steps: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "one_sided_steps: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "one_sided_steps: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "one_sided_steps: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "one_sided_steps: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "one_sided_steps: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[200] = 2.;
TS2Expect(TS2Evaluate() == 0., "one_sided_steps: implausible return rejected");
TS2Expect(TS2Quality == 0., "one_sided_steps: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "one_sided_steps: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "one_sided_steps: quality restored");
}
// Case 14: late_reversal; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case14()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I < 12, -0.0008, 0.0005) + 0.0002 * cos(0.7 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "late_reversal: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "late_reversal: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "late_reversal: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "late_reversal: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "late_reversal: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "late_reversal: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[237] = 2.;
TS2Expect(TS2Evaluate() == 0., "late_reversal: implausible return rejected");
TS2Expect(TS2Quality == 0., "late_reversal: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "late_reversal: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "late_reversal: quality restored");
}
// Case 15: middle_reversal; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case15()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I < 64, 0.0006, -0.0004) + 0.0002 * sin(0.43 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "middle_reversal: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "middle_reversal: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "middle_reversal: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "middle_reversal: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "middle_reversal: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "middle_reversal: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[18] = 2.;
TS2Expect(TS2Evaluate() == 0., "middle_reversal: implausible return rejected");
TS2Expect(TS2Quality == 0., "middle_reversal: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "middle_reversal: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "middle_reversal: quality restored");
}
// Case 16: old_reversal; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case16()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I < 160, 0.0004, -0.0007) + 0.0001 * cos(0.91 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "old_reversal: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "old_reversal: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "old_reversal: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "old_reversal: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "old_reversal: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "old_reversal: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[55] = 2.;
TS2Expect(TS2Evaluate() == 0., "old_reversal: implausible return rejected");
TS2Expect(TS2Quality == 0., "old_reversal: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "old_reversal: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "old_reversal: quality restored");
}
// Case 17: volatility_expansion; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case17()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = (0.0002 + 0.001 * exp(-0.015 * I)) * sin(0.81 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "volatility_expansion: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "volatility_expansion: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "volatility_expansion: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "volatility_expansion: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "volatility_expansion: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "volatility_expansion: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[92] = 2.;
TS2Expect(TS2Evaluate() == 0., "volatility_expansion: implausible return rejected");
TS2Expect(TS2Quality == 0., "volatility_expansion: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "volatility_expansion: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "volatility_expansion: quality restored");
}
// Case 18: volatility_contraction; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case18()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = (0.0002 + 0.000004 * I) * sin(0.81 * I);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "volatility_contraction: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "volatility_contraction: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "volatility_contraction: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "volatility_contraction: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "volatility_contraction: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "volatility_contraction: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[129] = 2.;
TS2Expect(TS2Evaluate() == 0., "volatility_contraction: implausible return rejected");
TS2Expect(TS2Quality == 0., "volatility_contraction: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "volatility_contraction: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "volatility_contraction: quality restored");
}
// Case 19: isolated_recent_up; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case19()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I == 3, 0.008, 0.0002 * sin(0.61 * I));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "isolated_recent_up: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "isolated_recent_up: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "isolated_recent_up: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "isolated_recent_up: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "isolated_recent_up: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "isolated_recent_up: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[166] = 2.;
TS2Expect(TS2Evaluate() == 0., "isolated_recent_up: implausible return rejected");
TS2Expect(TS2Quality == 0., "isolated_recent_up: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "isolated_recent_up: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "isolated_recent_up: quality restored");
}
// Case 20: isolated_recent_down; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case20()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I == 3, -0.008, 0.0002 * sin(0.61 * I));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "isolated_recent_down: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "isolated_recent_down: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "isolated_recent_down: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "isolated_recent_down: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "isolated_recent_down: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "isolated_recent_down: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[203] = 2.;
TS2Expect(TS2Evaluate() == 0., "isolated_recent_down: implausible return rejected");
TS2Expect(TS2Quality == 0., "isolated_recent_down: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "isolated_recent_down: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "isolated_recent_down: quality restored");
}
// Case 21: paired_opposite_shocks; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case21()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I == 7, 0.006, ifelse(I == 11, -0.006, 0.0001 * cos(I)));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "paired_opposite_shocks: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "paired_opposite_shocks: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "paired_opposite_shocks: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "paired_opposite_shocks: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "paired_opposite_shocks: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "paired_opposite_shocks: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[240] = 2.;
TS2Expect(TS2Evaluate() == 0., "paired_opposite_shocks: implausible return rejected");
TS2Expect(TS2Quality == 0., "paired_opposite_shocks: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "paired_opposite_shocks: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "paired_opposite_shocks: quality restored");
}
// Case 22: paired_same_shocks; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case22()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I == 7 || I == 11, 0.006, 0.0001 * cos(I));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "paired_same_shocks: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "paired_same_shocks: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "paired_same_shocks: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "paired_same_shocks: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "paired_same_shocks: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "paired_same_shocks: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[21] = 2.;
TS2Expect(TS2Evaluate() == 0., "paired_same_shocks: implausible return rejected");
TS2Expect(TS2Quality == 0., "paired_same_shocks: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "paired_same_shocks: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "paired_same_shocks: quality restored");
}
// Case 23: old_shock; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case23()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I == 211, 0.012, 0.0003 * sin(0.27 * I));
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "old_shock: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "old_shock: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "old_shock: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "old_shock: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "old_shock: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "old_shock: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[58] = 2.;
TS2Expect(TS2Evaluate() == 0., "old_shock: implausible return rejected");
TS2Expect(TS2Quality == 0., "old_shock: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "old_shock: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "old_shock: quality restored");
}
// Case 24: sparse_up_events; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case24()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 17 == 0, 0.003, -0.0001);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "sparse_up_events: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "sparse_up_events: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "sparse_up_events: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "sparse_up_events: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "sparse_up_events: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "sparse_up_events: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[95] = 2.;
TS2Expect(TS2Evaluate() == 0., "sparse_up_events: implausible return rejected");
TS2Expect(TS2Quality == 0., "sparse_up_events: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "sparse_up_events: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "sparse_up_events: quality restored");
}
// Case 25: sparse_down_events; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case25()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 17 == 0, -0.003, 0.0001);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "sparse_down_events: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "sparse_down_events: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "sparse_down_events: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "sparse_down_events: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "sparse_down_events: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "sparse_down_events: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[132] = 2.;
TS2Expect(TS2Evaluate() == 0., "sparse_down_events: implausible return rejected");
TS2Expect(TS2Quality == 0., "sparse_down_events: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "sparse_down_events: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "sparse_down_events: quality restored");
}
// Case 26: clustered_up_events; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case26()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 29 < 4, 0.002, -0.00015);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "clustered_up_events: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "clustered_up_events: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "clustered_up_events: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "clustered_up_events: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "clustered_up_events: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "clustered_up_events: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[169] = 2.;
TS2Expect(TS2Evaluate() == 0., "clustered_up_events: implausible return rejected");
TS2Expect(TS2Quality == 0., "clustered_up_events: rejected sample clears quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
Restored = TS2Evaluate();
TS2Expect(abs(Restored - Original) < 1.e-9, "clustered_up_events: restored input has no stale state");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "clustered_up_events: quality restored");
}
// Case 27: clustered_down_events; model 12 perturbation phase 1.644000.
// Covers numerical stability and directional symmetry on this path family.
void TS2Case27()
{
var Snapshot[256], Original, Repeated, Reflected, Restored;
var InitialQuality, InitialStatistic;
int I;
for (I = 0; I < 256; I++)
{
TS2Returns[I] = ifelse(I % 29 < 4, -0.002, 0.00015);
TS2Returns[I] += 0.00000003 * sin(1.644000 + I * 0.346000);
Snapshot[I] = TS2Returns[I];
}
Original = TS2Evaluate();
InitialQuality = TS2Quality;
InitialStatistic = TS2Statistic;
TS2Expect(Original == Original && abs(Original) <= 1., "clustered_down_events: finite bounded edge");
TS2Expect(InitialQuality >= 0. && InitialQuality <= 1., "clustered_down_events: quality contract");
TS2Expect(InitialStatistic == InitialStatistic && abs(InitialStatistic) < 1.e12, "clustered_down_events: finite diagnostic");
Repeated = TS2Evaluate();
TS2Expect(abs(Repeated - Original) < 1.e-9, "clustered_down_events: deterministic evaluation");
TS2Expect(abs(TS2Quality - InitialQuality) < 1.e-9, "clustered_down_events: deterministic quality");
for (I = 0; I < 256; I++)
TS2Returns[I] = -Snapshot[I];
Reflected = TS2Evaluate();
TS2Expect(abs(Reflected + Original) < 1.e-7, "clustered_down_events: directiona