How I update the portfolio every Monday
Every step, from the email landing to the stops going in, in about thirty minutes
live track record on Dub · more about Lionshare · 6-year backtest· FAQs
Every Monday around 8:30am ET, before the market opens, the week’s portfolio lands in my inbox. One table. Fifteen to twenty stocks, each with a target weight and a dollar stop.
If you want to see a real one before any of this means anything, there’s a recent Monday post unlocked: Here it is. The names are stale by now, but the shape is exactly what arrives every week.
Simplified to three placeholder names, it looks like this:
Symbol Weight Stop $
Stock A 40% 61.4
Stock B 35% 128.9
Stock C 25% 47.2Why the weights make it portable
Each position weight is a percentage of the portfolio rather than a dollar amount, so the same table fits an account of a few thousand or a few hundred thousand without any translation.
On a $10,000 account, a 40% weight is $4,000. I place each position as a notional order at the open and let the broker work out the shares, which means I never count a single share by hand.
The stop is a share price, so that number stays the same no matter what the account holds.
The first week, from cash
A first week, starting from cash, is the easy version. I place the positions, set a stop at each dollar price, and that’s the whole job the first time around.
Every Monday after that
Every Monday after that, the work is just moving last week’s holdings to this week’s table, and the email already names every exit and every entry, so there’s no guessing about what changes.
I do the arithmetic in the window between the email landing and the open, based on whatever the account is worth at that moment. One line per name. Account value times the new weight gives me the dollar target, and the gap between that and what I already hold is the list of trades.
Say I’m holding a name worth $3,000 against a new target of $2,000. I trim $1,000. A bigger target, I top up the difference. A name that’s dropped off the list, I sell in full. A new name, I open it. Four moves, and every row falls into one of them.
I’ve done that math three different ways over the years and any of them works. For a long stretch it was a spreadsheet where I’d drop in my holdings and the new weights and read off the trades. Then for a while it was a screenshot of my positions and the new table handed to an LLM. Lately it’s a short Python script running on the Alpaca API.
The order I place the trades
Once I know the trades, the order I place them in matters.
Cancel last week’s open orders first, the standing stops included, so nothing fires off on its own while I’m in the middle of moving things.
Sells next, ahead of everything, both the names leaving the portfolio and the ones shrinking to a smaller weight, and where my broker allows it I queue them before the open. The proceeds from those sells become the cash that pays for the buys.
Buy once the sells fill, working from the largest position down to the smallest, topping up what grew and opening what’s new.
Stops go in last, after the positions match the table I place market order GTC stops at each target level.
Start to finish, it runs about thirty minutes.
How the stops work
Each stop is a plain stop-market order set at the dollar price next to its position, good till canceled, the kind that sells at market the moment the price is touched.
Every name gets one, so the moment the trades are in, the risk is already handled and nothing needs watching for the rest of the week. I refresh them from the new table every Monday, which is why the price holds flat through the week and only steps when the next table arrives.
It’s the system’s read on where a position should come out if it falls, and if a price gets hit, that position sells in full. The proceeds just sit in cash from there, and I leave them alone until the next Monday’s table puts them back to work.
A few things I’ve stopped worrying about
Timing. I aim for the open because the published targets assume I’m getting in around then, so the closer I am, the tighter my account tracks the record. It isn’t a day trade though, and a few minutes either way barely move anything.
Account size. A small balance just feels fees and rounding a little more, but the system is built to scale.
Broker. I’m on Alpaca now, after stretches on Robinhood and Fidelity, mostly for the API, though the loop asks for nothing unusual. Market orders, stop orders, US stocks. Most brokers handle all of it, and the money never leaves your own account.
The rest of the week
Then the rest of the week is nothing. No charts, no news, no alerts to check. Saturday a weekend review lands with the real result, up or down, written the same way either way. And then it’s Monday again.
Found this useful? Like it, restack it, and send it to one person who’d want it too. It’s how this reaches the next reader, and it makes a real difference to me.


