A broker account holds one position per contract. If two strategies in the same account both sell the SPX 6000 put expiring today, they are not two positions: they are one, twice as large, and neither strategy can close its half on its own. If one sells that put while the other buys it, the two orders cancel out and neither strategy has the trade it was backtested on.
Backtests don't know about each other, so a portfolio of backtests can count trades that could never have lived together in one account. The strike guard finds those collisions among the Veeman backtests of a portfolio and the strategies imported from a file whose trade log lists the legs. It asks you what each strategy should do when a strike it needs is already taken, and re-runs those strategies with your answer. The portfolio then uses the re-run strategies. The original backtests in the Research archive and the imported files never change.
Two strategies are enough, of either kind: a portfolio made only of imported strategies is checked the same way.
Two positions collide when they hold the same contract at the same minute:
Only what the portfolio actually trades holds strikes. A trade the portfolio doesn't take, or takes at 0 contracts, isn't in the account: it holds nothing, and its entry has nothing to resolve. That is the case when:
The strike guard reads this from the portfolio's trade list worked out on the original backtests and files. Dynamic sizing depends on the equity, and the strike guard changes the equity, so a later trade that its own shifts push across zero contracts isn't examined again. A position the portfolio takes only in part (dynamic sizing sizes each piece) still holds all its strikes. Positions opened by Tactics adjustments hold their strikes too, but the strike guard doesn't move them (it moves entries, not adjustments) and says so when it happens.
The strategy that entered first keeps it. The one that enters later applies its own rule. When two strategies enter in the same minute, the one higher in the rail keeps the strike: the order you see is the precedence. A strategy inside a group sits where its group sits, so moving a group's frame moves the precedence of everything inside it. You set it by arranging the rail.
Every strategy that enters on a taken strike gets one rule, chosen in the strike guard window.
| Rule | What happens at a collision |
|---|---|
| Shift structure | The whole structure moves one strike step (5 points on SPX), every leg by the same amount, so it keeps its shape and width. It moves first toward the money of the leg that collides (up for a put, down for a call) and, if that is taken too, the other way. If both are taken, the entry is skipped. |
| Shift leg | Only the legs that collide move, one strike step, in the same order (in the money, then out of the money). The other legs stay where they are, so the structure's width can change. A shift that would land a leg on another leg of the same structure is not used. |
| Skip entry | The strategy doesn't enter. |
| Ignore strike conflicts | Nothing happens: the strategy enters on its own strikes, as if there were no strike guard, and the two positions share the contract. Its trades stay exactly as in its backtest or file. |
The shift is one step only, and a candidate is accepted only if every leg of the moved structure is free: the strike guard never opens a structure that is half moved. With Shift structure an iron condor moves as a block, and the short put and short call of an iron butterfly stay on the same strike. When a put and a call of the structure collide at the same time, the first of them in the structure decides which way it tries first.
Ignore strike conflicts leaves the collisions in the portfolio on purpose. Use it when the strategies trade in separate accounts, where nothing is netted, or when you want a strategy counted exactly as it was backtested. Nothing is re-run for it, and its positions still hold their strikes: a strategy that enters after it on one of them applies its own rule.
A strategy with no direct collision has no rule to choose. If a shift elsewhere makes it collide later in the same day, it uses Shift structure, the default, and its result says so.
A strategy imported from a file takes part when its trade log lists each trade's legs and times: the same detail Rewind replays it from (which files carry it is in Import formats). A strategy imported without that detail, and the trades Rewind can't replay (a calendar, a later expiration, a leg that can't be read), hold no strike and are left out.
The precedence and the rules are the same as for Veeman backtests: the strategy that entered first keeps the strike, whoever designed it, because in one account the broker nets the second order. What changes is how an imported trade applies its rule, since there is no recipe to re-run:
The imported file itself never changes. The strike guard sits on top of it: the trades it skips or re-prices, and their effect on the curves, the trade list, the sizing, the margin and the manual costs. Use original trades takes that layer away and the numbers are the file's again. If you refresh the strategy with Update data, the file changes, and its strike guard and its rule are removed: choose its rule again and re-run.
In the strike guard window an imported strategy is labelled from file, and a note reminds you that shifting one of its trades gives an estimated P&L.
Shift or skip
Skipping is exact but drops whole trades, and on a portfolio of strategies built on the same strikes it can take a large share of the P&L away. Shifting keeps the trades, at an estimate. Freeze a variant with one rule, apply the other, and compare them side by side.
When you confirm, Research re-runs the strategies only on the days that have a collision. A Veeman backtest is re-run by the same engine that made it; the trades of an imported strategy are kept, skipped or re-priced as described above. Every other day keeps the saved trades of the original backtest, or of the file, exactly.
The run takes a few seconds and the window shows its progress. You can close the window: the run goes on and the portfolio updates when it ends.
If the dataset was updated
The days that are re-run use today's dataset. If the dataset was updated after a backtest was saved, those days can differ slightly from the archived run for reasons unrelated to the strike guard, and the result tells you so.
After the run, the strategies that changed carry a shield next to their name in the rail. Hover it for the rule and how many entries were shifted or skipped (for an imported strategy, that the shifted trades have an estimated P&L). The window lists the changes: date, minute, the strikes before and after, and which strategy held them.
The result belongs to one composition: these strategies, in this order, with these rules, these trading days and these trades taken. Add or remove a strategy, switch one on or off, reorder the rail (a row or a group's frame), change a weekday filter, or change what the portfolio takes (a weight, a group scale, a keyframe or the sizing that brings a trade to or from 0 contracts), and the chip at the top of the rail turns to Strike guard · update. Open it and re-run: the rules you chose are kept. If the change removed every collision, the window offers to restore the original trades instead, without re-running anything.
Update data on Veeman backtests is a change of this kind: their runs are replaced by newer ones, so the re-run no longer applies. The rules stay, and the window offers to open the strike guard and run it again on the new data.
The window opens on its own when a strategy that collides has no rule yet. Not now leaves the portfolio as it is and remembers your answer for that composition; the Strike conflicts chip in the rail reopens the window whenever you want.
Use original trades removes the strike guard: every strategy goes back to its archived backtest or to its file, and the rules are cleared. Applying or removing the strike guard is one step in History, so undo brings back the previous numbers.
Compare with and without
Freeze a variant before applying the strike guard, then pin it next to the live portfolio: the overlay shows what the collisions were worth.