← drwnn.ai projects

Trading Signals Dashboard

Generated: 2026-07-05 08:26 UTC | 5-Day Consensus Signals with Market Indicators

Portfolio Simulation 9 positions
Total Value
$2,524,706
P&L
$24,706 (1.0%)
Cash Available
$1,166,052
Invested
$1,372,876
Initial Capital
$2,500,000
Portfolio Return
1.0%
~46% in cash
Alpha gap (cash-adjusted)
1.8%
outperforming
Benchmark (cash-adjusted)
0.8%
S&P 500 × 54% deployed
S&P 500 (100%)
1.5%
unadjusted reference
Period
2026-05-29 to 2026-07-02
Beta (vs SPY)
0.23
market sensitivity
Alpha (Jensen, annualized)
+12.9%
return after market beta
R² (fit quality)
0.15
n=24 daily obs
Caveat
R²=0.15 — SPY explains only ~15% of daily returns, so α and β should be read as directional, not precise. CAPM is a partial model for this strategy. n=24 daily observations — multifactor attribution becomes viable around n≥60.
Open Positions
TickerSharesAvg CostCurrentCostValueP&L $P&L %Entry Date
VTR 1407.58 $87.52 $92.52 $123,197 $130,229 $7,032 5.7% 2026-06-25 04:25
SBUX 2024.35 $102.44 $104.27 $207,374 $211,079 $3,705 1.8% 2026-07-01 02:53
CASY 131.94 $784.28 $797.42 $103,481 $105,215 $1,734 1.7% 2026-07-02 03:30
NTRS 635.60 $175.45 $176.50 $111,517 $112,184 $667 0.6% 2026-06-25 04:25
MAR 553.92 $372.95 $372.95 $206,583 $206,583 $0 0.0% 2026-07-03 03:29
BNY 566.48 $146.62 $146.62 $83,058 $83,058 $0 0.0% 2026-07-04 03:23
CAT 153.38 $1001.28 $963.53 $153,574 $147,784 $5,790 3.8% 2026-07-02 03:30
HAL 4736.84 $34.28 $32.96 $162,376 $156,126 $6,250 3.8% 2026-06-24 04:40
AKAM 1823.77 $121.57 $113.17 $221,716 $206,396 $15,320 6.9% 2026-06-25 04:25
Recent Trades
TickerDateActionSharesPriceAmountFrictionVolP&L
BNY 2026-07-04 03:23
@ EOD close
BUY 566.48 $146.62 $83,058 0.86x
MAR 2026-07-03 03:29
@ EOD close
BUY 553.92 $372.95 $206,583 1.00x
NTRS 2026-07-03 03:29
@ EOD close
SELL (trim) 309.81 $176.50 $54,682 $325 (0.6%)
STX 2026-07-02 17:00
@ next open
SELL 176.98 $900.75 $159,414 $2,556 (1.6%)
CASY 2026-07-02 03:30
@ next open
BUY 131.94 $784.28 $103,481 0.58x
CAT 2026-07-02 03:30
@ next open
BUY 153.38 $1001.28 $153,574 0.74x
VTR 2026-07-02 03:30
@ next open
BUY (topup) 444.83 $90.52 $40,266 0.69xcap
STX 2026-07-02 03:30
@ next open
BUY 179.82 $900.75 $161,970 0.78x
NTRS 2026-07-02 03:30
@ next open
SELL (trim) 318.28 $176.72 $56,247 $404 (0.7%)
WAB 2026-07-02 03:30
@ next open
SELL 371.22 $265.56 $98,581 $1,609 (1.6%)
Updated: 2026-07-04 03:23 | Simulated trading — not real money

Portfolio vs S&P 500 (normalized)

Loading…
Morning Brief 2026-07-04 03:25 UTC | Sections 1-6,8-10 templated; 7+11 by Claude

Market Overview

The system generated 25 signals today: 16 BUYs, 6 SELLs, 3 HOLDs. Trades executed: bought BNY for $83,058 (vol_scalar=0.86x; cert_boost=1.15x). Portfolio value $2,523,001 with $1,166,052 cash (46%) and +$23,001 total P&L (+0.92%).

