How Seentio's Alert System Fires for Strategy Rebalances
When you activate a strategy on Seentio, you're wiring it into our automated rebalance system. This guide explains exactly how that system works — what triggers a rebalance, how the proposal gets generated, and how the alert reaches you.
The good news: you don't need to know any of this to use it. The system runs in the background. But if you're activating a strategy with real money on it, understanding the moving parts gives you confidence that nothing weird is happening behind the scenes.
What you'll learn
The end-to-end flow from "I just activated my Magic Formula strategy" through "I got an email asking me to approve a rebalance" — what each step is, what can go wrong, and how to debug if you're not getting alerts.
The high-level flow
1. Hourly timer fires (Mon-Fri, US market hours)
↓
2. Strategy-runner wakes up
↓
3. Loads list of all active strategies from our database
↓
4. For each strategy: is it due to rebalance based on cadence?
↓ yes
5. Backend computes target holdings (rank universe + factor scores)
↓
6. Fetch your current holdings via our brokerage connector
↓
7. Diff target vs current → proposed orders
↓
8. Save proposal to our database → notify the alert dispatcher
↓
9. Send email (or SMS / Slack / webhook) with review link
↓
10. You click → land on /strategies/{id}/pending/{rebalance_id}
↓
11. Click "Submit Selected" → orders go to your brokerage
Now let's break each step down.
Step 1: The hourly timer
An internal scheduler fires once per hour, Monday through Friday, between 14:00 and 21:00 UTC. That covers the full US trading day plus a buffer on each side. Each tick wakes up the strategy-runner.
We chose hourly — not every-minute — because: - Strategy cadences are weekly/monthly/quarterly, not intraday. An hour of latency on a monthly rebalance is irrelevant. - It keeps infrastructure overhead low. - It's predictable. You know an alert won't arrive at 4:17am if you're on the East Coast.
Step 2-4: Checking who's due
Each invocation, the strategy-runner reads the active-strategies index from our database — a single record listing every active strategy across all users with its cadence and last_rebalance timestamp.
For each entry, it checks: is it due?
| Cadence | Due if last_rebalance was more than... |
|---|---|
| Weekly | 7 days ago |
| Monthly | 30 days ago |
| Quarterly | 90 days ago |
If never rebalanced, it's due. Otherwise the runner compares timestamps and skips strategies that aren't due yet.
Step 5-6: The proposal computation
When a strategy is due, the runner asks the backend to trigger a rebalance for that strategy on behalf of its owner. The backend then does the real work:
- Load the strategy definition from our database.
- Compute target holdings:
- For ranking strategies (Magic Formula etc.): load today's snapshot, run the ranking against the spec, get top-N tickers + per-row weights.
- For legacy strategies: call the screener with your filters and rank by your single factor.
- Fetch your current holdings via our brokerage connector (the integration that links your linked brokerage account into Seentio).
- Diff target vs current — for each ticker, compute the buy/sell delta to bring your portfolio to target.
- Apply the position cap —
max_position_pctensures no single holding exceeds your set ceiling. - Skip tiny trades — if a delta is below
min_trade_dollars, we drop it. This prevents 30 micro-orders from hitting your brokerage every month.
The result is a list of proposed orders, each with a side (BUY/SELL), ticker, dollar amount, and share count.
Step 7-8: Storage + dispatch
The proposal is saved to our database under your account, scoped to the specific strategy and rebalance. Then the strategy-runner notifies the alert dispatcher with the alert payload.
The dispatcher handles channel routing. It checks your tier (because some channels are tier-gated):
- Basic: no rebalance alerts (you'd see the proposal in /strategies if you logged in, but no push)
- Starter ($19.99/mo): email
- Retail ($69.99/mo): email + SMS
- Professional ($199.99/mo): email + SMS + Slack
- Enterprise: all of the above + webhooks
Then it dispatches via the right channel:
- Email (sender: contact@app-seentio.com, your verified inbox)
- SMS (toll-free origination number)
- Slack via Slack's incoming webhook (set up at /account?tab=integrations)
- Webhook via plain HTTP POST to your URL
Step 9: What you receive
The email looks something like this (SMS and Slack are condensed versions):
Subject: Strategy 'Greenblatt Magic Formula' — Rebalance Ready for Review
Hi,
Your strategy "Greenblatt Magic Formula" is ready to rebalance.
PROPOSED ORDERS (12):
BUY STOHF ~ $1,200
BUY EQNR ~ $1,180
SELL ADBE ~ $850
BUY PDD ~ $1,150
... and 8 more
Total portfolio value: $35,420
You have full control. We will not execute anything until you log
in and click "Submit Selected". Review and approve here:
https://app-seentio.com/strategies/strat_abc123/pending/2026-05-05T15-30-00Z
This proposal expires in 24 hours. If you take no action, the
strategy will recompute on the next cycle.
— Seentio
Step 10-11: You decide
Click the link, land on the pending-review page. You'll see:
- The full list of proposed orders with current quotes
- Each order has a checkbox — you can deselect orders you don't want
- A "Submit Selected" button that fires the orders to your brokerage
- A "Skip This Rebalance" button that discards the proposal
Nothing executes without your click. This is intentional. Per ADR #1 in our generalized algorithm design, we don't auto-execute orders even if the user has explicitly authorized the strategy. Every trade requires a human in the loop.
Tips & common questions
-
Set up the channels before you activate. If you activate with
alert_channels=["sms"]but haven't verified your phone, you won't get the SMS — and the email fallback isn't automatic. Test channels at /alerts → "Test Alert" button before going live. -
The 24-hour expiry is real. If you ignore the alert for a day, the proposal is discarded. The next cycle (next month for monthly cadence) generates a fresh proposal at the new prices. Don't rely on stale proposals.
-
You can manually trigger a rebalance any time. Ask Claude: "Trigger a rebalance on Magic Formula now." This bypasses the cadence check and generates a proposal immediately. Useful when you've just changed the strategy spec or you want to lock in current prices.
-
Check your alert history at /alerts/history. Every email/SMS/Slack alert we send shows up in your audit log with timestamp, channel, and delivery status. If you think you missed an alert, look here first.
-
Slack is the most reliable channel for power users. Email can land in spam, SMS can fail in low-coverage areas. Slack with a dedicated channel is hard to miss. Available on Professional tier.
-
Don't activate a strategy you haven't backtested. The alert system will faithfully execute whatever you've told it to do. If you've got a buggy spec, you'll get a steady stream of weird proposals every cycle. Always run a backtest first.
What's next
- Create your first strategy if you haven't already.
- Understand what "live strategy" actually means and how it interacts with executable vs read-only brokerages.
- Configure alert channels at /account.
Need more help? Visit our Chat page to ask Seentio's AI assistant, or reach out at contact@app-seentio.com.