// TS11_HarmonicPhase: Harmonic phase forecast.
// 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: dominant discrete frequency.
// Quality heuristic: Spectral concentration and forecast-horizon disagreement.
// Limitation: Frequency selection is in-sample. Spectral leakage and phase changes can invalidate continuation.
// 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 = "TS11";
string TS2TestLog = "Log/TS11_HarmonicPhase_test.txt";
int TS2Holding = 12;
// 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
// Fit orthogonal harmonics to returns, not wavelet energies or PCA factors.
// Chronology is reversed for the DFT so that the forecast lies after the sample.
var TS2Model()
{
var Real[25], Imaginary[25], Power[25];
var Total, Best, Mean, Angle, Forecast, Noise, Coherence, Weight;
var Fast, Medium, Slow, Disagreement, Numerator, Denominator;
int Frequency, Time, Winner, Horizon;
Mean = 0.;
Noise = 0.;
for (Time = 0; Time < 96; Time++)
Mean += TS2Returns[Time] / 96.;
for (Time = 0; Time < 96; Time++)
Noise += pow(TS2Returns[Time] - Mean, 2.) / 96.;
if (Noise < 1.e-22)
{
TS2Quality = 1.;
return TS2Bound(Mean / sqrt(Mean * Mean + 1.e-22));
}
Total = 0.;
Best = 0.;
Winner = 1;
for (Frequency = 1; Frequency <= 24; Frequency++)
{
Real[Frequency] = 0.;
Imaginary[Frequency] = 0.;
for (Time = 0; Time < 96; Time++)
{
Angle = 6.283185307179586 * Frequency * Time / 96.;
Real[Frequency] += (TS2Returns[95 - Time] - Mean) * cos(Angle) / 48.;
Imaginary[Frequency] += (TS2Returns[95 - Time] - Mean) * sin(Angle) / 48.;
}
Power[Frequency] = Real[Frequency] * Real[Frequency];
Power[Frequency] += Imaginary[Frequency] * Imaginary[Frequency];
Total += Power[Frequency];
if (Power[Frequency] > Best)
{
Best = Power[Frequency];
Winner = Frequency;
}
}
if (Total < 1.e-22)
return 0.;
Coherence = Best / Total;
Fast = 0.;
Medium = 0.;
Slow = 0.;
// Local frequency neighborhood reduces sensitivity to a single FFT bin.
for (Horizon = 1; Horizon <= 12; Horizon++)
{
Numerator = 0.;
Denominator = 0.;
for (Frequency = max(1, Winner - 1); Frequency <= min(24, Winner + 1); Frequency++)
{
Weight = Power[Frequency] / Total;
Angle = 6.283185307179586 * Frequency * (95 + Horizon) / 96.;
Numerator += Weight * (Real[Frequency] * cos(Angle) + Imaginary[Frequency] * sin(Angle));
Denominator += Weight;
}
Forecast = Mean + Numerator / max(1.e-22, Denominator);
if (Horizon <= 2)
Fast += Forecast / 2.;
if (Horizon <= 6)
Medium += Forecast / 6.;
Slow += Forecast / 12.;
}
Disagreement = abs(Fast - Medium) + abs(Medium - Slow);
TS2Statistic = Winner;
TS2Quality = Coherence / (1. + Disagreement / sqrt(Noise));
if (TS2Quality < 0.20)
return 0.;
Forecast = (4. * Fast + 2. * Medium + Slow) / 7.;
return Forecast / sqrt(Noise + Forecast * Forecast);
}
// 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.99, "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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[11] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[48] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[85] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[122] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[159] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[196] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[233] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[14] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[51] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[88] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[125] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[162] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[199] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[236] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[17] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[54] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[91] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[128] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[165] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[202] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[239] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[20] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[57] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[94] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[131] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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[168] = 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 11 perturbation phase 1.507000.
// 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.507000 + I * 0.333000);
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: directional reflection");
for (I = 0; I < 256; I++)
TS2Returns[I] = Snapshot[I];
TS2Returns[205] = 2.;
TS2Expect(TS2Evaluate() == 0., "clustered_down_events: implausible return rejected");
TS2Expect(TS2Quality == 0., "clustered_down_events: rejected sample clears quality");
for (I =