Performance vs benchmark: portfolio +0.92% vs cash-adjusted S&P 500 -0.83% over 2026-05-29 to 2026-07-02 (system held ~46% cash; raw S&P -1.55%).
Cash trajectory: 46.2% today, 42.6% 30d avg (22 days tracked). PERSISTENT IDLE CASH: 19 consecutive days above 20%.
Self-tuning state: POSITION_SIZE=$126,150 (4% NAV × 1.25 cash_heavy, cash=46%) · sector_cap=5 (at 9 active positions) · stop_cooldown=7d (VIX=15.8).

Signal Summary

BUY Signals (16):
  • ADI (69% conf, WEAK)
  • AKAM (69% conf, WEAK) (held)
  • AME (84% conf, MODERATE)
  • CAT (69% conf, WEAK) (held)
  • CMI (84% conf, MODERATE)
  • CSCO (69% conf, WEAK)
  • FANG (63% conf, WEAK)
  • HAL (66% conf, WEAK) (held)
  • LNT (83% conf, MODERATE)
  • NEM (84% conf, MODERATE)
  • NTRS (84% conf, MODERATE) (held)
  • NUE (69% conf, WEAK)
  • ROST (84% conf, MODERATE)
  • SBUX (84% conf, MODERATE) (held)
  • STLD (69% conf, WEAK)
  • VTR (64% conf, WEAK) (held)
SELL Signals (6):
  • CB (69% conf, WEAK)
  • CBOE (84% conf, MODERATE)
  • CSX (84% conf, MODERATE)
  • INCY (69% conf, WEAK)
  • STX (84% conf, MODERATE)
  • VTRS (69% conf, WEAK)

Universe & Rotation Health

Recent promotions (7d): none. Deferred evictions: none. Boundary watch: no tickers at risk of soft veto. Long-term regime: bullish (50d MA=7401.46, 200d MA=6947.24, SPY 20d=-0.93%, VIX=16.15). Long-term trend intact. Fresh-BUY gate: clear — execute-time conditions (SPY vs 50d MA, VIX, 5d/20d returns, relief-rally pattern) are all non-suppressing.
Note: two distinct regime checks. Long-term regime = composite classifier (50d<200d MA death-cross OR 20d pullback OR SKEW spike) with hysteresis — the strategic backdrop. Fresh-BUY gate = execute-time momentum check (SPY vs 50d MA, VIX>22, SPY 20d<-3%, relief-rally) — the tactical entry filter. The Fresh-BUY gate is more sensitive and can fire on single-day crosses even when the long-term regime is bullish.

Recent Stops & Cooldowns

TickerStop DateReasonP&L %Days Remaining
STLD2026-07-01STOP-LOSS-7.25%4
DD2026-06-29STOP-LOSS-7.37%2
STX2026-07-02STOP-LOSS-CB-10.20%5

BUY signals on cooled-down tickers are suppressed for 7 calendar days.

Parallel Strategy: Antonacci

Total value: $492,267 (-1.55% retroactive since 2026-05-29) — actual portfolio $490,264 (-1.95% since real inception)
Holding: SPY (658.27 sh @ $759.57, entry 2026-06-03, now $744.78, unrealized -$9,736/-1.95%)
Comparison (retroactive since 2026-05-29): main system +0.92% vs Antonacci -1.55% (+2.47pp)
Indicators — 12m: SPY=+20.0%, TLT=-2.4%, GLD=+22.3%, BIL=-0.0%; 6m: SPY=+9.0%, TLT=-1.8%, GLD=-5.1%, BIL=+0.0%; SPY>200d ✓; TLT<200d ✗; GLD<200d ✗; BIL<200d ✗
Last decision (2026-07-03): HOLD — Hold SPY (still best eligible, 6m +9.02%, 12m +20.04%)

Screener Update

Cycle 25: 500/502 tickers processed (99.6%). Avg 89.0s per ticker. Awaiting backfill: 3 new index member(s) under the 200-day minimum (HONA 13d, FDXF 26d, Q 171d). Auto-resolves with time. Top candidates: SNA (score=0.88, n=8), MAR (score=0.79, n=8), STLD (score=0.64, n=6), VLO (score=0.62, n=7), TGT (score=0.61, n=7).

Certify pass: 0 of 60 certified (0.0%), 60 remaining in queue.

Adaptive catalog (cycles [22, 23, 24]): CATALOG NARROW — avg swap 41%. drop mixed_5 (won 29 of 227 cells in last 3 cycles)

Server Health

load avg 0.34. processes: run_daily, web_server.

