The market is approaching its peak; how can one achieve an effective and cheap hedge?

Please tell me what you are doing here, and what prompt you are using?

Which LLM model are you using? And is it the case that you just give them the portfolio and ask them to evaluate sales candidates?

I’ve only been working on this process for a few weeks and have just paper traded it. My real live money out of sample process is still 100% systematic). Basically I’m trying to see if there’s a better way to pick the best buy candidates than just a basic rule of picking the highest ranked stock.

I’ll give a brief summation of a prompt that is doing what is contained in some skill.md files I’ve developed. Not that i’m particularly protective of any “proprietary secrets” in my skill.md, but my skill file is so specialized to my crazy idiosyncratic process I think it would probably provide more noise than signal to someone looking from the outside in.

But to briefly summarize….

Buy Candidate Triage:

I provide an LLM with two CSVs .. one with my current holdings and one with a list of candidates that cleared my Buy Rules (generally just basic liquidity and rank requirements). If you run the P123 Default Screen Report the output will comes with all the Sector and Industry Descriptions for export.

Then provide those CSV with this prompt or point it to a skill that essentially reads…

I'll give you two CSVs — my current holdings and this week's buy candidates from my stock screen — plus my target number of portfolio positions (T), and the max cap of Sub-Industry positions in this portfolio (N).

Your only job: tell me which candidates I'm ALLOWED to buy without
over-concentrating. Do not analyze charts, fundamentals, or valuation.

## Story cluster table (the law)

Clusters catch correlated bets that span GICS codes. Every provider applies this table

identically. Membership is judged by what actually drives the stock's economics, using

the company's business, not just its code. If you determine a story cluster

Examples
| Cluster | Includes |

| **Shipping / tanker rates** | Crude tankers, product tankers, LPG/LNG carriers, dry-bulk shippers — regardless of IndCode (e.g., a tanker filed under OILGASSUPPORT and an LPG carrier under DOWNSTREAMENERGY are the same bet) |

| **Precious-metals miners** | Gold, silver, PGM miners; royalty/streaming companies |

| **Oil-price complex** | E&P, oilfield services, upstream-heavy integrateds |

If this week's names suggest a **new** cluster (several candidates/holdings across

different codes sharing one economic driver), flag it and store it in the existing cluster .md file for future reference

