JavaScript · Indicator Code
Frog (range volatility) in JavaScript
Frog is the population standard deviation of the daily High−Low range over the prior ~30 trading days, a measure of how erratic a symbol's daily bar size has been.
Verified. Python and JavaScript implementations agree to
2.22e-16 on a 60-bar reference high/low series (canonical Python (edge-scan compute_frog_for_date) vs JavaScript (calcFrog30d), comparable positions).JavaScript
/**
* Frog — population standard deviation of the daily (High - Low) range over
* the last n trading days preceding the current day (the final bar excluded).
*
* Verbatim math from edge-canvas calcFrog30d. Bit-parity with the canonical
* Python (edge-scan compute_frog_for_date): population stddev (divide by N),
* window = the n bars strictly before the last/current bar.
*
* @param {Array<{high:number, low:number}>} eodCandles - Daily OHLC bars, ascending by date.
* @param {number} n - Lookback window in trading days (default 30).
* @returns {number|null} Frog value, or null if fewer than 2 observations.
*/
export function frog(eodCandles, n = 30) {
// Use up to n days PRECEDING the last bar (exclude the current day).
const win = Math.min(eodCandles.length - 1, n);
if (win < 2) return null;
// Window: the win bars ending one position before the final bar.
const window = eodCandles.slice(-(win + 1), -1);
const ranges = window.map((c) => c.high - c.low);
// Population variance (divide by N), then standard deviation.
const mean = ranges.reduce((s, v) => s + v, 0) / ranges.length;
const variance = ranges.reduce((s, v) => s + (v - mean) ** 2, 0) / ranges.length;
return Math.sqrt(variance);
}
Other platforms: Python
← Frog (range volatility) (all platforms) · All indicators · Glossary concept
← Frog (range volatility) (all platforms) · All indicators · Glossary concept
Improve Your Craft Every Morning
A short note from Dr. Ken Long on the craft of trading. One idea to think about and work on that day, drawn from decades of teaching and live trading. Free.
Your email:
Tue–Fri mornings. Unsubscribe anytime. No spam, no hype.