Section 7 — Postmortem of Yesterday's Brief

  • AAPL gate bypass — INCONCLUSIVE (open items persist): Yesterday's notes flagged two sub-items: (1) an integration test covering the cert-floor rejection path in portfolio_execute._process_fresh_buy not yet confirmed written and merged, and (2) AAPL.csv not confirmed updated with price data past 2026-06-26. Today's data shows no new AAPL bypass in negative_cert_sp5_buy_alerts (the same historical entry from 2026-06-29 is the only record), but neither sub-item carries a confirmed-resolved signal in today's data. Both remain open until explicit engineering confirmation is provided.
  • STX same-session BUY/stop-loss exit — CONFIRMED as expected system behavior: Yesterday's notes described the 2026-07-02 STX entry and same-day STOP-LOSS-CB exit. Today's portfolio_active_cooldowns shows STX with 5 days remaining on its stop cooldown. Today's walk-forward shows STX signal = BUY with strong metrics (runtime_sharpe 3.38, 100% win rate, n_signals 4), and no re-entry appears in portfolio_recent_trades. The stop cooldown is correctly suppressing re-entry. No gate bug; system working as designed.
  • STX cooldown pnl_pct field divergence — INCONCLUSIVE: Yesterday's notes flagged that the cooldown record logs stop_pnl_pct = −10.2% while the trade record shows realised P&L of −1.58%. Today's portfolio_active_cooldowns still shows STX stop_pnl_pct = −10.2, consistent with yesterday's observation. The hypothesis that the cooldown field captures ATR-trigger percentage distance from cost basis rather than realised P&L has not been confirmed or refuted by today's data. The field definition audit remains open.

Hypotheses Due for Review

