{
  "schema_version": "1.0",
  "topic_id": "D07-F03-A23",
  "title": "WaveTrend Oscillator",
  "purpose": "machine-readable publication-contract verification",
  "data_class": "synthetic teaching input",
  "selected_formula": "AP=(H+L+C)/3; ESA=EMA_n1(AP); CI=(AP-ESA)/(0.015*EMA_n1(|AP-ESA|)); WT1=EMA_n2(CI); WT2=SMA_4(WT1)",
  "canonical_question": "How does a normalized deviation from typical-price EMA become a smoothed oscillator pair?",
  "input_contract": "an ordered price or OHLC series, declared lookbacks, smoothing seeds, and denominator policy",
  "scenario_assertions": [
    {
      "name": "canonical",
      "expected_state": "calculated",
      "assertion": "valid and sufficiently warm synthetic input reaches calculation"
    },
    {
      "name": "boundary",
      "expected_state": "waiting",
      "assertion": "one missing observation or unresolved equality is not coerced to zero"
    },
    {
      "name": "failure",
      "expected_state": "invalid",
      "assertion": "non-finite, misordered, future-dated, or basis-mixed input is withheld"
    }
  ],
  "timing_rule": "An output at t may use only finite, basis-consistent observations available through t; chart alignment never moves the information clock backward.",
  "expected_non_claims": [
    "not historical market data",
    "not a forecast",
    "not a trading instruction",
    "not evidence of profitability"
  ],
  "implementation_status": "Python canonical runtime and audited Node/TypeScript adapter released with topic-owned fixtures and tests"
}