Caps (hard, no exceptions):

  • Sector: floor(0.25 x T) positions max per sector
  • Sub-industry: max(N, floor(0.10 x T)) positions max per sub-industry
  • Story cluster: same as sub-industry, applied to correlated bets that span
    sector codes (e.g. all shipping/tanker names, all gold miners, all
    oil-price-driven names count as one group regardless of how they're classified)

Rules:

  • Existing holdings are grandfathered. A group already at or over its cap is
    simply closed to new buys. Never recommend a sell.
  • A stock counts against its sector, its sub-industry, AND any cluster it
    belongs to. The most restrictive group wins.
  • Caps are hard. No override for a high-ranked name — in a hot sector every
    third name looks exceptional, which is exactly what this gate exists to stop.
  • If nothing clears, the answer is cash. Never bend a cap to fill a slot.

Output:

  1. Exposure snapshot — current count vs. cap for each sector, sub-industry,
    and cluster. Flag which are full or over.
  2. Cleared candidates — with how many open slots their group actually has.
  3. Blocked candidates — name the specific cap that blocked each one.

That will (hopefully) pare down your buy candidate list to a more diversified candidate selection.

The other thing I’ve been playing around with if is there is a way to leverage the better LLM models to utilize some basic chart grading to avoid melting ice cubes, value traps and stagnant stocks with no catalyst. I’m intrigued by the idea of giving LLMs a defined set of chart dynamics to reward or penalize listed in a skill.md and let it provide a grade on each buy candidate. I generally have put Technical Analysis into the “Financial Tarot Card Reading” bucket, and I’ve never found a way to systematically do it in a p123 successful backtest other than the most broad rules (reward 1 year price momentum), but when you’ve been running these systems long enough there’s nothing more groan inducing than when your system picks a Buy Candidate on a high rated stock that has been dead money for you three times before because it has some great fundamentals that the market isn’t buying or knows the real story behind.

I’m fairly LLM agnostic, and I like to bounce Fable and Sol’s output against each other until they come to a consensus.

Basically I’ll give a group of screenshots of 1 year chart with weekly bars for all my buy candidates, and point an LLM to them. The charts are all pre formated with SMAs, OBV, Stochastics, and a few others listed below.

You are grading a stock's WEEKLY chart as a buy candidate for a 3-9 month hold.

Assume fundamentals, valuation, and liquidity are already cleared by my screen by my systematic ranking rules — do not re-litigate them. Your only job is trend and timing.

Chart: 1-year weekly candles, SMA 20/50/200 (these are 20/50/200-WEEK), a
small-cap benchmark overlay, plus Volume+SMA10, OBV+SMA10, Stochastics Slow
(14,3,3), MACD histogram, ATR(14), DMI/ADX(14), and Accumulation-Distribution.

The golden rule: two separate scores, never blended

  • TREND STRENGTH (1-10) = durability of the multi-quarter trend. This is what
    ranks candidates.
  • ENTRY QUALITY (1-10) = is TODAY a well-defined-risk entry. This is only a
    timing overlay.

An elite trend that is overbought still ranks #1 on Trend — it just gets a
"wait" action. A tidy bounce inside a weak trend never outranks a real leader.

Reading discipline (this is where models go wrong)

  1. RIGHT EDGE ONLY. Every indicator read must come from the last weekly bar.
    The middle of the chart is context for trend shape and nothing else.
  2. With a benchmark overlay the price panel is in PERCENT, not dollars. Never
    read levels off the y-axis — use the header price and the legend SMA values.
  3. The benchmark line is NOT a moving average. Check the legend before ever
    saying "below the 200."
  4. Legend values follow the crosshair, not the last bar. If the legend's O/H/L/C
    doesn't match the header price, the legend is STALE — discard every legend
    number, read visually, and say so.
  5. The header's "Today's Change" is a ONE-DAY move. Never report it as the week.

Step 0 — macro gate, applied first (hard)

  • Above a RISING SMA200 → eligible.
  • Above a FLAT SMA200 with 20/50 stacked and rising → eligible, Trend capped 7.0.
  • Just reclaimed a still-DECLINING SMA200 → Trend capped 7.5, action is
    Watch-Macro. Not buyable yet.
  • Below a DECLINING SMA200 → DISQUALIFIED (macro trap). No exceptions, no matter
    how good the short-term setup looks — that's a mean-reversion trade, not this.
  • Chopping under a flat directionless SMA200 → DISQUALIFIED (no macro direction).

A price bounce does not clear this gate. The recovery has to show in the SLOPE of
the 200-week.

Step 0.5 — market stage (once per batch, from the small-cap index)

Green (index above rising SMA50, SMA200 flat-to-rising) = deploy normally.
Yellow (SMA50 flat/rolling over) = deploy only the very best, about half the
usual count. Red (below declining SMA50 or SMA200) = deploy nothing unless a
name is genuinely bucking the tape. This caps HOW MANY you buy; it never changes
either score.

Step 1 — classify exactly ONE setup type

A. Textbook reset — quiet pullback INTO rising SMA20/50, Stoch oversold and
curling, MACD contracting, OBV stable, AND a confirming candle (lower-wick
tail, bullish engulfing, or green weekly close off the MA). Entry 8-10. The
only unconditional buy.
B. Shallow/incomplete pullback — into rising SMA20 but Stoch only at the
midline. Entry 6-7.5. Conditional buy.
C. Extended leader — beautiful orderly trend, but Stoch pinned >80 and price
stretched above the SMA20. Entry 3-4.5. Right stock, wrong week.
D. Parabolic chase — vertical, miles above every MA. Entry 1-3. Avoid.
E. Falling knife — big shaved-bottom red candle through SMA20/50, ATR expanding.
Entry 1-2. Avoid.
F. Testing support, unconfirmed — at the MA, no reversal candle yet.
Entry 4-6. Watch.
G. Macro trap — failed Step 0. Entry 1-3. Disqualified.

STATE MACHINE — a chart advances ONE state at a time and cannot skip.
Sitting on a moving average is Type F, not Type A. Contact is not a bounce. A
knife must build a base BEFORE it can reclaim support. Do not front-run a level
because it "looks close."

Step 2 — Entry Quality caps (this is what makes it objective, not a vibe)

Take the LOWEST cap that applies and name it in your output:

  • Below a declining SMA200 → 3
  • Large shaved red candle, little/no lower wick → 3
  • Weekly close below the rising SMA50 → 3
  • OBV makes a lower low in the pullback → 4
  • Extended ~>20-25% above the rising SMA20 → 4.5
  • First green candle right after a breakdown → 4
  • Stochastics falling with no curl, OR crossed DOWN while above 50 → 5
  • MACD histogram negative AND expanding (not merely negative) → 5
  • OBV below its falling SMA10 → 5
  • OBV rising but A/D below its falling SMA10 (hidden distribution) → 5
  • Pullback volume ABOVE the volume SMA10 (heavier than the advance) → 5
  • No clean stop within ~8-12% of entry → 5
  • Parabolic blowoff reversal → 2.5

Two overrides worth stating plainly: heavy volume into support is active
distribution and beats any oscillator reset; and an earnings week's wide-range
candle can never create a confirmed reset — wait one normal-volume week.

Trend Strength scoring

Weights: MA structure and slope 4.0, price structure (higher highs/lows) 2.0,
relative strength vs the benchmark 1.5, OBV/volume confirmation 1.5, smoothness
1.0. Bands: 9-10 elite leader, 7-8.9 strong, 5-6.9 mixed/rebuilding, 3-4.9
damaged, 1-2.9 macro trap.

ADX < 20 at the right edge caps Trend at 5.0 regardless of how the MAs look.
Credit a trend only after ~3+ weeks of DI+ over DI- with rising ADX — one wide
bar spikes ADX mechanically and that's an event, not a trend.

GRADE THE CURRENT TREND, NOT THE PAST YEAR'S MOVE. A chart that tripled and then
rolled over is a 5-6, not an 8.

Output

Per candidate: Trend Strength /10, Entry Quality /10 (name the binding cap),
Setup Type + State, Timing Action, entry zone, stop line, the specific weekly
close that invalidates it, the one event that would upgrade it (with a time
estimate), and confidence 0-1.

Timing Action bands: Entry 8.5+ = buy full position · 7.0-8.4 = conditional buy
· 5.0-6.9 = watch · 3.0-4.9 = on deck · below 3 = avoid.

For a batch: one table sorted by TREND STRENGTH descending, then group the names
by timing — actionable now / watching (say exactly what each needs) / avoid.
Never demote a strong trend just because it isn't buyable this week.

3 Likes

Thanks for the reply, ars7777. I've had a look at SPX options, and the liquidity appears to be significantly better than IWM.

I've put together a simple example to illustrate how a 35% OTM SPX put hedge might work as crash protection for my portfolio.

SPX: 7,725
Small-cap portfolio: $10 million

  • Equivalent SPX exposure: $10,000,000 ÷ 7,725 = 1,294.5 shares

  • Each SPX option represents 100 shares, so this equates to approximately 13 contracts

  • Assuming a portfolio beta of 1.25, I would buy 16 contracts

  • Strike: 5,000 (approximately 35% below the current index level)

17 September 2026 expiry

  • Ask price: $65.80

  • Cost: 16 × 100 × $65.80 = $105,280

This provides 408 days of protection, equivalent to roughly $94,200 per year, or 0.94% of portfolio value annually.

Example: SPX falls 50%

  • Hedge notional = $10,000,000 × 1.25 = $12,500,000

  • Put intrinsic value = $12,500,000 × (50% − 35%) = $1,875,000

  • Assuming the portfolio falls 62.5% (50% × 1.25), its value declines to $3,750,000

  • Adding the hedge proceeds gives a total portfolio value of $5,625,000

Therefore, the hedge would limit the drawdown to approximately 44%.

The main assumptions are:

  • A constant portfolio beta of 1.25 (probably the biggest source of error, particularly if beta expands during a crash).

  • SPX is a reasonable proxy for my diversified small-cap portfolio, with correlations generally increasing during severe sell-offs.

  • The puts are valued using intrinsic value only, ignoring any increase in implied volatility, which should make this a conservative estimate.

  • The options are held to expiry.

To be even more conservative, if the portfolio's crash beta expanded to 1.4, the maximum drawdown would still be around 50% following a 50% decline in the SPX.

Is there anything significant you think I may be missing or would change?

I have 10+ years of experience trading futures but little experience with options, so I’d appreciate you pointing out any errors in my calculations or assumptions :slight_smile:

I am an amateur, not qualified to discuss personal financial matters or give specific advice. That said, I can share a bit more on how I approach things.

It’s interesting to see you lay out the math, because I’ve only recently done similar, even though I’ve been trading these maybe 7-8 years at this point. As with most things in my life, I start by “doing” in a small enough dose to (hopefully) not kill me and adjust, improve, scale as I go. So, I skipped the “theory” and went straight to practicing losing money on put options, gaining enough confidence to scale up, conveniently just as Covid arrived.

I’ve toyed with factoring in the beta of my portfolio. I’ve also experimented with expirations. I most often buy 3 months out, and roll them as they get near 2 months out. At the moment I’m holding two tranches of Oct 15 ‘26 expiries; I’m down 57% on one tranche and about 45% on the other, which is a very typical experience for me. I’ll roll them around mid-month.

I’m buying mine based on delta, but that typically results in 30-40% out of the money at the time of purchase.

I’ve experimented with 0.5% portfolio value per purchase/roll as my target vs. 0.5% of what I consider my true exposure (taking into account long-short concepts I may be experimenting with or similar).

Mark Spitznagel has written two books (The Dao of Capital and Safe Haven) that are worth reading on the concept and theory (I wish he covered more of the practice). He is a professional and very strongly advises amateurs not to try this.

Managing the protection in calm periods is easy (if you’re good with losing 50%+). During volatility, managing can become as much art as science. Unlike most insurance–where they let the event pass and then try not to pay you–this insurance pays you during the fire, and sometimes the initial offer will cover far more damage than the fire produces (but you won’t know that at the time).

Selling into the VIX spike (while your longs are still on) feels wrong, but for me it is right. There are, at times, mini-crashes that, when managed well, have for me defrayed the cost of the program. Early August ‘24, I recall a yen-carry unwind and offloading most of my coverage into an otherwise ugly pre-market tape. Again, this feels dangerous and counterintuitive (and may not be optimal in hindsight), because you don’t know how much worse things will get and your longs will still be long.

On your actual questions–I won't audit the math (not qualified), but one factual catch: your expiry date and your day count don't agree. Sep 17, 2026 is about six weeks out, while 408 days from now lands on Sep 17, 2027—and a 35% OTM put wouldn't be anywhere near $65.80 with six weeks left, so I'd guess you priced the Sep '27 monthly and "2026" is a typo. Worth confirming. If Sep '27 is what you’re looking at, that's much farther out than I personally buy for my program. I’m looking for convexity and willing to pay for it with extremely fast decay.

Take a good look at VIX options for Tail hedging and convexity. I bought a 1 month subscription to EDeltaPro to test some things a while back. Very interesting.

I just wanted to chip in with a quick snippet from a discussion I had with Claude the other day about the VIX. We were discussing whether I should use the VIX to model a hedge, but I mentioned that I don't trust the VIX post-2022—it feels like something changed.

VIX / the shift to short-dated options — yes, there's real truth to it. Your instinct is confirmed by the market structure. Same-day expiry (0DTE) options are now the majority of S&P 500 options flow: zero-days-to-expiry SPX options averaged 2.3 million contracts daily in 2025 and comprised 59% of the product's total volume, with individual months hitting a record 62.4% share. That's up dramatically since Cboe introduced daily expirations in 2022. Now the part that matters for you: VIX is constructed from SPX options with roughly 30 days to expiry. By definition, 0DTE flow does not enter the VIX calculation at all. So as volume migrates to same-day contracts, VIX is measuring a slice of the market that a shrinking share of participants actually trade. That's a genuine reason for the distrust you feel — VIX is an increasingly narrow window on where the real action is. Worse, the 0DTE crowd is heavily short-gamma/short-premium in aggregate, which can suppress realized intraday volatility in calm periods (dealers hedging dampen moves) right up until it doesn't — the feedback can flip and amplify in a fast break. So VIX can look sleepy while the actual tail risk is being warehoused somewhere it doesn't measure. You were right not to lean on it.

1 Like

My goal is to hedge as close to “the thing” as I can. So, SPX is already far enough away from what I trade (small/micro), but much closer than VIX is, which is a derivative of a derivative, and therefore introduces basis risk, which in my understanding means you need a larger allocation for the same payoff, resulting in more CAGR drag.

Spitznagel's test is cost-effectiveness — payoff per unit of bleed at the portfolio level — the point being to reduce the 'volatility tax' on compounding. Proxies score worse on that metric.

There are plenty of scenarios where VIX calls come out ahead (and are the right tool), but for the ones that matter to me, I think SPX puts are the better call (is that a pun?) from the research I've done.

Historically, anyway, the convexity in the VIX options means less allocation for the same tail protection. I too was surprised when I saw the actually data.

Thanks, this is really helpful.

I hadn’t really considered managing the hedge itself as an active position, particularly selling into VIX spikes when the options become significantly more valuable. I can see the logic behind it, although I suspect the timing and decision-making involved is probably beyond my ability.

Thanks also for catching the expiry/date error — you’re right, I was looking at the September 2027 expiry rather than September 2026. A longer-dated approach may make more sense for my situation but your comments have definitely given me food for thought.

Appreciate the detailed response. I’ll definitely look into Spitznagel’s books as well.

1 Like

A few follow-ups to some of the discussion:

First, VIX calls vs. SPX puts:

Again, I'm not an expert on VIX calls or SPX puts, but my understanding is that SPX puts are the better tool for significant crash protection, for a couple of reasons.

First, a put pays through two channels that multiply — the price drop drives it toward the money while the IV/skew explosion reprices it. A VIX call only gets the volatility half of the equation, and even that's a dampened version because it settles on futures (which have a beta below 1 to spot VIX).

The other issue is timing. A VIX call needs the vol spike still alive when you exit — at expiry or, in my case, whenever I sell/roll. I prefer the vol spike to be alive when I monetize my SPX puts too, but by not relying solely on vol, the put gives you more elbow room for a good outcome — which matters because your timing in these crises won't be perfect. Vol mean-reverts more quickly; a depressed price can stick around a lot longer.

If you get a vol spike with a shallow drawdown, I see VIX calls winning. But for the drawdowns we actually care about — the ones that damage compounding — I think equity index puts win, and SPX feels like the most liquid thing that's "close enough" to what I'm hedging.

Second, InmanRoshi’s post:

I originally came to P123 back in 2015 or so, looking for better candidates to review for my discretionary trading. Over the years I recall speaking with Yuval, Victor, and others, learning how you rank stocks — and how odd the conversation felt: "OK, you've ranked the stocks — now what?" "You buy them." "Which ones? When? How much? When do I sell?"

To me these methods created a "candidate list," not a buy list, and certainly not a full trading system with entry, exit, and position-sizing rules — especially for those who buy and sell on rank alone. (Interestingly, I've since come around to trusting rank-based buys and sells as the most likely to work and not be overfit.) It took me a few years of following along, and seeing the success many of you have had, before I understood these methods are viable.

Even so, I've always felt there's something to combining the two worlds: choosing from highly ranked stocks you shouldn't mind owning, but within the top ranks, honing in on strong charts and better entries, damage-reducing exits, building a diverse mix, and so on. I eventually gave up on it — partly because I didn't fully trust my own technical acumen against the processes represented here, and partly because I wanted something more automated.

There was a cautionary lesson in my discretionary years, too. I relied almost entirely on ADX and a handful of moving averages, and it worked. But as I started trading more dollars, I felt the "system" was too simplistic — surely more money deserved the "safety" of more indicators. You can guess where this is going. I killed what worked, and had to revert to the simple version.

The other blocker was ADX itself: I don't think it's nearly as useful on small/micro names as on large caps. It's computed from daily price action, and in thinly traded stocks it can read genuinely trending names as choppy. (The trends themselves may arguably be stronger in micro, but the price-action-based “thermometer” of ADX I think can break in thinly traded names.) Not being able to successfully port my preferred indicator into the process was one more reason to stop trying.

All that said — I still think there's something real in what InmanRoshi is investigating and hope to follow-along with the experimentation.

2 Likes