Sydnee Agent (AI)
Apr 26 2:00 AM
[OBV backfill] RUNNING — 66% (1953/2940)
Sydnee Agent (AI): [OBV backfill] RUNNING — 66% (1953/2940)
Sydnee Agent (AI)
Apr 26 1:08 AM
[OBV backfill] RUNNING — 58% (1720/2940)
Sydnee Agent (AI): [OBV backfill] RUNNING — 58% (1720/2940)
Zoho Store Notification
Apr 26 1:04 AM
Zoho Campaigns - Your subscription is renewed
Zoho Store Notification: Zoho Campaigns - Your subscription is renewed
Railway
Apr 25 11:52 PM
Updates to Railway Terms and Policies
Railway platform updated terms of service and privacy policies.
KanexPro Store (Shopify)
Apr 25 11:12 PM
Payout for Apr 26, 2026 (-$45.68 USD)
KanexPro Store (Shopify): Payout for Apr 26, 2026 (-$45.68 USD)
Liangbo Li
Apr 25 10:27 PM
Re: SP-HDPOC1X8
Liangbo Li: Re: SP-HDPOC1X8
GitHub
Apr 25 9:43 PM
[GitHub] A new public key was added to kanex1/sydnee.signals
GitHub: [GitHub] A new public key was added to kanex1/sydnee.signals
GitHub
Apr 25 9:43 PM
[GitHub] A new public key was added to kanex1/sydnee.signals
GitHub: [GitHub] A new public key was added to kanex1/sydnee.signals
GitHub
Apr 25 9:42 PM
[GitHub] A new public key was added to kanex1/sydnee.viewer
GitHub: [GitHub] A new public key was added to kanex1/sydnee.viewer
GitHub
Apr 25 9:41 PM
[GitHub] A new public key was added to kanex1/sydnee.bot.crypto
GitHub: [GitHub] A new public key was added to kanex1/sydnee.bot.cry
Network Solutions
Apr 25 9:06 PM
Action Required: Review WHOIS contact data
⚠ PHISHING: phishing subject pattern: 'Action Required' from external sender icloud.com
Network Solutions
Apr 25 9:05 PM
Action Required: Review WHOIS contact data
⚠ PHISHING: phishing subject pattern: 'Action Required' from external sender icloud.com
ParkMobile
Apr 25 8:23 PM
Reminder: A free gift from ParkMobile 🚙
ParkMobile: Reminder: A free gift from ParkMobile 🚙
Sydnee Agent (AI)
Apr 25 4:54 PM
[OBV calibration] backfill notification test
Sydnee Agent (AI): [OBV calibration] backfill notification test
Bank of America
Apr 25 4:06 PM
Your Account Notices Are Now Available in Mobile and Online Banking
Bank of America: Your Account Notices Are Now Available in Mobile and Online
Primo Brands Delivery
Apr 25 3:48 PM
Primo Brands™ reminder for Tuesday, April 28, 2026
Primo Brands delivery reminder for Tuesday, April 28.
American Express
Apr 25 12:50 PM
Important Notice: Your April 2026 Statement
American Express: Important Notice: Your April 2026 Statement
eBay
Apr 25 10:11 AM
Looking for the right auto parts? Say hey to My Garage.
eBay: Looking for the right auto parts? Say hey to My Garage.
Sydnee Agent (AI)
Apr 25 8:45 AM
RE: Sydnee nightly — performance audit 2026-04-25 — 0P0 2P1 2R
Sydnee Agent (AI): RE: Sydnee nightly — performance audit 2026-04-25 — 0P0 2P1
Kanex Ai1
Apr 25 8:36 AM
RE: Commercial Claim Discovery Documents Our file:D-8222 Debtor: VICTORIA ROPA ELEGANTE
Kanex Ai1: RE: Commercial Claim Discovery Documents Our file:D-8222 Deb
Sydnee Agent (AI)
Apr 25 8:35 AM
RE: Sydnee nightly — performance audit 2026-04-25 — 0P0 2P1 2R
Sydnee Agent (AI): RE: Sydnee nightly — performance audit 2026-04-25 — 0P0 2P1
Sydnee Agent (AI)
Apr 25 4:30 AM
Sydnee nightly — performance audit 2026-04-25 — 0P0 2P1 2R
Sydnee Agent (AI): Sydnee nightly — performance audit 2026-04-25 — 0P0 2P1 2R
EmployerAccess Support
Apr 25 4:10 AM
Oh no! Your payment didn't go through.
Fake payment failure notice impersonating Anthem EmployerAccess; credential theft attempt.
Katherine_Cheng
Apr 24 7:18 PM
回覆: would like to buy your product: NetworkAV™ H.264,
LiteMax inquires about NetworkAV H.264 receiver specs and pricing for integration.
[email protected]
Apr 24 6:50 PM
Re: Irving-Yan case: Meet and Confer letter and proposal for next steps.
(sent from kanex-ai)
Denise Heinz
Apr 24 5:36 PM
Re: Irving-Yan case: Meet and Confer letter and proposal for next steps.
Denise Heinz: Re: Irving-Yan case: Meet and Confer letter and proposal for
Sydnee Agent (AI)
Apr 24 5:30 PM
Sydnee algo daily — dev $-1,460 · prod $+0 · 6d window
Sydnee Agent (AI): Sydnee algo daily — dev $-1,460 · prod $+0 · 6d window
TChristina Knudsen
Apr 24 1:01 PM
[Teams meeting] Inventory/Shipping Team Weekly
Inventory/Shipping team requests meeting on backorder status for Micro Center, B&H.
Baptiste Marmorat
Apr 24 11:11 AM
RE: would like to buy your product: NetworkAV™ H.264,
Export rep Baptiste confirming NetworkAV product interest from Katherine Cheng.
Aarti Gupta
Apr 24 10:28 AM
would like to buy your product: NetworkAV™ H.264,
Aarti Gupta: would like to buy your product: NetworkAV™ H.264,
Reema Agarwal in Teams
Apr 24 5:54 AM
Reema Agarwal sent a message
Reema Agarwal in Teams: Reema Agarwal sent a message
Lance Cain
Apr 24 5:41 AM
Re: Return Request
Customer return request pending account setup for week-old order.
Bank of America
Apr 24 4:50 AM
Your available account balance is low
Bank of America: Your available account balance is low
Sydnee Agent (AI)
Apr 24 4:15 AM
Sydnee nightly — execution audit 2026-04-24 — 1P0 1P1 2R
Sydnee Agent (AI): Sydnee nightly — execution audit 2026-04-24 — 1P0 1P1 2R
Zoho Payments
Apr 24 3:42 AM
Invoice - 50101928705 from ZOHO Corporation.
Zoho subscription invoice for April 2026 payment received.
[email protected]
Apr 24 3:06 AM
Program Expiry
Trusted Traveler Program membership expiration notice and renewal reminder.
[email protected]
Apr 24 3:01 AM
Re: Re: Kanexpro outstanding payment-need to pay for Thailand shipments
Vendor invoice for Thailand shipments totaling $8,879 with updated PI.
[email protected]
Apr 24 2:54 AM
Re: Re: Kanexpro outstanding payment-need to pay for Thailand shipments
Pay two Thailand shipment invoices ($8,879 total) by Friday to release second shipment.
EmployerAccess Support
Apr 24 2:44 AM
Your next automatic payment is tomorrow!
Anthem EmployerAccess automatic payment scheduled for tomorrow.
[email protected]
Apr 24 2:44 AM
Your QuickBooks Auto Payroll preview
QuickBooks payroll preview for KanexPro — verify $10,266.48 deduction.
[email protected]
Apr 24 1:08 AM
Re: Re: Need PO for Thailand order
HDCVT vendor shares Google Drive folder link for Thailand order PO.
Zoho Store Notification
Apr 24 12:45 AM
Zoho Webinar - Your subscription is renewed
Zoho subscription renewal payment processed, $57 Professional plan.
Harsh Tiwari
Apr 23 11:59 PM
Re: InfoComm India 2026 – Booth TE15 (Jasmine Hall 1) | Approval Required
Harsh Tiwari: Re: InfoComm India 2026 – Booth TE15 (Jasmine Hall 1) | Appr
Microsoft
Apr 23 7:46 PM
Your Microsoft invoice G154314584 is ready
Microsoft: Your Microsoft invoice G154314584 is ready
Beth K. Rautiola
Apr 23 6:40 PM
Settlement
Beth K. Rautiola: Settlement
KanexPro Store
Apr 23 5:58 PM
[KanexPro Store] Order #1211 placed by Nicholas Gibbs
KanexPro Store: [KanexPro Store] Order #1211 placed by Nicholas Gibbs
Sydnee Agent (AI)
Apr 23 5:30 PM
Sydnee algo daily — dev $-1,532 · prod $+0 · 6d window
Sydnee Agent (AI): Sydnee algo daily — dev $-1,532 · prod $+0 · 6d window
Houzz Partners
Apr 23 4:31 PM
Meet your new favorite neutral
Houzz Partners: Meet your new favorite neutral
Rachael Skoug
Apr 23 4:21 PM
Excited for Open House Tonight! Wax Museum: The Power of One!
School open house tonight at 5:55 PM; student should wear costume and bring iPad.
Bank of America
Apr 23 4:11 PM
Your Account Notices Are Now Available in Mobile and Online Banking
Bank of America: Your Account Notices Are Now Available in Mobile and Online
Sydnee nightly — execution audit 2026-04-24 — 1P0 1P1 2R
AI verdict
employee
high
· confidence: high
· by internal-exempt
“Sydnee Agent (AI): Sydnee nightly — execution audit 2026-04-24 — 1P0 1P1 2R”
Reasoning: @sydnee.ai is a protected domain — hard exemption
Sydnee nightly — execution audit — 2026-04-24
P0 findings: 1 P1 findings: 1 Risks: 2
- Area: Execution Quality (Friday theme — day 4)
- Bugs found (P0 / P1): 0 / 1
- Risks noted: 2
- API note: dev.sydnee.ai unreachable from audit host (host_not_allowed). All findings are static code analysis.
---
Full report (dev branch): https://github.com/kanex1/sydnee.signals/blob/dev/docs/audit_2026-04-24_execution.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-04-24 — EXECUTION QUALITY
## Summary
- Area: Execution Quality (Friday theme — day 4)
- Bugs found (P0 / P1): 0 / 1
- Risks noted: 2
- API note: dev.sydnee.ai unreachable from audit host (host_not_allowed). All findings are static code analysis.
---
## Findings
### BUG [P1]: FLAT_EXIT trim1 closes 100% of shares for ALL setups — trend runners killed at trim1 price
**File:** `bot.py:3759-3760` (trim quantity) vs `bot.py:4927-4930` (_compute_exits guard)
**Evidence:**
`_compute_exits` correctly guards FLAT_EXIT to mean_revert and extension_fade only:
```python
# bot.py:4927-4930
if os.environ.get("FLAT_EXIT", "").lower() in ("1", "true", "yes") \
and setup in ("mean_revert", "extension_fade"):
trim_dist = 1.0 * daily_atr_dollar # exit distance override
tgt_dist = 1.0 * daily_atr_dollar
```
But the trim1 execution block has no setup-type guard:
```python
# bot.py:3759-3760
_flat_exit = os.environ.get("FLAT_EXIT", "").lower() in ("1", "true", "yes")
trim_shares = t.shares if _flat_exit else t.shares // 2 # ← no setup check
```
When FLAT_EXIT=true (currently active on dev), `trim_shares = t.shares` for **all** setups. A
trend trade — whose trim_dist in `_compute_exits` is kept at 0.5×daily_atr (line 4899, unaffected
by FLAT_EXIT) — will have trim1 fire at the correct distance but close 100% of the position
instead of the intended 50%, destroying the runner leg.
Secondary: the TRIM1 activity log at lines 3782 and 3785 hardcodes "50%":
```python
self._log_activity(sym, f"TRIM1 50% ({trim_shares}sh) at ${live_price:.2f} — ...")
```
When FLAT_EXIT causes a 100% close, the log still says "50%", masking the incorrect execution
in the activity trail and making post-trade audit unreliable.
**Impact:**
- With FLAT_EXIT=true on dev (enabled 2026-04-18), any trend trade that hits trim1 is fully
closed at +0.5×daily_atr instead of 50%-trimmed with a runner. Strategy_decisions.md line 143
explicitly states "Trend setup unchanged (ladder kept)."
- Artificially inflates the trimmed_1 hit rate metric and skews the FLAT_EXIT validation
comparison (P&L appears improved but a fraction is from prematurely cut trend runners).
- If FLAT_EXIT is cherry-picked to main before 2026-05-01 go-live, trend runners on real money
will be fully closed at +0.5×ATR.
**Fix:**
```python
# bot.py:3759-3760 — add setup-type guard matching the _compute_exits condition
_flat_exit = os.environ.get("FLAT_EXIT", "").lower() in ("1", "true", "yes")
_is_flat_setup = "TREND" not in (t.strategy_reason or "").upper()
trim_shares = t.shares if (_flat_exit and _is_flat_setup) else t.shares // 2
# bot.py:3782 and 3785 — fix log to show actual percentage
_trim_pct = "100%" if (_flat_exit and _is_flat_setup) else "50%"
self._log_activity(sym, f"TRIM1 {_trim_pct} ({trim_shares}sh) at ...")
```
Uses `strategy_reason` (persisted, restart-safe), consistent with the HOLD_CAP_MIN approach
at line 3398.
---
### RISK: Friday 3:50 PM ET flat depends on bar events — no independent timer fallback (carried from 2026-04-17)
**File:** `bot.py:3088` (flat check inside `_evaluate_symbol`)
**Evidence:**
The `t_min >= 15 * 60 + 50` flat sweep lives inside `_evaluate_symbol(sym)`, which is only
triggered by IBKR real-time bar events (`rtb.updateEvent`). There is no standalone periodic
sweep in the main loop that guarantees every symbol is evaluated at 3:50 PM ET.
If a symbol's RTB feed goes quiet between 3:40 and 3:50 PM ET (thin tape, IBKR routing
hiccup, or brief connection drop), that position is not flattened by the 3:50 PM ET sweep.
The AH fallback (7:50 PM ET) would catch it, but that is 4 hours of unintended weekend
exposure.
**Today is Friday 2026-04-24. This risk is actively open.**
FLAT_EXIT=true is also enabled today, meaning trend positions that hit trim1 (see P1 above)
may already be 0-share zombies at 3:50 PM ET — so the flat sweep may see `t.shares < 1`
and skip, leaving a DB-open trade that holds over the weekend until reconcile.
**Mitigation already in place:** AH trim + flat (7:50 PM ET) catches anything missed at
3:50 PM ET. Friday AH is a separate code path (lines 3113–3166) with its own per-symbol
iteration. Risk remains but is backstopped.
---
### RISK: FLAT_EXIT zombie parent persists in DB until reconcile — generates spurious 0-share SELL orders (carried from 2026-04-23)
**File:** `bot.py:3760, 3793-3794`
**Evidence:**
When FLAT_EXIT=true and trim1 fires 100%:
```python
trim_shares = t.shares # 100%
remaining = t.shares - trim_shares # = 0
self._update_trade_field(t.trade_id, shares=0)
```
The parent trade (`exit_price IS NULL`) stays in `open_trades()` with `shares=0`. On every
subsequent 5m bar, the exit loop re-evaluates the parent. If a stop fires while shares=0:
- `_close_trade(t, ...)` → `MarketOrder(SELL, 0)` → IBKR rejects
- Repeated until reconcile detects IBKR qty=0 and marks the trade closed (~5 min)
No financial harm (IBKR rejects 0-share orders); nuisance log pollution and spurious
`signals.audit` duplicate-close events. Carries from 2026-04-23 persistence audit where
the fix was documented.
---
## OK (checked, working or recently fixed)
**Fixed since 2026-04-17 execution audit:**
- `fills[0]` P0: avgFillPrice now used at both entry path (bot.py:5376) and exec-qa patrol
(bot.py:5809-5810), falling back to fills[0] only when avgFillPrice is unpopulated. ✓
Comments at both sites explicitly reference audit_2026-04-17_execution.md.
**Working correctly:**
- `total_scale` applied to shares before entry (bot.py:5098-5102): confirmed multiplication,
not just logging. Zero-share guard at bot.py:5114-5116 fires after all sizing caps. ✓
- `HOLD_CAP_MIN` trend exemption (bot.py:3398): `_is_capped_setup` checks for MEAN_REVERT /
EXTENSION_FADE in strategy_reason; trend (which has "TREND" in reason) is implicitly excluded.
Hold time measured from `entry_time` via fromisoformat with timezone handling. ✓
- `OBV_LOSS_EXIT` loss-only guard (bot.py:3349): fires only when `profit_per_share < 0` in
combination with OBV adverse. Profitable trades take the BE-stop-tighten path instead. ✓
- `FLAT_EXIT` distance in `_compute_exits` (bot.py:4927-4930): trim_dist = tgt_dist =
1.0×daily_atr correctly guarded to mean_revert and extension_fade only. Trend keeps
original ladder distances. ✓ (But see P1 above for the trim quantity issue.)
- Friday 3:50 PM ET flat (bot.py:3088-3105): no rsi_extreme exemption present. Comment at
lines 3081-3087 explicitly notes the 2026-04-17 decision to drop the carve-out. ✓
- Entry duplicate protection: three-layer guard at bot.py:4985-5024 (in-store, IBKR cache,
ib_insync wrapper). Deferred entry dedup at lines 4573-4584 collapses to latest-per-symbol
within a drain cycle. ✓
- Stop-loss check (bot.py:3417-3421): uses current bar's close_price, correct direction
comparison. Stop calculated from daily ATR at entry, stored in Trade and persisted to DB. ✓
- `RSI_TRIM_PROFIT_GUARD`: correctly skips BE-stop-tighten when at a loss, at all three fire
sites (TRIM1 at 3780-3782, TRIM2, OBV rule F at 3347-3349). ✓
**Carried from prior audits — unfixed, no change:**
- `signal_price` / `signal_time` not restored on restart (P1 filed 2026-04-17; slippage
analytics only, no exit logic depends on in-memory value).
- `entry_time` records fill-completion timestamp, not signal time (P1 filed 2026-04-17;
analytics only).
- `_setup_mode` not persisted to DB (RISK filed 2026-04-16; no current exit logic uses it
directly — HOLD_CAP correctly uses strategy_reason string instead).
- `_fri_ah_close_queued` not persisted (RISK filed 2026-04-23; protected by `_close_trade`
is_open guard).