Hold Through Earnings or Sell Before? Decide With a Rule, Not a Guess

Whether to hold through earnings or sell before should not depend on how you feel about the quarter. It should depend on a rule you wrote before you bought. Earnings day is a different risk regime: the price re-rates while the market is closed, and a stop-loss order cannot help you. So decide one of three things in advance: never hold through, trim to a size where the worst historical move is survivable, or hold only when your floating gain is already thicker than the typical move.

Key takeaways

  • Post-earnings moves are gaps: binary, large, and overnight. A -5% stop against a -12% opening gap fills near -12%.
  • Three rule-based approaches: always exit (days_to_next_earnings < 2), size to the worst case, or hold only when floating_gain_pct exceeds the historical move.
  • The sizing arithmetic: maximum acceptable loss ÷ historical post-earnings move = position cap. 2% ÷ 8% = 25%.
  • Pair it with a buy guard (no new positions when days_to_next_earnings < 5), or you will buy and get forced out two days later.
  • "I have a good feeling about this quarter" is not a rule. Your journal tells you whether your earnings holds actually paid.

Why earnings day is a different kind of risk

On a normal day a stock moves 1%–2%. Your stop sits 5% below cost, and on most days the price has to travel through -5% to get anywhere worse, so the stop triggers roughly where you set it. Earnings breaks that assumption. Companies report after the close or before the open, and the price re-rates while you cannot trade. The stock opens -12%; your -5% stop fills near -12%. A stop protects you from a continuous intraday decline. It does nothing against an overnight gap.

The second difference is shape. Normal moves are continuous; earnings moves are binary. The stock goes up a lot or down a lot, and lands in the middle less often. The "historical post-earnings move ±x%" line Stock Compass shows on a card is the typical one-day move after this stock's last several reports. If it reads ±8% and your everyday stop is 5%, one earnings report simply jumps over your stop.

That is why "should I hold through earnings" cannot be answered by the same rules you use on ordinary holding days. It needs its own rule.

Three rule-based approaches

Approach 1: Never hold through

Simplest, easiest to backtest. Rule: exit when days_to_next_earnings < 2, and let your buy rules decide whether to re-enter after the report.

