Interactive Brokers Client Services
Jun 17 12:40 AM
Message Center Notification
Interactive Brokers ticket response regarding Kanex account messaging.
Joaquín Medina
Jun 17 12:34 AM
RE: Re:[## 708 ##] RE: RMA for EXT-4KHD70M
AVIT Vision requests credit memo for destroyed equipment per RMA 708.
Microsoft Outlook
Jun 16 10:36 PM
Undeliverable: FW: TIER 3 Trending Stocks Part 2 (1 New Red Candle): $DELL, $OSCR, $ONDS, $ZETA, $LMND and $TMC (June 17, 2026-daily)
Microsoft Outlook: Undeliverable: FW: TIER 3 Trending Stocks Part 2 (1 New Red
Interactive Brokers Client Services
Jun 16 9:59 PM
Security Notice for User k******8: Verify Log In
Fake Interactive Brokers security alert requesting account verification.
Microsoft Outlook
Jun 16 9:38 PM
Undeliverable: FW: $QCOM (June 17, 2026-daily)
Microsoft Outlook: Undeliverable: FW: $QCOM (June 17, 2026-daily)
TDhruv Sharma
Jun 16 9:05 PM
[Teams oneOnOne] (Teams DM)
Dhruv Sharma: [Teams oneOnOne] (Teams DM)
Fabiola Hernandez
Jun 16 6:55 PM
Tomorrow is Spirit Day – Souvenir T-Shirt Day
Spirit Day reminder: kids invited to wear souvenir t-shirt tomorrow at camp.
Derrick
Jun 16 6:19 PM
Request for More Info: EXT-USBC2XI-100M - Dual-Host USB 3.2 Gen 1 Extender over CAT6a — USB-C & USB-B Inputs, 100m/328ft
Product inquiry for USB extender; requesting pricing, specs, availability.
Sydnee Agent (AI)
Jun 16 6:00 PM
[Spread Cal] 2026-06-17 — per-stock max_spread_bps results
Sydnee Agent (AI): [Spread Cal] 2026-06-17 — per-stock max_spread_bps results
Sydnee Agent (AI)
Jun 16 5:40 PM
[Calibration Daily] 2026-06-17
Sydnee Agent (AI): [Calibration Daily] 2026-06-17
Sydnee Agent (AI)
Jun 16 5:30 PM
Sydnee algo daily — dev $-2,699 · prod $+0 · 6d window
Sydnee Agent (AI): Sydnee algo daily — dev $-2,699 · prod $+0 · 6d window
Find My
Jun 16 5:24 PM
A sound was played on Kelvin’s iPad mini.
Find My: A sound was played on Kelvin’s iPad mini.
Sammy Cemo, Matt Pourcho and Anthony DeLorenzo
Jun 16 4:04 PM
New Pricing | Fortune 40 Credit | STNL Industrial | 11 Yr. WALT | SoCal
⚠ PHISHING: employee impersonation: display name matches 'anthony' but sender is cbre.com
Microsoft Store
Jun 16 3:23 PM
Meet the new Surface lineup—with limited-time offers
Microsoft Store: Meet the new Surface lineup—with limited-time offers
[email protected]
Jun 16 2:34 PM
New Funding Program
Funding broker offering working capital solutions and consolidation services.
Sammy Cemo and Anthony DeLorenzo
Jun 16 2:03 PM
Single-Story Owner-User Offering in Newport Beach
⚠ PHISHING: employee impersonation: display name matches 'anthony' but sender is cbre.com
Aarti Gupta
Jun 16 1:53 PM
Re: CR-TOUCH6R 6" Widescreen Touch Panel with Knob, RS232/RS485 & PoE
Aarti Gupta: Re: CR-TOUCH6R 6" Widescreen Touch Panel with Knob, RS232/RS
[email protected]
Jun 16 1:43 PM
Action required: Your June booking bonuses expire soon
⚠ PHISHING: phishing subject pattern: 'Action required' from external sender vacationoffer.com
TAnthony Patino
Jun 16 1:30 PM
[Teams oneOnOne] (Teams DM)
LK account overdrawn; bank fee applied, needs replenishment before QB charge.
TAnthony Patino
Jun 16 1:27 PM
[Teams oneOnOne] (Teams DM)
Anthony Patino sent a brief Teams DM referencing 'LK'.
TAnthony Patino
Jun 16 1:27 PM
[Teams oneOnOne] (Teams DM)
Anthony Patino reports insufficient funds issue.
Amazon Payments
Jun 16 12:44 PM
Action requise sur le compte Amazon Payments
Fake Amazon Payments suspension notice in French requesting account verification.
Nick Daniel
Jun 16 11:04 AM
Quick question
TriNet HR solution sales inquiry.
Aarti Gupta
Jun 16 10:04 AM
Re: Order help #1227
Aarti Gupta: Re: Order help #1227
Aarti Gupta
Jun 16 10:03 AM
Re: Order help #1227
Aarti Gupta: Re: Order help #1227
Aarti Gupta
Jun 16 9:59 AM
EXT-USBCPD4K-70M 18Gbps USB-C 4K60 HDBaseT 3.0 Extender with 100W PD (70m)
Aarti Gupta: EXT-USBCPD4K-70M 18Gbps USB-C 4K60 HDBaseT 3.0 Extender with
Sean McGinley
Jun 16 9:58 AM
Order help #1227
Customer inquiry about HDMI extender transmitter compatibility for order #1227.
IBKR FYI
Jun 16 9:51 AM
FYI: Upcoming Exchange Holidays
Exchange holiday notice: MIAX, NASDAQ, NYSE closed June 19.
IBKR FYI
Jun 16 9:27 AM
FYI: Upcoming Exchange Holidays
NASDAQ/MIAX exchange holiday June 19, 2026 — no trading.
Hims
Jun 16 9:02 AM
Kelvin - action required on your account
⚠ PHISHING: phishing subject pattern: 'action required' from external sender icloud.com
[email protected]
Jun 16 9:02 AM
You have a new estimate
Suspicious medical estimate link from Providence—verify legitimacy before clicking.
Mail Delivery System
Jun 16 8:20 AM
Mail delivery failed [Invoice #36077 PO: SH260526762J]
Mail delivery failed for invoice #36077 to Mike Vanderkamp; recipient address rejected.
Mail Delivery System
Jun 16 8:19 AM
Mail delivery failed [Invoice #36078 PO: SH260430677J]
Mail delivery failed: [email protected] → [email protected] for invoice #36078.
Mail Delivery System
Jun 16 8:19 AM
Mail delivery failed [Invoice #36079 PO: SH2606101007J]
Mail delivery failure: invoice to [email protected] rejected by recipient server.
TDhruv Sharma
Jun 16 8:16 AM
[Teams oneOnOne] (Teams DM)
Dhruv Sharma: [Teams oneOnOne] (Teams DM)
Zoho Campaigns
Jun 16 7:55 AM
Campaign "NEW USB-C + USB-B Dual-Host Extender · 100m" has been successfully Sent - Zoho Campaigns
Zoho Campaigns notification: USB-C/USB-B extender product campaign sent successfully.
Ali Pacheco
Jun 16 7:53 AM
Request for More Info: EXT-USBC2XI-100M - Dual-Host USB 3.2 Gen 1 Extender over CAT6a — USB-C & USB-B Inputs, 100m/328ft
Product inquiry for USB 3.2 extender from external vendor.
KanexPro
Jun 16 7:51 AM
NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro: NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro
Jun 16 7:50 AM
NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro: NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro
Jun 16 7:50 AM
NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro: NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro
Jun 16 7:49 AM
NEW USB-C + USB-BDual-Host Extender · 100m
KanexPro: NEW USB-C + USB-BDual-Host Extender · 100m
TDhruv Sharma
Jun 16 7:33 AM
[Teams oneOnOne] (Teams DM)
Dhruv Sharma: [Teams oneOnOne] (Teams DM)
TDhruv Sharma
Jun 16 7:32 AM
[Teams oneOnOne] (Teams DM)
Dhruv Sharma: [Teams oneOnOne] (Teams DM)
Bank of America
Jun 16 6:16 AM
Your available account balance is low
Bank of America: Your available account balance is low
Let's Talk Supply Chain
Jun 16 6:01 AM
Are you ready?
Suspicious meeting confirmation from unknown sender with obfuscation.
Interactive Brokers Client Services
Jun 16 5:18 AM
Message Center Notification
Interactive Brokers ticket response regarding Kanex account notification.
Benjamin & Williams
Jun 16 5:03 AM
Commercial Claim Discovery Documents Our file:D-8222 Debtor: VICTORIA ROPA ELEGANTE
Fake debt collector demanding payment on unknown commercial claim within 24h.
IBKR FYI
Jun 16 5:01 AM
FYI: Option Expiration Notification
Oracle options expiring 18JUN2026 — immediate action required.
IBKR FYI
Jun 16 5:00 AM
FYI: Option Expiration Notification
MSTR call option expiring 18JUN2026; action needed if extending position.
Sydnee Agent (AI)
Jun 16 4:25 AM
Sydnee nightly — exit_flow audit 2026-06-16 — 0P0 8P1 6R
Sydnee Agent (AI): Sydnee nightly — exit_flow audit 2026-06-16 — 0P0 8P1 6R
Sydnee nightly — entry_flow audit 2026-06-01 — 0P0 5P1 10R
AI verdict
employee
high
· confidence: high
· by internal-exempt
“Sydnee Agent (AI): Sydnee nightly — entry_flow audit 2026-06-01 — 0P0 5P1 10R”
Reasoning: @sydnee.ai is a protected domain — hard exemption
Sydnee nightly — entry_flow audit — 2026-06-01
P0 findings: 0 P1 findings: 5 Risks: 10
- Area: Entry Flow (Monday theme)
- Bugs found (P0 / P1): 0 / 5 (1 new, 4 carried)
- Risks noted: 10 (2 new, 8 carried)
Cross-check: `git log --oneline -30` and `docs/strategy_decisions.md` reviewed.
`docs/audit_2026-05-31_config_drift.md` (most recent audit) reviewed. All 4 carried P1s
confirmed still present in current code. `git log` shows no commits since `e1981c3` that
touch entry-flow time gates or the 1m BXt bias gate.
---
Full report (dev branch): https://github.com/kanex1/sydnee.signals/blob/dev/docs/audit_2026-06-01_entry_flow.md
Reply FROM [email protected] to [email protected] to request fixes, e.g.:
"code_task on sydnee-signals-dev: apply fix for the P0 about RVOL threshold in bot.py"
Sydnee Agent will propose + you APPROVE (or plain 'approve') + auto-push to dev.
--- Full audit below (first 12 KB) ---
# Nightly Audit 2026-06-01 — ENTRY FLOW
## Summary
- Area: Entry Flow (Monday theme)
- Bugs found (P0 / P1): 0 / 5 (1 new, 4 carried)
- Risks noted: 10 (2 new, 8 carried)
Cross-check: `git log --oneline -30` and `docs/strategy_decisions.md` reviewed.
`docs/audit_2026-05-31_config_drift.md` (most recent audit) reviewed. All 4 carried P1s
confirmed still present in current code. `git log` shows no commits since `e1981c3` that
touch entry-flow time gates or the 1m BXt bias gate.
---
## Findings
### BUG [P1] (new): 1m BXt bias gate runs before time gates — open-30 / overnight gap poisons pending state
**File:** `bot.py:5436–5452` (1m BXt bias gate) vs `bot.py:5494–5503` (time gates)
**Evidence:**
```python
# bot.py:5436 — 1m BXt bias gate (micro_scale block)
micro_scale = 1.0
if trigger_type == "rsi_extreme":
...
if _1m_against_e:
if _pend_dir != raw_sig:
ss._rsi_ext_pending_dir = raw_sig # ← sets pending
self._log_activity(..., "RSI EXTREME PENDING: ... deferring 1 bar", "warn")
return # ← exits BEFORE time gates
# bot.py:5494–5503 — time gates (never reached on the return above)
in_overnight_gap = 3 * 60 + 50 <= t_min < 4 * 60
in_open_30 = 9 * 60 + 30 <= t_min < 10 * 60
if in_overnight_gap:
return # never reached
if in_open_30:
return # never reached
```
**Scenario (RTH open-30, affects prod without any toggle):**
- `09:35 ET`: rsi_extreme signal + 1m BXt against → 1m bias gate sets `_rsi_ext_pending_dir`, returns with "deferring 1 bar" log. Time gate never runs. Pending state armed on a would-have-been-blocked bar.
- `10:01 ET` (first allowed bar): `_pend_dir == raw_sig` (set at 09:35) → entry fires at `micro_scale = 0.5` immediately.
- **Correct behaviour without the bug:** `_pend_dir = 0` at 10:01 → defers again → entry fires at `10:06 ET` at 50%.
**Impact:** For any rsi_extreme + 1m-BXt-against signal at the open-30 start (09:30–10:00 ET), the first post-open entry fires one 5-minute bar (5 min) too early. Log message incorrectly says "RSI EXTREME PENDING: deferring 1 bar" for the blocked bar, hiding the real reason (open-30 gate). Same mechanism applies to the overnight gap (03:50–04:00 ET) but requires the off-hours toggle ON to produce a live trade.
**Fix:** Move the time-gate block (`in_overnight_gap` / `in_open_30`) to run before the 1m BXt bias gate at `bot.py:5436`, or add an early return inside the bias gate:
```python
# at top of the 1m BXt bias block (before setting _rsi_ext_pending_dir):
if in_overnight_gap or in_open_30:
pass # let the time gate below handle this; don't arm pending
else:
ss._rsi_ext_pending_dir = raw_sig
...
return
```
---
### BUG [P1] (carried from 2026-05-31): `TV_BXT_MAX_AGE_SEC` env var documented but never implemented
**File:** `bot.py:3681`
**Evidence:** `grep "TV_BXT_MAX_AGE_SEC" bot.py` → single hit in docstring only. `tv_bxt_signal:{sym}` Redis key has no TTL. A Friday-close signal persists through the weekend; on Monday's first loop tick the bot acts on it before any new webhook arrives.
**Impact:** TV-BXt model (SNDK, real money) can enter based on a signal up to 65+ hours stale, potentially in the wrong direction vs. Monday-gap open.
**Fix:** Add `EX` TTL on the webhook Redis write at `bot.py:11832–11843`, or add an age-check in `_tv_bxt_signal()` using a companion timestamp key.
---
### BUG [P1] (carried from 2026-05-31): `REVERSE_TIME_DECAY` uses `== "1"` — ignores `true`/`yes`
**File:** `bot.py:5749`
**Evidence:**
```python
if os.environ.get("REVERSE_TIME_DECAY", "0") == "1" and _in_rth:
```
Every other boolean env flag uses `.lower() in ("1", "true", "yes")`. `REVERSE_TIME_DECAY: "true"` in YAML compose silently disables the morning size ramp.
**Fix:** `os.environ.get("REVERSE_TIME_DECAY", "").lower() in ("1", "true", "yes")`
---
### BUG [P1] (carried from 2026-05-31): `daily_loss_limit` equals `capital` — DLL disabled on real money
**File:** `config.json:3,6`; `core/risk.py:105`
**Evidence:**
```json
{ "capital": 50000, "daily_loss_limit": 50000 }
```
Gate fires only after a full $50,000 intraday loss (100% drawdown). Bot live on real money since 2026-05-01.
**Fix:** `"daily_loss_limit": 1500` (3% of $50K, matching `core/risk.py:RiskConfig` dataclass default).
---
### BUG [P1] (carried from 2026-05-31): `TV_BXT_TRAIL_AGAINST` default mismatch — live `1.0` vs history endpoint `1.5`
**File:** `bot.py:3750` vs `bot.py:14062`
**Evidence:**
```python
# live path (bot.py:3750): agnst = float(os.environ.get("TV_BXT_TRAIL_AGAINST", "1.0"))
# history replay (bot.py:14062): agnst = float(os.environ.get("TV_BXT_TRAIL_AGAINST", "1.5"))
```
Dashboard stop-analysis shows a 50% wider trail than what actually ran when env var is unset.
**Fix:** Change `bot.py:14062` default from `"1.5"` to `"1.0"`. One-line fix.
---
### RISK (new): `in_rth` time gate (bot.py:5497) lacks weekday check
**File:** `bot.py:5494–5497` vs `bot.py:3650`, `bot.py:6724`
**Evidence:**
```python
# bot.py:5497 — entry-gate in_rth (NO weekday guard):
in_rth = 9 * 60 + 30 <= t_min < 16 * 60
# bot.py:3650 — BXt1m session window (HAS weekday guard):
_in_rth = (9 * 60 + 30 <= tmin < 16 * 60) and now_et.weekday() < 5
# bot.py:5294 — RSI extreme threshold selection (HAS weekday guard):
_in_rth_session = 570 <= t_min < 960 and now_et.weekday() < 5
```
If a weekend bar somehow arrived (e.g., Polygon pushes a stale tick), `in_rth = True` for 9:30–16:00 ET, so the off-hours gate at `bot.py:5524` (`if not in_rth and trigger_type != "rsi_extreme"`) would NOT block BXt/divergence entries. IBKR paper does not send bars on weekends, making this theoretical, but the inconsistency is a latent risk.
**Fix:** Add weekday guard: `in_rth = 9 * 60 + 30 <= t_min < 16 * 60 and now_et.weekday() < 5`
---
### RISK (new): `_rsi_ext_pending_dir` not persisted — restart loses 1m BXt pending state
**File:** `bot.py:5447–5457`; `core/persistence.py` (absent)
**Evidence:** `_rsi_ext_pending_dir` is an in-memory attribute on `SymbolState` (`ss._rsi_ext_pending_dir`). No DB column or Redis key stores it. On any bot restart (container recreate, daily rotation), the state is lost.
**Impact:** A rsi_extreme that was deferred at bar N ("1m BXt against") and should fire at 50% on bar N+1 will instead re-defer on bar N+1 if a restart occurs between them. Entry is delayed by one extra bar and fires at the right size (50%) eventually — no safety issue, but timing is affected every time the container restarts mid-pending.
**Fix (optional, low priority):** Persist `_rsi_ext_pending_dir` to a short-TTL Redis key (`rsi_ext_pending:{sym}`, TTL 120s) on set; restore in `_evaluate_symbol` on first call.
---
### RISK (carried from 2026-05-31): `TV_BXT_NLV_PCT = 50.0` sizing bypass absent from `strategy_decisions.md`
**File:** `bot.py:6885–6898`
```python
_tv_pct = float(os.environ.get("TV_BXT_NLV_PCT", "50.0"))
```
$25K/trade on a $50K account; bypasses MAX_POSITION_PCT, ATR-risk sizing, all conviction multipliers. No hypothesis/backtest/validation record exists.
---
### RISK (carried from 2026-05-31): `config.json:max_concurrent_positions: 50` disables concurrent-position gate
**File:** `config.json:24`; `core/risk.py:114`
Gate fires only when ≥50 positions are open. With an 8-symbol watchlist, gate never fires on real money.
---
### RISK (carried from 2026-05-31): `config.json:risk_per_trade_pct: 2.0` bypassed by env-var sizing path
**File:** `config.json:7`; `bot.py:6179–6210`
Live sizing reads `RISK_ATR_BUDGET`/`MAX_RISK_PCT` env vars; `config.json` value is backtester-only. Three inconsistent values confuse operators.
---
### RISK (carried from 2026-05-31): Oracle `HEALTH_PORT` and bot `DASH_PORT` both default to `8083`
**Files:** `oracle/config.py:56`; `bot.py:184`
Silent dashboard outage if oracle wins the host-8083 binding on a compose-with-ports deploy.
---
### RISK (carried from 2026-05-31): `config.json:atr_stop_multiplier` (1.5) diverges from code fallback (2.0)
**Files:** `config.json:8`; `bot.py:750`
Removing or misspelling the key silently widens stops 33% with no log.
---
### RISK (carried from 2026-05-31): `pages.py:1448` hardcodes `"TradingView webhook (SNDK only)"` model label
Label goes stale immediately if a second symbol is added to `TV_BXT_SYMBOLS`.
---
### RISK (carried from 2026-05-31): `sentiment.cashtags` seed mismatches trading `symbols`
**File:** `config.json:2,37`
`META`, `TSLA`, `PLTR` traded but absent from cashtag seed — sentiment bypassed ~15 min post-startup.
---
### RISK (carried from 2026-05-31): ~40+ undocumented feature-flag env vars; no `.env.example`
`TV_BXT_DISABLE_ALGO_STOPS` (a stop-loss kill switch) is particularly dangerous if accidentally left set on a fresh reprovision.
---
## OK (checked, working or recently fixed)
- **Time gate order (overnight gap):** `in_overnight_gap = 3*60+50 <= t_min < 4*60` correctly maps 03:50–04:00 ET to 00:50–01:00 PT. ✓
- **Close-hour gate (rsi_extreme):** `if in_close_hour and trigger_type != "rsi_extreme":` correctly blocks BXt/div/pullback 15:00–16:00 ET. Size scale 0.1× applied via `LAST_HOUR_SIZE_SCALE`. ✓
- **Friday entry cutoff (`_evaluate_symbol`):** `weekday() == 4 and t_min >= 15*60` at `bot.py:5521`. ✓
- **Friday entry cutoff (`_check_pullback`):** same condition at `bot.py:6361` cancels ALL pending including rsi_extreme (2026-05-19 P1 fix). ✓
- **RVOL blowoff ceiling:** Code at `bot.py:6027` correctly uses `> 5.0x` (tuned 2026-04-15). `CLAUDE.md` RVOL table correctly shows `> 5.0x`. ✓
- **RVOL fail-closed:** `rv is None` blocks entry at `bot.py:5979–5981`. ✓
- **RVOL floor exemption for rsi_extreme:** `not _is_rsi_extreme` guard on the 0.8× floor correctly lets through low-RV exhaustion setups. ✓
- **`total_scale` applied in `_open_trade`:** `bot.py:6860–6862` applies the composite multiplier to shares. ✓
- **Event-gate + block-profile apply to `total_scale`:** `bot.py:5935–5936` and `bot.py:6201–6202` — the 2026-05-03 sizing bug #2 fix is present. ✓
- **`signal_meta` None guard in `_open_trade`:** `bot.py:7002–7003` (`bd256c6` fix). ✓
- **`_pending_entries` atomic swap:** `bot.py:5856` uses tuple assignment to avoid race condition (2026-04-28 P0 fix). ✓
- **BXt RSI zone filter (dev):** `BXT_RSI_LONG_MAX=40` / `BXT_RSI_SHORT_MIN=60` applied AFTER time gates; no time-gate interaction issue. ✓
- **Off-hours rsi_extreme toggle:** `_is_rsi_extreme_offhours_enabled()` returns `False` when Redis key absent (fail-safe). ✓
- **`micro_scale` folded into `total_scale`:** `bot.py:5760` includes `micro_scale` in the product. ✓
- **Friday EOD flat sweep (3:50 PM ET):** `bot.py:4334–4347` closes ALL positions with no exemption. ✓
- **RSI extreme `startswith('RSI extreme')` fix:** EOD trim correctly exempts only `'RSI extreme'` prefix, not `'RSI divergence'` (2026-04-15 fix). ✓
- **`REVERSE_TIME_DECAY` morning ramp logic:** Computes `_frac` correctly at `bot.py:5754`; RTH-only guard (`_in_rth`) prevents off-hours application. ✓
- **`BXT_USE_15M_BIAS` counter-trend hard block:** `bot.py:5661–5672` blocks counter-trend BXt unless flag set to false (dev A/B). ✓
- **Single-model lock for BXt1m:** `bot.py:5892–5894` drops all original-model candidates when BXt1m allowlist non-empty. ✓