Appearance

Personalize your experience

Mode
Accent Color
Layout
Direction
MarketplaceoverlaysEarnings Event Flags

Earnings Event Flags

Free

Mark earnings dates with implied-move cones on the chart

4.5(92)
1.8k installs 410 2 comments
A
7 listings3200 followers

Full-stack quant developer. Building open-source trading tools.

View Profile
earningseventsfundamentalvolatilityiv
Free
Open in QuaTick IDE Edit in IDE
Version1.0.0
Updated2025-09-01
Compatiblecandlestick, line

Preview

Chart preview
1 / 2

Chart preview

About

Plots earnings announcement dates as vertical event lines with expected-move cones based on implied volatility.


Features

Vertical dashed event lines

IV-based expected move cone projection

Company label at top

Auto-filters to visible range

Overlay Details

Render Layer

background

Source Code

Edit in IDE
typescript
1// Earnings Flags Overlay — Quatick IDE
2// Returns an implied-volatility proxy from ATR to mark high-IV periods.
3// SDK math globals available: sma, ema, atr, rsi, macd, bollingerBands, vwap, etc.
4 
5const metadata = { id: 'earnings-flags', name: 'Earnings Flags', version: '1.0.0', category: 'overlay' };
6 
7interface BarData {
8 time: number;
9 open: number;
10 high: number;
11 low: number;
12 close: number;
13 volume?: number;
14}
15 
16const defaultParams = { atrPeriod: 14, smoothPeriod: 20, ivMultiplier: 1.5 };
17 
18/**
19 * Implied-Volatility Proxy Overlay.
20 * Returns normalised ATR relative to its SMA — spikes indicate high-IV periods
21 * similar to when earnings events cause unusual options pricing.
22 * Values above 1.5 flag potential earnings or catalyst events.
23 */
24function calculate(bars: BarData[], params = defaultParams): { time: number; value: number }[] {
25 const highs = bars.map(b => b.high);
26 const lows = bars.map(b => b.low);
27 const closes = bars.map(b => b.close);
28 
29 // atr() is an SDK global: atr(high[], low[], close[], period) -> number[]
30 const atrValues = atr(highs, lows, closes, params.atrPeriod);
31 const atrSMA = sma(atrValues, params.smoothPeriod);
32 
33 return bars
34 .map((bar, i) => ({
35 time: bar.time,
36 value: (!isNaN(atrValues[i]) && !isNaN(atrSMA[i]) && atrSMA[i] > 0)
37 ? atrValues[i] / atrSMA[i]
38 : NaN,
39 }))
40 .filter(p => !isNaN(p.value));
41}
Read-only preview. Open in the QuaTick IDE to edit and deploy.

Reviews

No reviews yet. Be the first to review this listing.

Discussion

Sign in to join the discussion. Your posts and replies show up on your profile.