Due now:

  • Cert sp5 at suppression — replay selectivity profile (2d overdue): Within 45 days each deployed gate has at least n>=5 priced trades with non-null cert_sp5_at_suppression. The per-gate selectivity profile distinguishes gates that filter high-cert names (pct_sp5_gt_0p
  • Replay: cross-gate dedup attribution tag (3d overdue): Within 30 days, ≥90% of dedup-skipped events carry a populated primary_suppressor_gate. Empirical question to answer at grade: is eval-order bias material? If cross-gate dedup ratio per gate is >25% o

Upcoming grades: pre_open_gap_gate in 6d (2026-07-10).

Gate Alpha Contribution

Gate30d-inf30d-cash60d-inf60d-cash90d-inf90d-cash
bootstrap_ci_gate+40,849+40,889-26,982-82,099-46,109-10,350
legacy_n_lt_5-31,840-22,528-41,878-10,038-21,050+20,829
legacy_quality-8,797-17,494+9,646+949-43,616-38,267
topup_cooldown-1,671-1,671+37,288-0

Reading the table: each cell is the gate's alpha contribution over that window — positive (green) = the gate saved money by blocking losing trades, negative (red) = the gate cost money by blocking winners. Gates were deployed to prevent rare large losses (FCX-class -$15K). A 30-day window may not contain such an event; the gate's value is in tail-risk, not average-window P&L.

Notes to the Developer

  • GATE BYPASS — AAPL: BUY executed 2026-06-29 with cert_sp5_at_entry = −0.446 (below floor 0.0). Defense-in-depth cert check in portfolio_execute._process_fresh_buy should have suppressed this — investigate which code path landed the order. Two sub-items remain open: (1) integration test covering the cert-floor rejection path in portfolio_execute._process_fresh_buy has not been confirmed written and merged; (2) AAPL.csv has not been confirmed updated with price data past 2026-06-26. Until both are confirmed closed, any future AAPL signal evaluation rests on stale CSV data and the rejection path is untested end-to-end.
  • STX cooldown pnl_pct field definition — audit still open: The active cooldown record for STX logs stop_pnl_pct = −10.2% against a realised trade P&L of −1.58%. The leading hypothesis is that the cooldown field captures the ATR-trigger percentage distance from cost basis (i.e., the trigger level is ~10.2% below the cost-basis reference) rather than the realised exit P&L. Confirm the field definition in the cooldown schema and add a code comment or schema annotation clarifying which quantity is stored, to prevent future misreading of this field in postmortems or monitoring dashboards.
  • CASY cert_sp5_at_entry missing from BUY trade record: The 2026-07-02 03:30 BUY for CASY (cert_committee_at_entry = tree_heavy_5, $103,480, 131.94 shares) does not carry a cert_sp5_at_entry field in portfolio_recent_trades, unlike the contemporaneous STX and CAT entries which do. If this field is populated upstream for all fresh BUYs, its absence here warrants a check of whether the cert lookup succeeded for CASY at execution time. If the tree_heavy_5 committee variant does not expose a scalar cert_sp5 comparable to the floor, confirm that the gate evaluation path handles this variant correctly and that the absence of the field is intentional rather than a silent lookup failure.
  • BNY BUY decision_date lag — note for awareness: The BNY BUY executed 2026-07-04 03:23 carries decision_date = 2026-07-02, a two-day gap between decision and execution. The trade also shows priced_from = placeholder_close. Confirm this lag is attributable to a holiday or weekend fill-delay cycle (2026-07-04 is US Independence Day) and that the placeholder price will be repriced against a real fill before P&L attribution is finalised.
  • MAR BUY priced from placeholder_close: The 2026-07-03 03:29 MAR BUY ($206,583, 553.92 shares, cert_sp5 = 3.926) is also priced_from = placeholder_close with reprice_attempts = 1. Verify the reprice cycle completes and that the final fill price is recorded before this trade feeds into realised P&L or drawdown calculations.

Meta-Loop Proposals · 0 pending · 2 approved · 0 rejected · 0 deferred

Generated: 2026-06-30T11:50:38.154607Z · Read-only view; decisions via meta_decide.py CLI.
Proposer reasoning (first 500 chars; full in ~/Money/meta_proposals.md)
Key observations from the data: 1. **mixed_5 committee cohort outperforms**: by_committee_at_close shows mixed_5 at mean_pnl_pct=10.892, win_rate=100% (n=4, below n>=8 gate). tree_heavy_5 shows mean=2.188, win_rate=55.6% (n=9). The brief notes "CATALOG NARROW — avg swap 43%. drop mixed_5 (won 26 of 227 cells in last 3 cycles)." This is an interesting tension — mixed_5 positions in closure log look great but catalog is narrowing away from it. Below gate so not actionable per se, but worth tracki...
Tag closures with near_full_vol_scalar_at_entry flag for persistent cohort tracking
id vol_scalar_near_full_cohort_tag
APPROVED · shipped
Rule: At position close, write a boolean field `near_full_vol_scalar_at_entry` (True if vol_scalar_at_entry >= 0.90) to the closure log record, enabling persistent cohort attribution by this dimension.
Rationale: Closure cohort by vol_scalar_at_entry shows bucket 'near_full' (n=17, passes n>=8 gate) with mean_pnl_pct=1.261 vs overall 3.628 — a delta of -2.367pp and win_rate 64.7% vs 69.6%. This is the largest negative cohort delta in the current data. Without a persistent boolean tag on closure records, this dimension will lose fidelity as the raw vol_scalar value drifts. Tagging it at close time preserves the signal for future grading.
Expected: Within 60 days the tagged cohort accumulates n>=8 closures, letting the system confirm or refute whether near-full vol scalar is a persistent drag on mean_pnl_pct. Predicted: near_full bucket continues to underperform by >=1.5pp vs non-near_full bucket.
Where: closure_log.py:_build_closure_record — add near_full_vol_scalar_at_entry boolean field computed from vol_scalar_at_entry stored at trade open  |  Check after: 60 days  |  ✓ claims additive
Metrics + rollback + evidence
Metrics to check:
  • cohort_near_full_vol_scalar_mean_pnl_pct
  • cohort_non_near_full_vol_scalar_mean_pnl_pct
  • cohort_near_full_vol_scalar_n
  • cohort_near_full_vol_scalar_win_rate_pct
Rollback: Remove the `near_full_vol_scalar_at_entry` field write from _build_closure_record; existing records are unaffected (field simply absent on older rows).
Evidence: cohort_log
APPROVED · shipped by claude_auto at 2026-06-30T11:51:10.135832+00:00
Notes: Additive instrumentation only: tagging closures with a computed boolean at entry time (vol_scalar_at_entry >= 0.90) for cohort tracking. No gate logic, threshold, or multiplier modified. Entry-time cohort dimension is correct (not *_at_close). Sample n=17 already exceeds n>=8 gate; 60-day window should sustain it. Evidence sources valid. Rollback is single-field removal. Research diagnostic with visibility gain, no behavior change.
Re-decide if needed:
./meta.sh {approve,reject,defer} vol_scalar_near_full_cohort_tag --notes "..."
Add morning brief alert when an executed BUY had cert_sp5_at_entry < 0
id negative_cert_sp5_buy_alert
APPROVED · shipped
Rule: In the morning brief data collector, scan the previous day's executed BUY trades for cert_sp5_at_entry < 0 and emit a Notes-to-Developer alert with the ticker, entry date, and observed cert_sp5 value.
Rationale: The 2026-06-30 postmortem (Section 7) confirms 'AAPL BUY executed 2026-06-29 with cert_sp5_at_entry [negative] — confirmed as a real gate anomaly, investigation ongoing.' Without an automated alert this anomaly class is only caught manually. A cheap daily scan of yesterday's executed BUYs for cert_sp5_at_entry < 0 surfaces future occurrences reliably without changing any gate's behavior.
Expected: Zero false-positive alerts on normal BUYs (cert_sp5 >= 0). Any recurrence of the negative cert_sp5 anomaly appears in the brief automatically within one trading day. Within 30 days either 0 recurrences (gate fixed) or recurrence pattern is identified.
Where: brief_data.py:_collect_data — add _check_negative_cert_sp5_buys helper called from here that scans recent trade log for cert_sp5_at_entry < 0 on BUY executions  |  Check after: 30 days  |  ✓ claims additive
Metrics + rollback + evidence
Metrics to check:
  • negative_cert_sp5_buy_alert_count_30d
  • false_positive_alert_rate_pct
Rollback: Remove the _check_negative_cert_sp5_buys call from _collect_data; the helper is never invoked and no alert fires.
Evidence: brief, logs
APPROVED · shipped by claude_auto at 2026-06-30T11:51:12.046046+00:00
Notes: Purely additive instrumentation: scans historical trade log for anomaly detection and emits diagnostic alert. No gate thresholds modified, no entry/close cohort confound, additive_check=true. Single-file rollback (brief_data.py). Evidence sources (brief, logs) exist. Diagnostic purpose only.
Re-decide if needed:
./meta.sh {approve,reject,defer} negative_cert_sp5_buy_alert --notes "..."
BUY SIGNALS (16)
TickerSignalStrengthConfidencePositionTargetStopAccuracySharpeModeChart
ADI BUY WEAK 69% 69% 394.15 363.86 67% 1.06 momentum Chart
AKAM BUY WEAK 69% 69% 114.71 107.83 75% 2.91 momentum Chart
AME BUY MODERATE 84% 111% 239.95 231.51 67% 0.93 contrarian Chart
CAT BUY WEAK 69% 69% 1013.05 946.39 0% 0.00 Chart
CMI BUY MODERATE 84% 111% 702.34 652.15 100% 5.00 momentum Chart
CSCO BUY WEAK 69% 69% 115.17 109.19 100% 2.62 momentum Chart
FANG BUY WEAK 63% 52% 180.58 173.34 75% 2.48 momentum Chart
HAL BUY WEAK 66% 60% 34.43 33.02 100% 5.00 momentum Chart
LNT BUY MODERATE 83% 108% 77.91 75.70 20% -0.95 contrarian Chart
NEM BUY MODERATE 84% 111% 100.96 91.22 83% 2.45 momentum Chart
NTRS BUY MODERATE 84% 111% 175.89 169.61 100% 0.00 Chart
NUE BUY WEAK 69% 69% 243.22 231.54 75% 3.24 momentum Chart
ROST BUY MODERATE 84% 111% 219.81 206.00 100% 0.00 Chart
SBUX BUY MODERATE 84% 111% 107.14 101.98 75% 2.96 momentum Chart
STLD BUY WEAK 69% 69% 248.49 235.23 100% 5.00 momentum Chart
VTR BUY WEAK 64% 55% 89.43 86.26 100% 0.00 Chart
SELL SIGNALS (6)
TickerSignalStrengthConfidencePositionTargetStopAccuracySharpeModeChart
CB SELL WEAK 69% 69% 336.64 348.94 100% 2.96 momentum Chart
CBOE SELL MODERATE 84% 111% 227.12 256.57 80% -0.01 momentum Chart
CSX SELL MODERATE 84% 111% 46.95 48.62 33% 1.08 momentum Chart
INCY SELL WEAK 69% 69% 111.70 119.21 100% 4.14 momentum Chart
STX SELL MODERATE 84% 111% 855.49 976.78 80% 2.68 contrarian Chart
VTRS SELL WEAK 69% 69% 15.95 16.77 83% 3.42 momentum Chart

Raw Signals

DAILY TRADING SIGNALS — 2026-06-27 04:39
===========================================================================

    Ticker  Signal    Strength   Conf  Position      Target        Stop  Accuracy   Sharpe        Mode
---------------------------------------------------------------------------------------------------------
       ADI     BUY        WEAK    69%      69%     394.15     363.86       67%    1.06    momentum
      AKAM     BUY        WEAK    69%      69%     114.71     107.83       75%    2.91    momentum
       AME     BUY    MODERATE    84%     111%     239.95     231.51       67%    0.93  contrarian
      CASY    HOLD           -     0%         —           —           —      100%    5.00    momentum
       CAT     BUY        WEAK    69%      69%    1013.05     946.39        0%    0.00    momentum
        CB    SELL        WEAK    69%      69%     336.64     348.94      100%    2.96    momentum
      CBOE    SELL    MODERATE    84%     111%     227.12     256.57       80%   -0.01    momentum
       CMI     BUY    MODERATE    84%     111%     702.34     652.15      100%    5.00    momentum
      CSCO     BUY        WEAK    69%      69%     115.17     109.19      100%    2.62    momentum
       CSX    SELL    MODERATE    84%     111%      46.95      48.62       33%    1.08    momentum
       DAL    HOLD           -     0%         —           —           —      100%    3.15  contrarian
      FANG     BUY        WEAK    63%      52%     180.58     173.34       75%    2.48    momentum
       HAL     BUY        WEAK    66%      60%      34.43      33.02      100%    5.00    momentum
      INCY    SELL        WEAK    69%      69%     111.70     119.21      100%    4.14    momentum
       LNT     BUY    MODERATE    83%     108%      77.91      75.70       20%   -0.95  contrarian
       NEM     BUY    MODERATE    84%     111%     100.96      91.22       83%    2.45    momentum
      NTRS     BUY    MODERATE    84%     111%     175.89     169.61      100%    0.00    momentum
       NUE     BUY        WEAK    69%      69%     243.22     231.54       75%    3.24    momentum
      ROST     BUY    MODERATE    84%     111%     219.81     206.00      100%    0.00    momentum
      SBUX     BUY    MODERATE    84%     111%     107.14     101.98       75%    2.96    momentum
      STLD     BUY        WEAK    69%      69%     248.49     235.23      100%    5.00    momentum
       STX    SELL    MODERATE    84%     111%     855.49     976.78       80%    2.68  contrarian
       VTR     BUY        WEAK    64%      55%      89.43      86.26      100%    0.00    momentum
      VTRS    SELL        WEAK    69%      69%      15.95      16.77       83%    3.42    momentum
       WAB    HOLD           -     0%         —           —           —      100%    0.00    momentum

===========================================================================

BUY SIGNALS:
         AME    MODERATE  (84% confidence)
         CMI    MODERATE  (84% confidence)
         NEM    MODERATE  (84% confidence)
        NTRS    MODERATE  (84% confidence)
        ROST    MODERATE  (84% confidence)
        SBUX    MODERATE  (84% confidence)
         LNT    MODERATE  (83% confidence)
         ADI        WEAK  (69% confidence)
        AKAM        WEAK  (69% confidence)
         CAT        WEAK  (69% confidence)
        CSCO        WEAK  (69% confidence)
         NUE        WEAK  (69% confidence)
        STLD        WEAK  (69% confidence)
         HAL        WEAK  (66% confidence)
         VTR        WEAK  (64% confidence)
        FANG        WEAK  (63% confidence)

SELL SIGNALS:
        CBOE    MODERATE  (84% confidence)
         CSX    MODERATE  (84% confidence)
         STX    MODERATE  (84% confidence)
          CB        WEAK  (69% confidence)
        INCY        WEAK  (69% confidence)
        VTRS        WEAK  (69% confidence)

HOLD: CASY, DAL, WAB

---------------------------------------------------------------------------
Past performance does not guarantee future results. Not financial advice.
Generated: 2026-06-27 04:39

Past performance does not guarantee future results. Not financial advice.