Alert on the dealers,
not the tape
Every other alerting product fires on price, volume, or an indicator. FlashAlpha fires on options positioning: gamma regime flips, 0DTE magnets, call and put walls, dealer flow risk, VRP richness, IV spikes, VIX regime. 94 addressable trigger fields, and 84 of them are computed nowhere else.
Alerts are open to every plan while the beta runs. Free and Basic accounts arm 2 rules on a 15-minute cadence, Growth 20 rules every 5 minutes, Alpha 100 rules on every evaluator tick. Evaluation runs on US trading days between 09:30 and 16:00 ET.
Same word, different product
Typical chart alerting tools watch the output of the market. FlashAlpha watches the positioning that shapes it. The comparison below is about what the two things can see, not about which is better software.
| FlashAlpha alerts | Typical chart alerting tools | |
|---|---|---|
| What you can trigger on | 94 options-positioning fields: dealer gamma, delta, vanna and charm exposure, gamma flip, call and put walls, max pain, the 0DTE magnet, implied and realized vol, variance risk premium, strategy scores, earnings positioning, and 10 market-wide macro fields. | Price, volume, and whatever indicators the charting library exposes. All of it derived from OHLCV. |
| Signed webhooks | Every delivery carries X-FlashAlpha-Signature, the lowercase hex HMAC-SHA256 of the raw body keyed by a per-rule secret. Rotatable by replacing the URL. |
Unsigned POST where a webhook exists at all, so your endpoint has no way to prove the sender. |
| Scan scope | One rule watches up to 20 named symbols. On Alpha, one rule watches the whole live universe, currently around 250 names, and tells you which ones crossed. | One chart, one symbol, one alert. Watching 40 names means creating and maintaining 40 alerts. |
| Noise control | Edge-triggered: fires once on the false-to-true transition per symbol, then goes quiet and re-arms when the symbol stops matching. Cooldown defaults to 60 minutes, and a rule that fires 5 times in one ET day auto-pauses. | Usually a choice between firing once and firing on every bar. Keeping the middle ground is your job. |
| Delivery | Email by default, plus an optional HTTPS webhook: 4 attempts with 1s, 5s and 25s backoff, a 5-second timeout per attempt, and auto-disable after 20 consecutive failures so a dead endpoint cannot silently rot. | Email, push, or an on-screen popup. Retry behaviour is rarely documented. |
| History | A fired-event API. Every fire is recorded whether or not delivery succeeded, with the field values captured at trigger time, so a look-up later shows what the rule actually saw. | A notification log, if there is one, showing that something fired but not the state that caused it. |
What you can alert on
94 addressable fields: 84 computed per symbol, plus 10 market-wide macro fields you can use as context gates. These are the same field names the Live Screener returns, so anything you can screen for, you can watch for.
Signed dealer gamma, delta, vanna and charm, and the regime label that follows from them.
net_gexnet_dexnet_vexnet_chexregimegamma_flip
The strikes that actually matter into the close: walls, pain, and the same-day magnet.
call_wallput_wallmax_painzero_dte_magnethighest_oi_strikezero_dte_pct_of_total
Implied against realized, the variance premium, and where it sits in its own history.
atm_ivrv_20dvrp_20dvrp_z_scoreskew_25dterm_state
Scored positioning: how hostile the flow is, and which structure the surface currently pays for.
dealer_flow_risknet_harvest_scoreiron_condor_scoreshort_strangle_scorevrp_regime
The event calendar, what the chain is pricing into it, and how much of that should evaporate.
days_to_earningsearnings_implied_move_pctexpected_iv_crush_pctnext_earnings_date
Market-wide values, identical for every symbol. Best used as a gate: alert on this name, but only when the tape looks like that.
vixvix_3mvix_term_slopevvixhy_spreaddgs10
Not the full list. Price and liquidity, OI concentration, GEX bucketed by days to expiry, directional VRP, and the GARCH volatility forecast are all addressable too. Definitions, units, and the tier each field needs are in the Screener Field Taxonomy.
Ten templates, no condition to write
Pick a template, name your symbols, and set a number. The server compiles the template into a stored condition and hands the compiled JSON straight back, so you can read exactly what your rule is watching. Every one of them is something you could have written yourself with the custom DSL.
Spot trades above the strike carrying the largest positive dealer gamma. No parameters.
price_above_call_wall
Spot trades below the strike carrying the largest negative dealer gamma. No parameters.
price_below_put_wall
Dealers cross into short gamma, where hedging amplifies moves instead of damping them.
regime_flip_negative
The other side of the same trade: dealers turn long gamma and start pinning.
regime_flip_positive
At-the-money implied vol crosses your threshold, in percentage points. Default 40.
iv_spikethreshold
The 20-day variance risk premium rises above your level, in percentage points. Default 2.5.
vrp_richthreshold
Spot comes within X percent of the same-day expiry magnet strike. Default 0.5 percent.
zero_dte_magnet_nearpct
The put/call volume ratio pushes above your level. Default 2.0.
pc_volume_extremeratio
A macro regime break. Because VIX is market-wide, every symbol in scope crosses on the same tick. Default 25.
vix_abovelevel
A print is close and the chain is pricing a large move for it. Defaults 3 days and 5 percent.
earnings_movedaysmove_pct
Parameters are numeric and validated: an unrecognised name is a hard error, not a silent fallback to the default. Units follow the screener, so an IV threshold of 45 means 45 percentage points, not 0.45.
Five desks, five rules
Each of these is a complete request body. Post it and the rule is armed.
The 0DTE trader
You trade the SPY close and what you care about is the pin. You want a nudge when price starts orbiting the same-day magnet, not a running commentary while it sits there.
The rule: tell me when SPY comes within 0.3 percent of the 0DTE magnet, and do not tell me again for half an hour.
{
"name": "SPY inside 0.3% of the 0DTE magnet",
"templateKey": "zero_dte_magnet_near",
"templateParams": { "pct": 0.3 },
"scope": { "type": "symbols", "symbols": ["SPY"] },
"cooldownMinutes": 30
}
The dealer-flow watcher
A regime flip on its own is noisy. What you want is the flip with hostile flow behind it, on the index complex, and confirmed by a gamma flip level the model was actually able to solve.
The rule: the regime is negative gamma, dealer flow risk is at least 55, and there is a real gamma flip level.
{
"name": "Short gamma flip, confirmed by flow",
"condition": {
"op": "and",
"conditions": [
{ "field": "regime", "operator": "eq", "value": "negative_gamma" },
{ "field": "dealer_flow_risk", "operator": "gte", "value": 55 },
{ "field": "gamma_flip", "operator": "is_not_null" }
]
},
"scope": { "type": "symbols", "symbols": ["SPY", "QQQ", "IWM"] },
"cooldownMinutes": 90
}
The vol seller
You sell premium only when the variance premium is paying, dealers are long gamma so the tape is damped, and the chain is tight enough that you can actually get filled.
The rule: 20-day VRP at 4 or better, positive gamma regime, and an at-the-money spread inside 1.5 percent.
{
"name": "Premium-selling window",
"condition": {
"op": "and",
"conditions": [
{ "field": "vrp_20d", "operator": "gte", "value": 4 },
{ "field": "regime", "operator": "eq", "value": "positive_gamma" },
{ "field": "atm_spread_pct", "operator": "lte", "value": 1.5 }
]
},
"scope": { "type": "symbols",
"symbols": ["SPY", "QQQ", "IWM", "AAPL", "MSFT", "NVDA"] },
"cooldownMinutes": 240
}
The earnings trader
You are hunting fat implied moves with a big expected crush behind them, anywhere in the market, without reading a calendar every morning.
The rule: the print is inside two days, the chain is pricing 7 percent or more, and the expected crush is 30 percent or more. Scan every name.
{
"name": "Fat implied move with a big expected crush",
"condition": {
"op": "and",
"conditions": [
{ "field": "days_to_earnings", "operator": "lte", "value": 2 },
{ "field": "earnings_implied_move_pct", "operator": "gte", "value": 7 },
{ "field": "expected_iv_crush_pct", "operator": "gte", "value": 30 }
]
},
"scope": { "type": "universe" },
"cooldownMinutes": 1440
}
The risk manager
You are not trading the alert. You want the desk paged, once, when the volatility regime breaks, straight into the system you already run.
The rule: VIX above 25, evaluated across the whole universe, delivered to a signed webhook, at most twice a session.
{
"name": "VIX above 25",
"templateKey": "vix_above",
"templateParams": { "level": 25 },
"scope": { "type": "universe" },
"webhookUrl": "https://hooks.example.com/fa/vix-regime",
"cooldownMinutes": 720
}
On Growth, swap the scope for {"type":"symbols","symbols":["SPY"]} to get the same signal with one symbol named.
Built for automation, not for a dashboard
Email is the default channel and needs no setup. The webhook is the one that matters if something downstream is going to act on the fire.
Each POST carries X-FlashAlpha-Signature: the lowercase hex HMAC-SHA256 of the raw request body, keyed by the secret returned when you created the rule. Verify the raw bytes before parsing, and compare in constant time.
Four attempts per delivery with 1s, 5s and 25s backoff and a 5-second timeout each. Any 2xx is success, redirects are not followed. Delivery is at-least-once, so deduplicate on ruleId plus firedAt.
After 20 consecutive failed deliveries the URL is cleared and the rule says why in its status reason. The rule stays active and keeps emailing. Send the URL again to re-enable it, which also rotates the signing secret.
POST https://your-endpoint.example.com/fa-alerts
X-FlashAlpha-Signature: 4c1a9f0e7b2d... (64 hex chars)
{
"ruleId": "8f1c4d2e-3a77-4c19-9b0e-2d6f5a11c743",
"name": "SPY / QQQ gamma flips negative",
"firedAt": "2026-08-06T14:32:00.0000000Z",
"symbols": ["SPY"],
"snapshot": {
"SPY": {
"price": 656.01,
"regime": "negative_gamma"
}
}
}
Five keys, nothing else. symbols holds only the newly matched names, and snapshot holds the values the rule was judged on, captured at trigger time.
import hmac, hashlib
raw = request.get_data() # raw bytes, before parsing
sig = hmac.new(SECRET.encode(), raw, hashlib.sha256).hexdigest()
if not hmac.compare_digest(sig, request.headers["X-FlashAlpha-Signature"]):
abort(401)
Read the body as bytes first. A framework that JSON-decodes and re-encodes will change whitespace or key order and the signature will stop matching. Worked examples in Python, Node and C# are in the API reference.
Works with whatever you already run
Your own bot, your OMS, Discord, Slack, Telegram, n8n, Make or Zapier. FlashAlpha posts its own schema with a signature header, so a chat platform needs a small relay in between: receive, verify, reshape, forward. One relay can serve every rule you own. If you would rather not run one at all, leave email on and point emailTo at a channel address, which most chat platforms can issue.
Free to try, right now
Alerts are in open beta, which means every plan can arm rules today rather than waiting for an upgrade to find out whether the signal is any good.
Every plan, 2 rules, 15-minute cadence
Free and Basic accounts can arm 2 active rules, evaluated every 15 minutes against the Tier 1 symbol set, with email delivery and any template their tier allows. Paid capabilities are not part of the giveaway: the custom condition DSL and webhooks still need Growth, formulas and universe scans still need Alpha. When the beta ends the feature moves to Growth and above, and rules below that line are suspended with an upgrade message rather than deleted.
- 20 active rules, evaluated every 5 minutes
- All 10 templates, plus the custom condition DSL with and/or/not nesting
- HMAC-signed webhooks with retries and auto-disable
- Up to 20 symbols per rule, from the Growth universe
- 100 active rules, due on every evaluator tick
- Formula expressions in conditions, for example
atm_iv / rv_20d - Universe-wide scans: one rule across the whole live store, currently around 250 names
- Alpha-only fields:
dealer_flow_risk,vrp_regime,days_to_earningsand the rest
Alerts, honestly answered
Does it fire after hours?
Will it spam me?
What happens when the beta ends?
Do I need a server for Discord?
emailTo at a channel email address, which most chat platforms can issue.
Is there an API?
https://lab.flashalpha.com/v1/alerts, authenticated with the same X-Api-Key header as every other FlashAlpha endpoint. One endpoint lists the 10 templates with their parameters, defaults and minimum tier; another returns the fire history for a rule with the field snapshot captured at trigger time. Evaluation and delivery run server-side and do not consume your request quota, so a rule that fires all day costs nothing beyond the calls you made to create it. Full reference in the Alerts API docs.Arm your first alert
Start with a template on the symbols you already watch. Move up to custom conditions, signed webhooks and universe scans when the signal has earned it.
Open to every plan while the beta runs. No card needed to try it.