Internal Reference Document
Risk Scoring Methodology
How Bentley Capital TX calculates Tech Risk Appetite and Market Risk Tone — a transparent points model where every number is auditable and explainable. Use this document to evaluate, explain to WB, and refine the scoring model over time.
1 Philosophy
Version 1 used a normalized scoring model with a theoretical maximum that was never achievable in practice. This meant a strong day like +68 looked moderate when it was actually quite bullish — and the math was opaque. Version 2 uses a simple points model: each signal earns a fixed number of points based on clearly defined thresholds. The total IS the score, no normalization required. Every number is explainable in plain English.
"+16 out of 36" means something concrete. "+68%" of a theoretical maximum that never occurs means nothing. You should be able to explain every point to WB in 30 seconds.
NVDA up 0.1% scores differently from NVDA up 2.5%. Each signal has two or three tiers: strong, mild, and neutral. A tiny move in the right direction earns half points, not full points.
Friday April 17 is the proof: Tech scored +16/36 (barely risk-on) while Market scored +28/34 (strongly risk-on). That divergence — macro tailwinds excellent, tech not responding at full magnitude — was the peak signal. A single blended score would have hidden it.
VIX at 32 falling 4% is still a fear environment. That's why VIX is scored on both its absolute level AND its daily change separately. A falling VIX at 32 earns change points but loses level points — the net is still negative, which is correct.
2 The Two Meters
Tech Risk Appetite answers: "Is money willing to flow into our names right now?" Market Risk Tone answers: "What is the broader macro backdrop doing?" They share VIX and 10Y yield scoring but use different equity signals.
- QQQ vs SPY gap ±8 pts
- NVDA daily change ±6 pts
- BULZ daily change ±6 pts
- VIX level ±6 pts
- VIX change ±4 pts
- 10Y level ±4 pts
- 10Y change ±2 pts
- SPY daily change ±6 pts
- Russell 2000 change ±4 pts
- VIX level ±6 pts
- VIX change ±4 pts
- 10Y level ±4 pts
- 10Y change ±2 pts
- Dow Jones change ±4 pts
- DXY level + change ±4 pts
- WTI level + change ±4 pts
3 Score Ranges & States
States are determined by what percentage of the maximum score you've reached. The threshold is ~36% of max in either direction — enough signals must agree before a state is called. The neutral band is intentionally wide.
Five sub-labels provide granularity within each state:
4 Signal Scoring Tables
Every signal, every threshold, every point value. Nothing hidden.
The most important single signal for this dashboard. When QQQ leads SPY, institutional money is specifically bidding tech. When it lags, rotation out of tech is happening.
| Condition | Points |
|---|---|
| QQQ leads SPY by more than 0.5% | +8 |
| QQQ leads SPY by 0.2% to 0.5% | +4 |
| Within ±0.2% of each other | 0 |
| QQQ lags SPY by 0.2% to 0.5% | −4 |
| QQQ lags SPY by more than 0.5% | −8 |
NVDA is the bellwether for AI/semiconductor sentiment. A 0.1% move is noise. A 2.5% move is conviction. Thresholds reflect that distinction.
| Condition | Points |
|---|---|
| Up more than 2% | +6 |
| Up 0.5% to 2% | +3 |
| Flat (±0.5%) | 0 |
| Down 0.5% to 2% | −3 |
| Down more than 2% | −6 |
BULZ is a leveraged tech basket — it moves more than individual names, so thresholds are slightly lower than NVDA. A 1.5% BULZ move is the equivalent conviction signal to a 2% NVDA move.
| Condition | Points |
|---|---|
| Up more than 1.5% | +6 |
| Up 0.5% to 1.5% | +3 |
| Flat (±0.5%) | 0 |
| Down 0.5% to 1.5% | −3 |
| Down more than 1.5% | −6 |
VIX level sets the fear regime. A VIX falling from 34 to 32 is still a fear environment — level dominates. This is the core design principle: a falling VIX at 32 should not score as risk-on.
| VIX Level | Regime | Points |
|---|---|---|
| Below 15 | Complacency | +6 |
| 15 – 18 | Calm | +4 |
| 18 – 22 | Elevated | 0 |
| 22 – 28 | Fear building | −4 |
| 28 – 35 | Active fear | −6 |
| 35+ | Panic | −8 |
| Condition | Points |
|---|---|
| Down more than 3% | +4 |
| Down 1% to 3% | +2 |
| Flat (±1%) | 0 |
| Up 1% to 3% | −2 |
| Up more than 3% | −4 |
High yields compress growth stock multiples directly. The 4.0–4.5% zone is the current ambiguous range — appropriately neutral. Above 4.5% is a daily headwind for tech regardless of direction.
| 10Y Level | Regime | Points |
|---|---|---|
| Below 3.5% | Supportive for growth | +4 |
| 3.5% – 4.0% | Manageable | +2 |
| 4.0% – 4.5% | Neutral | 0 |
| 4.5% – 5.0% | Headwind | −2 |
| 5.0% – 5.5% | Significant headwind | −4 |
| 5.5%+ | Severe pressure | −6 |
| Condition | Points |
|---|---|
| Down more than 1.5% | +2 |
| Down 0.5% to 1.5% | +1 |
| Flat (±0.5%) | 0 |
| Up 0.5% to 1.5% | −1 |
| Up more than 1.5% | −2 |
| Condition | Points |
|---|---|
| Up more than 0.6% | +6 |
| Up 0.2% to 0.6% | +3 |
| Flat (±0.2%) | 0 |
| Down 0.2% to 0.6% | −3 |
| Down more than 0.6% | −6 |
Russell participation confirms broad market health vs narrow large-cap moves.
| Condition | Points |
|---|---|
| Up more than 0.6% | +4 |
| Up 0.2% to 0.6% | +2 |
| Flat (±0.2%) | 0 |
| Down 0.2% to 0.6% | −2 |
| Down more than 0.6% | −4 |
The Dow confirms broad blue-chip participation — financials, industrials, consumer names. A +800 point Dow day with SPY and Russell both green is unambiguous broad market strength that deserves its own signal.
| Condition | Points |
|---|---|
| Up more than 0.6% | +4 |
| Up 0.2% to 0.6% | +2 |
| Flat (±0.2%) | 0 |
| Down 0.2% to 0.6% | −2 |
| Down more than 0.6% | −4 |
A falling dollar is good for risk assets and tech multinationals. Scored on both level (regime) and daily change (momentum). Combined max is capped at ±4.
| Level | Points | Daily Change | Points |
|---|---|---|---|
| Below 98 | +1 | Down >0.3% | +3 |
| 98 – 102 | 0 | Down 0.1–0.3% | +1 |
| 102 – 106 | −1 | Flat (±0.1%) | 0 |
| 106+ | −2 | Up 0.1–0.3% | −1 |
| Up >0.3% | −3 |
The $65–$80 range is goldilocks — low enough not to threaten inflation, high enough not to signal demand collapse. Above $90 it becomes an inflation story that hurts tech multiples. Scored on both level and change, capped at ±4.
| Level | Points | Daily Change | Points |
|---|---|---|---|
| Below $65 | 0 | Down >1.5% | +3 |
| $65 – $80 | +1 | Down 0.5–1.5% | +1 |
| $80 – $90 | 0 | Flat (±0.5%) | 0 |
| $90 – $100 | −1 | Up 0.5–1.5% | −1 |
| $100+ | −2 | Up >1.5% | −3 |
5 Real Example — Friday April 17, 2026
This is what the model would have scored on a day that felt like a peak — excellent macro backdrop but tech leadership fading after a strong multi-day run.
| Signal | Value | Points | Why |
|---|---|---|---|
| QQQ vs SPY | +0.10% gap | 0 | Within ±0.2% — neutral |
| NVDA | +1.68% | +3 | Mild bull (0.5–2%) |
| BULZ | +0.81% | +3 | Mild bull (0.5–1.5%) |
| VIX level | 16.90 | +4 | Calm (15–18) |
| VIX change | −5.9% | +4 | Strong fall (>3%) |
| 10Y level | 4.24% | 0 | Neutral zone (4.0–4.5%) |
| 10Y change | −1.6% | +2 | Mild bull (down >1.5%) |
| Total | +16 | 44% of max — Cautious Risk-On | |
| Signal | Value | Points | Why |
|---|---|---|---|
| SPY | +1.21% | +6 | Strong bull (>0.6%) |
| Russell | +2.11% | +4 | Strong bull (>0.6%) |
| Dow | +1.90% | +4 | Strong bull (>0.6%) |
| VIX level | 16.90 | +4 | Calm (15–18) |
| VIX change | −5.9% | +4 | Strong fall (>3%) |
| 10Y level | 4.24% | 0 | Neutral zone |
| 10Y change | −1.6% | +2 | Mild bull |
| DXY | 97.93, −0.28% | +4 | Below 98 + falling >0.3% |
| WTI | $81.31, −10.81% | +4 | Goldilocks level + crashing |
| Total | +32 | 84% of max — Strong Risk-On | |
The divergence told the story: market conditions were excellent but tech was not responding at full magnitude after a strong multi-day run. Tech at +16 (barely risk-on) vs Market at +28 (strongly risk-on) is a classic peak-sniff signal — macro tailwinds present but tech leadership fading.
6 Meter Alignment
Below the two meters, a single line describes the relationship between them. Disagreement is often more actionable than agreement.
7 How to Tune the Model
All scoring logic lives in risk-score.js in the root folder. Each signal has its own clearly named function.
Widen the neutral band. For NVDA, increase the flat zone from ±0.5% to ±1%. For QQQ vs SPY, increase from ±0.2% to ±0.3%.
Change the max point value directly. QQQ vs SPY is currently ±8 — the most important signal. If you feel VIX level should matter more, raise it from ±6 to ±8. Remember to update this document when you do.
VIX and 10Y level thresholds are most likely to need recalibration. If VIX spends weeks between 22–28, the "fear building" zone may need to shift. Review quarterly.
8 Limitations & Honest Caveats
The score is most meaningful during regular market hours (8:30am–3:00pm CT). Pre-market prices on thin volume can produce scores that don't reflect actual session conditions.
On FOMC days, NFP mornings, or major earnings releases, the model may lag reality by 45 seconds while waiting for a refresh. Always check the calendar panel and override your read if a known catalyst just hit.
It scores what it sees, not what it means. A VIX spike from options expiration scores the same as one from a genuine credit event. Use the interpretation line as a prompt to investigate, not as a conclusion.