Skip to content

Latest commit

 

History

History
executable file
·
61 lines (39 loc) · 2.36 KB

File metadata and controls

executable file
·
61 lines (39 loc) · 2.36 KB

SGMA - Sgma

Architectural problem

Real-time chart analysis needs deterministic updates per bar and explicit handling of warm-up periods. SGMA addresses this by implementing Calculates SGMA using Savitzky-Golay filter with polynomial fitting with parameterized inputs and direct state progression.

Design decision

This implementation favors streaming execution over batch recomputation. The trade-off is more attention to state initialization, but latency stays predictable when charts scale.

API surface

Functions

  • Calculates SGMA using Savitzky-Golay filter with polynomial fitting

Parameters

Parameter Purpose
source Series to calculate SGMA from
period Lookback period - FIR window size (must be odd)
deg Polynomial degree (default: 2)

Returns

  • SGMA value, calculates from first bar using available data

Input configuration

Input variable Type Configuration
i_period input.int default: 9, label: "Period"
i_degree input.int default: 2, label: "Polynomial Degree"
i_source input.source default: close, label: "Source"

Runtime profile

  • Declared optimization: Uses Savitzky-Golay coefficients with O(n) complexity per bar due to lookback loop
  • Streaming model: single-pass update on each new bar.
  • Warm-up behavior: outputs can be unstable until enough samples satisfy period.
  • Memory model: state is kept in Pine series context rather than external buffers.

Trade-offs

Streaming logic keeps incremental cost stable, but initialization and edge-case handling become first-class concerns. That is a deliberate choice: predictable execution beats opaque recalculation spikes in live charts.

Verification checklist

  1. Open the script in TradingView and confirm it compiles under Pine Script v6.
  2. Validate warm-up behavior on sparse data and short histories.
  3. Compare output against a trusted reference implementation for the same parameters.
  4. Confirm parameter bounds reject invalid values without silent fallback.

References