Trade Signals
Get Gamma Vwap Confluence Signal
Gamma+VWAP confluence detector — multi-level price cluster magnet.
Detects when multiple reference levels (gamma flip, VWAP, max pain, max gamma, call wall) cluster near the same price, creating a high-conviction magnet or bounce level.
Logic highlights (src/signals/advanced/gamma_vwap_confluence.py):
- The gamma flip and VWAP are always members — neither is admission-tested, so cluster_members never holds fewer than two entries and Members: 2 is the floor rather than a reading. max_pain / max_gamma / call_wall each join only when they sit within 0.15% of the flip/VWAP midpoint: abs(level − mid) / close <= 0.0015, where mid = (flip + vwap) / 2.
- confluence_level = arithmetic mean of whichever members qualified.
- cluster_gap_pct = abs(flip − vwap) / close — the two core members only. An optional level sitting far from the cluster does not widen the gap.
- cluster_quality = clamp(1 − cluster_gap_pct / CONFLUENCE_MAX_GAP_PCT, 0.05, 1.00), the divisor defaulting to 1.0% (SIGNAL_CONFLUENCE_MAX_GAP_PCT). The floor is 0.05, not 0 — a wide-gap card still prints a small non-zero score, so a ±5 reports no cluster rather than weak direction.
- multi_mult = 1.0 + 0.15 × (len(cluster_members) − 2) — 1.30× at four members.
- distance = (close − confluence_level) / close, divided by 0.003 and clamped to ±1, so |distance| ≥ 0.30% saturates the reading.
- net_gex < 0 → continuation, regime factor +1 (bullish above the cluster, bearish below); net_gex >= 0 → mean reversion, regime factor −0.7 — the sign inverts and the magnitude is damped.
- Composition is a plain product, clipped once at the end: clamped_score = clip(quality × multi_mult × scaled_distance × regime, −1, 1), and score = clamped_score × 100.
- Triggered when |score| ≥ 20 (clamped 0.20).
Params: symbol (default SPY). Returns 404 when no data exists.
Returns:
{
"score": 22.0, "clamped_score": 0.22, "direction": "bullish",
"triggered": true,
"signal": "bullish_confluence",
"confluence_level": 678.25,
"cluster_gap_pct": 0.0009,
"gamma_flip": 677.82, "vwap": 678.10,
"max_pain": 678.0, "max_gamma": 678.5, "call_wall": 681.0,
"expected_target": 680.5,
"context_values": {"...gamma_flip, vwap, max_pain, max_gamma, call_wall, cluster_gap_pct, cluster_members, cluster_quality, distance_from_level_pct, regime_direction, net_gex..."},
"score_history": [{"score": 22.0, "timestamp": "..."}, "...up to 90"]
}
- score — [-100, +100].
- signal — "bullish_confluence" | "bearish_confluence" | "neutral".
- triggered — true when |score| ≥ 20.
- confluence_level — mean of the qualifying cluster_members; a midpoint only in the two-member case. null in the same missing_levels case as cluster_gap_pct below.
- cluster_gap_pct — |flip − vwap| / close; ≥ 0 and not bounded above (it is cluster_quality that floors, at 0.05, not the gap). null when flip or vwap is unavailable or close <= 0 — the missing_levels short-circuit, which also omits confluence_level, cluster_quality and cluster_members and scores 0. Clients should render the absence rather than back-computing a gap: in that state no cluster was built.
- gamma_flip, vwap, max_pain, max_gamma, call_wall — raw input levels used in the computation; null when unavailable. Always present regardless of whether the level ended up in cluster_members.
- expected_target — confluence_level itself under mean reversion; under continuation close + 2 × (close − confluence_level), i.e. projected past spot by twice the distance already travelled from the cluster, on the side price has already left. Geometric: it does not scale with the score.
- regime_direction (in context_values) — "mean_reversion" | "continuation".
Trader interpretation:
- signal == "bullish_confluence" + cluster_quality > 0.8 + regime_direction == "mean_reversion": confluence_level is a buy zone; expected_target is the reversion target.
- regime_direction == "continuation" (short gamma): breaks tend to run; use expected_target as the first profit taker.
Page design. Vertical price axis with cluster members as colored tick marks and confluence_level as a bold band. Arrow from current price to expected_target. Regime chip ("reversion" vs "continuation").
get/api/signals/advanced/gamma-vwap-confluence
Request
- Base URL: https://api.zerogex.io (the document declares no server; this is the origin it was published from)
- URL: https://api.zerogex.io/api/signals/advanced/gamma-vwap-confluence
- Auth: HTTP bearer
Query parameters
symbolstring
Response
Successful Response
unknown required
Changes
No recorded changes to this operation across all 1 revision of this API.