Sydnee Inc Legal
Aug 15 7:55 PM
TEST — Veer 304E, how the Izeal reply will look
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 7:46 PM
Veer Towers 304E - furnished 1BR, corporate housing
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Kelvin Yan
Aug 15 7:34 PM
Veer 304E — three drafts for review before sending
⚠ PHISHING: employee impersonation: display name matches 'kelvin yan' but sender is email.sydneeinc.com
Bank of America
Aug 15 5:44 PM
Your statement is available
Bank of America: Your statement is available
Bank of America
Aug 15 5:43 PM
Your statement is available
Bank of America: Your statement is available
Sydnee Agent (AI)
Aug 15 5:39 PM
[Calibration Daily] 2026-08-16
Sydnee Agent (AI): [Calibration Daily] 2026-08-16
Sydnee Inc Legal
Aug 15 5:34 PM
Access test 1 of 3 - link
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 5:33 PM
Access test 3 of 3 - verified
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 5:09 PM
Access test 3 of 3 - verified
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 5:09 PM
Access test 1 of 3 - link
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:48 PM
Access test 1 of 3 - link (opens straight away, no code)
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Microsoft Outlook
Aug 15 4:47 PM
Undeliverable: FW: Dr Cat's Video Insights on $NOW and $TEAM-Video 2 of 12 (August 16, 2026)
Microsoft Outlook: Undeliverable: FW: Dr Cat's Video Insights on $NOW and $TEAM
Microsoft Outlook
Aug 15 4:46 PM
Undeliverable: FW: Dr Cat's Video Insights on $ABCL-Video 3 of 12 (August 16, 2026)
Microsoft Outlook: Undeliverable: FW: Dr Cat's Video Insights on $ABCL-Video 3
Sydnee Inc Legal
Aug 15 4:26 PM
Veer 304E - all three access levels
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:16 PM
Veer 304E - replacement links
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:10 PM
Veer 304E - short links, one with a code
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:04 PM
Your access code
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:04 PM
Your access code
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:00 PM
Veer 304E - test of the secure file links
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Sydnee Inc Legal
Aug 15 4:00 PM
Your access code
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydneeinc.com
Amazon Payments
Aug 15 12:52 PM
Action requise sur le compte Amazon Payments
Fake Amazon Payments suspension threat; credential harvesting attempt.
Guest Relations at The Ritz-Carlton, Laguna Niguel
Aug 15 10:49 AM
Kelvin, please complete the travel request form to customize your stay at The Ritz-Carlton, Laguna Niguel
Suspicious Ritz-Carlton email with obfuscation; potential credential theft attempt.
Manus Team
Aug 15 7:33 AM
ACTION REQUIRED: 7 days left to back up Kelvin Yan for future restoration
⚠ PHISHING: phishing subject pattern: 'ACTION REQUIRED' from external sender privaterelay.appleid.com
Benjamin & Williams
Aug 15 5:02 AM
Commercial Claim Discovery Documents Our file:D-8222 Debtor: VICTORIA ROPA ELEGANTE
Fake debt collection demand with 24h payment pressure; spoofed domain.
Sydnee Agent (AI)
Aug 15 4:15 AM
Sydnee nightly — PERFORMANCE audit 2026-08-15 — 0P0 2P1 13R
Sydnee Agent (AI): Sydnee nightly — PERFORMANCE audit 2026-08-15 — 0P0 2P1 13R
The Ritz-Carlton Reservations
Aug 15 4:12 AM
Plan for your upcoming stay at The Ritz-Carlton, Laguna Niguel on Monday, August 17, 2026
Ritz-Carlton reservation confirmation for August 17 stay at Laguna Niguel.
Tesla
Aug 15 12:55 AM
Full Self-Driving (Supervised) Subscription Renewed
Tesla FSD subscription auto-renewed for Model Y, $107.29/month.
Sydnee.ai Legal
Aug 14 9:22 PM
Jiao 移民案件最新进展说明(好消息,请放心)
⚠ PHISHING: domain impersonation: display name contains 'sydnee' but sender is email.sydnee.ai
KuCoin
Aug 14 6:38 PM
Dormancy Fee Deduction Notice
KuCoin dormancy fee deducted from account this month.
Tommy Wang (Wang IP Law)
Aug 14 6:30 PM
Re: I-485 Application (IOE0934359789 and IOE0934359788)
Tommy Wang (Wang IP Law): Re: I-485 Application (IOE0934359789 and IOE0934359788)
Bank of America
Aug 14 6:16 PM
We've sent your payment to SOUTHERN CALIFORNIA EDISON SCE as requested
Bank of America: We've sent your payment to SOUTHERN CALIFORNIA EDISON SCE as
Sydnee Agent (AI)
Aug 14 5:42 PM
[Calibration Daily] 2026-08-15
Sydnee Agent (AI): [Calibration Daily] 2026-08-15
Sydnee Agent (AI)
Aug 14 5:30 PM
Sydnee algo daily — dev $-2,239 · prod $+0 · 6d window
Sydnee Agent (AI): Sydnee algo daily — dev $-2,239 · prod $+0 · 6d window
Laguna Road Area Community Message
Aug 14 2:39 PM
1 New School Flyer for Your Child
School flyer: Congressional App Challenge signup opportunity.
Anthony Patino in Teams
Aug 14 2:34 PM
Anthony Patino sent a message
⚠ PHISHING: employee impersonation: display name matches 'anthony' but sender is teams.mail.microsoft
TAnthony Patino
Aug 14 1:34 PM
[Teams oneOnOne] (Teams DM)
Anthony Patino flagging ~$20k air shipment payment for approval.
Amy Burghardt
Aug 14 1:19 PM
RE: Meeting
Amy Burghardt: RE: Meeting
Mary Chmelka
Aug 14 1:07 PM
Survey invite to Ameritas California Language Assistance Program Survey
Ameritas requesting language preference survey for insurance benefits.
TAnthony Patino
Aug 14 12:47 PM
[Teams oneOnOne] (Teams DM)
Anthony Patino requesting updated HDCVT statement.
TAnthony Patino
Aug 14 12:45 PM
[Teams oneOnOne] (Teams DM)
Teams DM acknowledgment from Anthony Patino.
TAnthony Patino
Aug 14 12:45 PM
[Teams oneOnOne] (Teams DM)
Anthony Patino confirms E-like assessment via Teams DM.
TAnthony Patino
Aug 14 12:08 PM
[Teams oneOnOne] (Teams DM)
Anthony found something; not due for ~30 days.
TAnthony Patino
Aug 14 12:05 PM
[Teams oneOnOne] (Teams DM)
SAVLink payment $15,915 awaiting approval
TAnthony Patino
Aug 14 11:59 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino internal Teams message about communications or notes.
TAnthony Patino
Aug 14 11:56 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino confirming he will set something up now.
TAnthony Patino
Aug 14 11:56 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino Teams DM about something that just came due recently.
TAnthony Patino
Aug 14 11:55 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino confirms document dated 6/04 with net60 terms.
TAnthony Patino
Aug 14 11:54 AM
[Teams oneOnOne] (Teams DM)
SmartAV Link requesting payment of $15,915.
TAnthony Patino
Aug 14 11:47 AM
[Teams oneOnOne] (Teams DM)
Anthony reports received Iolo Capital invoice, needs approval to add to CC.
TAnthony Patino
Aug 14 11:25 AM
[Teams oneOnOne] (Teams DM)
Anthony Patino initiating a Teams call.
Sydnee nightly — ENTRY_FLOW audit 2026-08-10 — 1P0 8P1 10R
AI verdict
employee
high
· confidence: high
· by internal-exempt
“Sydnee Agent (AI): Sydnee nightly — ENTRY_FLOW audit 2026-08-10 — 1P0 8P1 10R”
Reasoning: @sydnee.ai is a protected domain — hard exemption
Sydnee nightly — ENTRY_FLOW audit — 2026-08-10
P0 findings: 1 P1 findings: 8 Risks: 10
- Area: Entry Flow (Monday theme)
- Branch: `dev` (17a0cb7 — docs(audit): PERFORMANCE 2026-08-09)
- Files scanned: `bot.py` (24,173 lines), `config.json`, `docs/strategy_decisions.md`,
`git log --oneline -30`, prior entry-flow audit 2026-08-03
- **Bugs found (P0 / P1): 1 / 8 (0 new — all carried from 2026-08-03)**
- **Risks noted: 10 (0 new — all carried from 2026-08-03)**
**Cross-check:** `git log --oneline -30` reviewed. Zero bot/core/strategy code commits
since 2026-07-17 (all subsequent commits are audit docs + peak-monitor logs). P0 and all
8 P1s re-verified at current line numbers — all present, unchanged. All 10 carried risks
re-verified. No new code paths to evaluate; no previous findings resolved.
---
Full report (dev branch): https://github.com/kanex1/sydnee.signals/blob/dev/docs/audit_2026-08-10_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-08-10 — ENTRY FLOW
## Summary
- Area: Entry Flow (Monday theme)
- Branch: `dev` (17a0cb7 — docs(audit): PERFORMANCE 2026-08-09)
- Files scanned: `bot.py` (24,173 lines), `config.json`, `docs/strategy_decisions.md`,
`git log --oneline -30`, prior entry-flow audit 2026-08-03
- **Bugs found (P0 / P1): 1 / 8 (0 new — all carried from 2026-08-03)**
- **Risks noted: 10 (0 new — all carried from 2026-08-03)**
**Cross-check:** `git log --oneline -30` reviewed. Zero bot/core/strategy code commits
since 2026-07-17 (all subsequent commits are audit docs + peak-monitor logs). P0 and all
8 P1s re-verified at current line numbers — all present, unchanged. All 10 carried risks
re-verified. No new code paths to evaluate; no previous findings resolved.
---
## Findings
### BUG [P0] (carried × 5 entry-flow audits, unfixed since 2026-07-08): `_tf15_trend` NameError in `elif _pending:` path — exit evaluation aborts for pending-reversal symbols
**File:** `bot.py:5483`
**Evidence:**
```python
# bot.py:5441 — immediate-fire path correctly assigns _tfmid_trend:
_tfmid_trend = ss.trends.get(15, 0)
# bot.py:5483 — elif _pending: path reads the deleted variable name:
_15m_with_pos = (_tf15_trend != 0 and _tf15_trend == t.direction) # ← NameError
# grep -c "_tf15_trend" bot.py → 1 (line 5483 only; no assignment anywhere in file)
```
`_tf15_trend` was renamed to `_tfmid_trend` in a prior refactor; line 5483 was not updated.
`NameError` swallowed by the upstream `except Exception`, causing exit evaluation to return
early every bar while `_pending_reversal = True`. OBV/stop/target/peak-confirm exit logic
skipped for those symbols — positions can over-hold indefinitely until force-flat.
**Impact:** Real-money risk. Any symbol that has entered a 2-bar BXt reversal confirmation
state loses all exit handling for the life of the `_pending_reversal` flag.
**Fix:**
```python
# bot.py:5483
_15m_with_pos = (_tfmid_trend != 0 and _tfmid_trend == t.direction)
```
---
### BUG [P1] (carried × 5 entry-flow audits, unfixed since 2026-07-14): `_check_pullback` has no post-16:00 ET gate — RSI extreme pullbacks bypass `rsi_extreme_offhours_enabled` toggle
**File:** `bot.py:7009–7034` (`_check_pullback` time gate section)
**Evidence:**
```python
# bot.py:7009–7034 — _check_pullback time gates:
if 3 * 60 + 50 <= _t_min < 4 * 60:
return # overnight gap: preserve
if 15 * 60 <= _t_min < 16 * 60 and not _is_rsi_extreme_pb:
ss.pending_pullback = None; return # close-hour: cancel BXt/div/pb only
if now_et.weekday() == 4 and _t_min >= 15 * 60:
ss.pending_pullback = None; return # Friday: cancel all
# ← NO GATE for _t_min >= 16 * 60 (post-market Mon–Thu)
```
Scenario (Mon–Thu, off-hours toggle OFF): RSI extreme fires at 15:58 ET.
`_rsi_ext_pending_dir` set → `ss.pending_pullback` created. At 16:01 ET (180s timeout),
`_check_pullback` runs — `_t_min=961` has no blocking gate. Entry fills post-market via GTC
without operator opt-in (toggle is default OFF).
**Impact:** Post-market GTC orders on RSI extreme pullbacks seeded in the last ~3 min of
close hour (15:57–16:00 ET) fire Mon–Thu, bypassing the off-hours toggle.
Real-money since 2026-05-01.
**Fix:** Add after the Friday cutoff block (after `bot.py:7034`):
```python
if _t_min >= 16 * 60 and _is_rsi_extreme_pb:
if not self._is_rsi_extreme_offhours_enabled():
self._log_activity(pb.sym,
"OFF-HOURS BLOCK — cancelling pending RSI extreme pullback (toggle OFF)",
"block")
ss.pending_pullback = None
return
elif _t_min >= 16 * 60 and not _is_rsi_extreme_pb:
ss.pending_pullback = None
return
```
---
### BUG [P1] (carried × 5 entry-flow audits, unfixed since 2026-07-07): `_check_pullback` missing open-30 gate — pre-RTH pending pullbacks fire during 9:30–10:00 ET all-entries-blocked window
**File:** `bot.py:7009–7034` (`_check_pullback` time gate section)
**Evidence:**
```python
# _check_pullback time gates (bot.py:7009–7034) do NOT include in_open_30.
# Standard _evaluate_symbol hard-blocks ALL entries 9:30–10:00 ET (bot.py:6118):
in_open_30 = 9 * 60 + 30 <= t_min < 10 * 60
if in_open_30:
return
# No equivalent check in _check_pullback.
```
Scenario: RSI extreme fires at 9:28 ET (pre-market, toggle ON). `ss.pending_pullback`
created. At 9:30 ET the open-30 block applies to all new entries — but `_check_pullback`
runs at 9:31 ET on the 180s timeout and fires an entry in the blocked window.
**Impact:** Entries during the high-volatility opening 30 min — explicitly prohibited per
CLAUDE.md. Real-money risk since 2026-05-01.
**Fix:** Add after the overnight gap return (after `bot.py:7012`):
```python
if 9 * 60 + 30 <= _t_min < 10 * 60:
self._log_activity(pb.sym,
"OPEN-30 BLOCK — cancelling pending pullback (all entries blocked 9:30–10:00 ET)",
"block")
ss.pending_pullback = None
return
```
---
### BUG [P1] (carried × 5 entry-flow audits, unfixed since 2026-06-29): `_kcr_eval_sym` lacks Friday 15:00 ET entry cutoff — KCR opens new positions Friday 15:00–15:29 ET
**File:** `bot.py:20705`
**Evidence:**
```python
# bot.py:20705 — only time gate before KCR entry:
if not self._tape_in_rth_entry_window():
if not self._tape_earnings_offhours_allowed(sym):
return
# _tape_in_rth_entry_window allows until 15:30 ET with no Friday differentiation:
# bot.py:20347-20365: return (start_min <= tmin < 15*60 + 30)
# Friday 14:30–15:29 ET is allowed.
# Standard flow hard-blocks ALL entries Friday from 15:00 ET (bot.py:6138):
if now_et.weekday() == 4 and t_min >= 15 * 60:
return
```
KCR force-flat fires at 15:50 ET. A Friday 15:10 ET KCR entry carries ~40 min of weekend
gap risk before flat-close.
**Fix:** Add before `_tape_in_rth_entry_window()` check at `bot.py:20705`:
```python
_now_kcr = datetime.now(ET)
if _now_kcr.weekday() == 4 and _now_kcr.hour * 60 + _now_kcr.minute >= 15 * 60:
return
```
---
### BUG [P1] (carried × 7 entry-flow audits, unfixed since 2026-06-08): `_eval_tv_bxt_sym` lacks Friday 15:00 ET entry cutoff — TV-BXt opens new SNDK/MU positions Friday 15:00–15:44 ET
**File:** `bot.py:4141`
**Evidence:**
```python
# bot.py:4135 — Friday EOD flat only for OPEN positions (my_pos is not None):
if _now.weekday() == 4 and (_now.hour * 60 + _now.minute) >= 15 * 60 + 45:
self._tv_close(my_pos, "TV-BXt Friday EOD flat")
...
return
# bot.py:4141 — new-entry path: no Friday gate (my_pos is None):
sig = self._tv_bxt_signal(sym) # can fire Friday 15:00–15:44 ET
```
Standard flow blocks ALL new entries Friday from 15:00 ET. TV-BXt bypasses
`_evaluate_symbol` entirely. A position opened Friday 15:00 ET isn't force-closed until
15:45 ET — 45 min of weekend gap risk on real-money SNDK/MU.
**Fix:** Add before `sig = self._tv_bxt_signal(sym)` at `bot.py:4141`:
```python
_now_gate = datetime.now(ET)
if _now_gate.weekday() == 4 and _now_gate.hour * 60 + _now_gate.minute >= 15 * 60:
if my_pos is None:
self._tv_bxt_signal_clear(sym) # prevent Monday stale-signal refire
return
```
---
### BUG [P1] (carried × 7 entry-flow audits, unfixed since 2026-05-17): `TV_BXT_MAX_AGE_SEC` documented but never implemented — Friday webhooks persist through the weekend, fire Monday pre-market
**File:** `bot.py:3832` (docstring); `bot.py:13530–13531` (write path)
**Evidence:**
```python
# bot.py:3832 — docstring promises max-age filtering:
"""... Optionally ignore stale signals via TV_BXT_MAX_AGE_SEC."""
# bot.py:13530-13531 — write path: no TTL set:
r.set(f"tv_bxt_signal:{sym}", sig)
r.set(f"tv_bxt_signal_ts:{sym}", str(int(time.time())))
# ← both keys persist indefinitely (no EX parameter)
```
A Friday-afternoon webhook survives 65+ hours to fire Monday pre-market — potentially in
the opposite direction from the weekend gap.
**Fix:** Add `ex=50400` (14h TTL) to both Redis SET calls at `bot.py:13530-13531`:
```python
r.set(f"tv_bxt_signal:{sym}", sig, ex=50400)
r.set(f"tv_bxt_signal_ts:{sym}", str(int(time.time())), ex=50400)
```
---
### BUG [P1] (carried × 7 entry-flow audits, unfixed since 2026-05-17): `REVERSE_TIME_DECAY` uses `== "1"` — morning size ramp silently disabled when docker-compose YAML uses `"true"`
**File:** `bot.py:6405`
**Evidence:**
```python
# bot.py:6405 — sole check:
if os.environ.get("REVERSE_TIME_DECAY", "0") == "1" and _in_rth:
# All other boolean env flags use .lower() in ("1", "true", "yes").
# REVERSE_TIME_DECAY="true" in docker-compose YAML silently has no effect.
```
**Impact:** Morning size ramp (50%→100% from 10:00–13:00 ET, calibrated from backtest
showing 2.3× stronger midday edge) is silently disabled when compose uses YAML boolean
form. No diagnostic log when disabled by misconfiguration.
**Fix:**
```python
if os.environ.get("REVERSE_TIME_DECAY", "").lower() in ("1", "true", "yes") and _in_rth:
```
---
### BUG [P1] (carried × 7 entry-flow audits, unfixed since 2026-05-17): `_rsi_ext_pending_dir` set BEFORE time gates — RSI extreme fires 1 bar early at open-30 / overnight-gap boundary
**File:** `bot.py:6065–6074` (1m BXt pending block) vs `bot.py:6111–6118` (time gates)
**Evidence:**
```python
# bot.py:6065-6069 — pending state set and early return BEFORE time gates:
if _1m_against_e:
if _pend_dir != raw_sig:
ss._rsi_ext_pending_dir = raw_sig # ← set here, before 6111
return # ← never reaches time gates below
# bot.py:6111-6118 — time gates defined AFTER the block 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
if in_open_30: return
```
Scenario: RSI extreme fires at 9:35 ET (inside open-30) with 1m BXt against.
`_rsi_ext_pending_dir=raw_sig` set and return. At 10:01 ET: `_pend_dir==raw_sig` →
falls through at 50% scale → time gates pass → entry fires 1 bar earlier than if the
signal re-seeded fresh at 10:01 ET, bypassing the implied "no action during open-30"
expectation.
**Fix:** Hoist `in_overnight_gap` + `in_open_30` computation above the 1m BXt block:
```python
# before bot.py:6054:
in_overnight_gap = 3 * 60 + 50 <= t_min < 4 * 60
in_open_30 = 9 * 60 + 30 <= t_min < 10 * 60
# then guard the pending-state set:
if _1m_against_e:
if _pend_dir != raw_sig:
if not (in_overnight_gap or in_open_30):
ss._rsi_ext_pending_dir = raw_sig
...
return
```
---
### BUG [P1] (carried × 7 entry-flow audits, unfixed since 2026-05-17): `config.json:daily_loss_limit: 50000` equals `capital` — DLL circuit breaker non-functional on real money
**Files:** `config.json` (`"capital": 50000, "daily_loss_limit": 50000`); `core/risk.py:112`
**Evidence:**
```json
{ "capital": 50000, "daily_loss_limit": 50000 }
```
`core/risk.py:112`: gate fires only when `today_pnl < -daily_loss_limit`. With limit equal
to capital, the bot must realize a 100% intraday drawdown before entries halt. The
`RiskConfig` dataclass default at `bot.py:786` is `$1,000` but `config.json` overrides it
on every load.
**Impact:** No effective intraday loss circuit-breaker since 2026-05-01. A runaway session
can burn the full $50K account before the gate fires.
**Fix:** `"daily_loss_limit": 1500` in `config.json` (3% of $50K, matching prior intent).
---
## Risks
### RISK (carried since 2026-08-03, re-surfaced 2026-05-11): Stale comment at `bot.py:6084–6092` describes old "24×5 all triggers" off-hours policy — contradicts current code
**File:** `bot.py:6084–6092`
**Evidence:**
```python
# bot.py:6084-6092 — comment describes SUPERSEDED policy:
# 24×5 entry policy (paper trading — overnight enabled):
# - Before 3:45 PM ET: all triggers allowed
# - 3:45 PM - 4:00 PM ET: only RSI extreme (avoid entering right at close)
# - 4:00 PM - 8:00 PM ET (post-market): all triggers allowed ← FALSE
# - 8:00 PM - 3:50 AM ET (IBKR Overnight): all triggers allowed on ... ← FALSE
# - 4:00 AM - 9:30 AM ET (pre-mark