What you give up: the post-earnings rally, when it happens. What you protect: all of the capital in that position from a single overnight gap. It suits concentrated portfolios and anyone whose stop discipline already relies on a system rather than willpower (see the stop-loss you can't execute).

Approach 2: Trim to a survivable size

Rule: before earnings, cap the position at maximum acceptable portfolio loss ÷ historical post-earnings move.

This is the same idea as sizing by risk per trade, with one substitution: the stop distance becomes the gap size. Since the stop will not work, the gap is your real stop distance.

Approach 3: Hold only on a thick cushion

Rule: hold when floating_gain_pct is greater than the historical move; otherwise exit or trim. If the stock's typical post-earnings drop is 8% and you are up 15% over your cost basis, a typical bad report takes you from +15% to roughly +6%. The trade does not turn into a loss. Your floating gain is the cushion.

Its weakness: the cushion protects this trade from going negative. It does not protect the portfolio. A 40% position that drops 8% still costs the portfolio 3.2%. In practice, approach 3 is usually layered on top of approach 2.

A worked example

Portfolio: 100,000. You hold a stock worth 40,000 (a 40% position), bought for 35,000, so the floating gain is 14.3%. The card shows a historical post-earnings move of ±8%, and earnings are two days away. Your rule: accept at most a 2% portfolio loss from any single earnings event.

  • Do nothing: a -8% move takes the position to 36,800, a loss of 3,200, or 3.2% of the portfolio. Over budget.
  • Approach 1: sell everything. Earnings risk is zero. If the stock rallies 8%, you miss 3,200.
  • Approach 2: position cap = 2% ÷ 8% = 25%, or 25,000. Sell 15,000. If the remaining 25,000 drops 8%, you lose 2,000, exactly the budget.
  • Approach 3: 14.3% > 8%, so the rule allows holding. But portfolio risk is still 3.2%, so layered with approach 2 you still trim to 25,000.

Side by side:

ApproachAction before earningsWhat you give upWhat you protectWorst case (-8%)
Always exitSell 40,000All of the post-earnings upsideAll capital in the positionLoss 0
Cap at 25%Sell 15,00037.5% of the upsideThe portfolio risk budgetLoss 2,000 (2%)
Hold on cushionNothingNothingThis trade staying positiveLoss 3,200 (3.2%)

The numbers are illustrative. "Historical ±8%" is a typical value, not a ceiling; the next report could be ±15%. If you want room for a move beyond history, run the arithmetic again with 1.5 times the historical move in the denominator.

The buy rule has to cooperate

Whichever approach you pick, a buy rule that ignores the earnings date will put you into a stock two days before the report, and your own exit rule will throw you out the next day, paying commissions twice for nothing. Add a guard on the buy side: days_to_next_earnings > 5. After the report, the gap has happened and the price has re-rated; then let your breakout or moving-average logic decide whether to enter.

The earnings calendar in Stock Compass lists upcoming report dates for your holdings and watchlist. The dates come from public data and can be incomplete, particularly for smaller Hong Kong and China A-share names, so for a large position it is worth checking the company's own announcement.

Why "I have a good feeling about this quarter" is not a rule

A rule is something that gives the same action to a different person, on a different day, with the same data. A feeling fails that test. You cannot backtest it, and you cannot judge it afterwards: if the trade wins you call it good judgement, if it loses you call it bad luck.

The more practical problem is that you do not know whether it makes money. The fix is a trading journal: every time you hold through a report, record the floating gain, the position size, the historical move, your reason, and the actual move on the first day after. After 10–20 entries, compute the average result and the win rate of "I held through earnings." Many people who do this find the expected value is close to zero or negative. At that point approach 1 stops being timid and becomes the choice the data supports.

How to set this up in Stock Compass

The strategy below writes the buy guard and the pre-earnings exit as two rules. Stock Compass scans your holdings and watchlist against your rules every day and shows the result as a checklist. It does not connect to a broker or place orders; selling is still something you do yourself.

{
  "name": "No positions through earnings",
  "market": "us",
  "rules": {
    "buy":  { "v": 2, "outerOp": "OR", "groups": [ { "innerOp": "AND", "conditions": [ { "indicator": "is_20d_breakout", "operator": "==", "value": 1 }, { "indicator": "days_to_next_earnings", "operator": ">", "value": 5 } ] } ] },
    "add":  { "v": 2, "outerOp": "OR", "groups": [] },
    "trim": { "v": 2, "outerOp": "OR", "groups": [] },
    "exit": { "v": 2, "outerOp": "OR", "groups": [ { "innerOp": "AND", "conditions": [ { "indicator": "days_to_next_earnings", "operator": "<", "value": 2 } ] } ] }
  }
}
  • is_20d_breakout == 1: today's close is a 20-day high. This stands in for your existing buy logic; swap in whatever you use.
  • days_to_next_earnings > 5 (buy side): only open new positions when the next report is more than five trading days away, so the exit rule cannot immediately undo the buy.
  • days_to_next_earnings < 2 (exit side): flags an exit on the day before the report and on the report day itself.

For approach 2, move the same condition from the exit group to the trim group; when the flag appears, compute the target size as budget ÷ historical move and trim by hand. For approach 3, add floating_gain_pct < 8 to the exit group (replace 8 with the stock's own historical move). The group then reads "within two days of earnings and the cushion is thinner than the typical move, so exit"; a position with a thick enough gain does not trigger.

Common mistakes

  • Trusting a stop to cover earnings. Against a gap, a stop order fills near the open, wherever that is. The only risk control that works before earnings is position size.
  • One number for every stock. A stock with a ±3% history and one with a ±15% history should not share a position cap. Compute it per stock.
  • Deciding two days before the report. By then you are already in the emotion. Write the rule before you buy; earnings week is for executing it.
  • Treating the historical move as a ceiling. It is a typical value. Leave a 1.5x margin, or use approach 1.
  • Remembering only the wins. Without a journal you will overestimate how often your earnings holds paid.

Summary

Earnings risk is not ordinary risk: it bypasses your stop, it is large, and it is binary. It deserves its own rule, not a same-day feeling. You have three options: always exit, cap the position so the worst historical move fits your budget, or hold only when your floating gain exceeds the typical move, and the last two can be combined. Whichever you choose, add days_to_next_earnings > 5 as a buy guard, trigger the exit or trim with days_to_next_earnings < 2, and let your journal tell you whether holding through has ever been worth it on your own stocks.

FAQ

Should I sell before earnings or hold through?

Decide with a rule written before you bought, not with a view on the quarter. The three workable rules are: always exit when the report is less than two days away; trim so that your maximum acceptable loss divided by the historical post-earnings move caps the position; or hold only when your floating gain is larger than that historical move. Pick one, write it down, and let a journal tell you whether it pays on your stocks.

Why does a stop-loss not protect me on earnings day?

Because the price re-rates while the market is closed. A stop order can only fill once trading resumes, so a -5% stop against a -12% opening gap fills near -12%. Stops limit continuous intraday declines; the only thing that limits an overnight gap is how much you hold going into it.

How do I calculate how much to trim before earnings?

Divide your maximum acceptable portfolio loss by the stock’s historical post-earnings move. A 2% budget against a ±8% typical move gives a 25% position cap; on a 100,000 portfolio that is 25,000. If you hold more, sell the difference. Because the historical figure is a typical value rather than a maximum, some people use 1.5 times the historical move to leave a margin.

What does the "historical post-earnings move" on a Stock Compass card mean?

It is the typical one-day move after this stock’s recent earnings reports, shown as a plus-or-minus percentage. Treat it as an estimate of what a normal reaction looks like, not a ceiling on what can happen. Earnings dates and reactions come from public data and may be incomplete for some markets, so check the company’s own announcement for a large position.

Does Stock Compass sell my shares automatically before earnings?

No. Stock Compass does not connect to a broker and does not place orders. It scans your holdings and watchlist against the rules you wrote and shows you a daily list of what those rules flag, such as an exit signal when days_to_next_earnings drops below 2. Acting on the signal is your decision and your trade.