From dfc4990beda2ca91271dfca19dc2123f327d1068 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Mon, 14 Sep 2026 06:09:25 +0000 Subject: [PATCH] Analiza Zilnica 07: context de piata (11 diagrame) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Al optulea document de strategie. Acoperite prin desen: un top pe indice cu RSP care nu confirma varful, VIX citit invers (DA/NU, plus indicele in aceleasi zile), ATR in spike fata de ATR in cadere libera, bond-urile (TLT) ca semnal inter-market urmate de breakout pe o actiune sensibila la dobanda, reactia la CPI (DA/NU). Ce rămâne tabel si de ce, spus explicit intr-o secțiune proprie: breadth pe SMA 10/20/50/200, McClellan, advance/decline, AAII, Fear & Greed, COT. Niciunul nu are OHLC, deci nu se pot desena cu svg_candles - nu s-a forțat nicio diagrama pe ele. Plus un checklist de bottom si de top. Marcat ca adaugire proprie: CPI si PPI nu apar in recolte, deci descrierea lor si regula "intri a doua zi" sunt ale autorului; ATR% din platforma lui nu e explicat in transcrieri, asa ca panoul arata true range cu pragul de 2x media; pragurile AAII si procentele peste medii vin din titlurile din INDEX_TEMATIC, cu link la Q&A, fara sa fi fost citite paginile. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01MtSTyTmt6AbCL9j5ajEDm1 --- gen/az_context.py | 520 ++++ .../07_context_de_piata.html | 2088 +++++++++++++++++ .../08_ANALIZA_ZILNICA/07_context_de_piata.md | 1680 +++++++++++++ 3 files changed, 4288 insertions(+) create mode 100644 gen/az_context.py create mode 100644 summaries/08_ANALIZA_ZILNICA/07_context_de_piata.html create mode 100644 summaries/08_ANALIZA_ZILNICA/07_context_de_piata.md diff --git a/gen/az_context.py b/gen/az_context.py new file mode 100644 index 0000000..3137981 --- /dev/null +++ b/gen/az_context.py @@ -0,0 +1,520 @@ +"""Diagramele pentru summaries/08_ANALIZA_ZILNICA/07_context_de_piata.md. + +Toate prețurile sunt construite (fără ticker). Rulează: + .venv/bin/python gen/az_context.py +Înlocuiește în .md fiecare bloc ... cu output-ul +generatorului. Ca să schimbi o cifră, o schimbi aici și rulezi din nou. + +`PChart` e copiat din gen/az_pivoti.py: etichetele nivelurilor stau în marginea +din dreapta, după ultima candelă, împinse în jos când se ating. +McClellan, AAII, Fear & Greed, breadth și COT nu sunt preț: în .md sunt tabele. +""" +import re +import sys +from dataclasses import dataclass, field +from pathlib import Path + +sys.path.insert(0, "/workspace/atm-curs-dl") +from svg_candles import Chart, Level, Mark, MA, from_closes # noqa: E402 + +MD = Path("/workspace/atm-curs-dl/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.md") +GRAY, RED, GREEN, BLUE, ORANGE, PURPLE = "#777", "#c00", "#188a3e", "#1a5fb4", "#b06000", "#6a3d9a" +STYLE = dict(gap=15, body_w=9, left=44, width=620) +svgs = {} + + +@dataclass +class Seg: + """nivel valabil doar pe barele i0..i1""" + i0: int + i1: int + price: float + text: str + color: str = ORANGE + label_at: str = "out" + dy: float = -5.0 + dash: str = "" + + +def spread(items, gap=14): + """[(y, ...)] -> aceleași, cu y-urile împinse ca două etichete să nu se atingă""" + items = sorted(items, key=lambda t: t[0]) + out = [] + for it in items: + y = it[0] if not out else max(it[0], out[-1][0] + gap) + out.append((y,) + tuple(it[1:])) + return out + + +@dataclass +class PChart(Chart): + """copiat din gen/az_pivoti.py (vezi acolo explicațiile)""" + segs: list = field(default_factory=list) + seps: list = field(default_factory=list) + pad_px: float = 24.0 + lm: int = 104 + pad_bot_px: float = 0.0 + + def render(self) -> str: + n = len(self.candles) + self.left = self.lm if any(s.label_at == "lm" for s in self.segs) else self.left + segs = list(self.segs) + [Seg(0, n - 1, lv.price, lv.text, lv.color, "out", dash="4 3") + for lv in self.levels] + saved_lv, saved_ma = list(self.levels), list(self.mas) + longest = max([len(s.text) for s in segs if s.label_at == "out"] + [len(m.text) for m in saved_ma] + [0]) + self.width = max(self.width, int(self._cx(n - 1) + self.gap / 2 + 6 + longest * 6.2 + 8)) + top_price = max([c.h for c in self.candles] + [s.price for s in segs]) + self.levels = [Level(s.price, "", "none") for s in segs] + self.levels.append(Level(top_price + self.pad_px / self.scale, "", "none")) + if self.pad_bot_px: + low_price = min([c.l for c in self.candles] + [s.price for s in segs]) + self.levels.append(Level(low_price - self.pad_bot_px / self.scale, "", "none")) + self.mas = [MA(m.period, m.color, m.dash) for m in saved_ma] + svg = self.render_base() + self.levels, self.mas = saved_lv, saved_ma + parts = svg.split("\n ") + extra = [] + for k in self.seps: + x = self._cx(k) - self.gap / 2 + extra.append(f'') + closes = [c.c for c in self.candles] + xr = self._cx(n - 1) + self.gap / 2 + 6 + out_lab = [(self._y(s.price) + 4, s) for s in segs if s.label_at == "out"] + out_lab += [(self._y(sum(closes[-m.period:]) / m.period) + 4, Seg(0, 0, 0, m.text, m.color)) + for m in saved_ma if m.text] + placed = {id(s): y for y, s in spread(out_lab)} + placed.update({id(s): y for y, s in spread([(self._y(s.price) + 4, s) for s in segs if s.label_at == "lm"])}) + for s in segs: + x0, x1, y = self._cx(s.i0) - self.gap / 2, self._cx(s.i1) + self.gap / 2, self._y(s.price) + dash = f' stroke-dasharray="{s.dash}"' if s.dash else "" + extra.append(f'') + if s.label_at == "out": + extra.append(f'{s.text}') + elif s.label_at == "lm": + extra.append(f'{s.text}') + elif s.label_at == "left": + extra.append(f'{s.text}') + else: + extra.append(f'{s.text}') + for y, s in out_lab: + if s.i1 == 0 and s.price == 0: + extra.append(f'{s.text}') + k = 2 if self.title else 1 + return "\n ".join(parts[:k] + extra + parts[k:]) + + def render_base(self): + svg = Chart.render(self) + svg = re.sub(r'\n ]*stroke="none"[^>]*/>\n ]*fill="none"[^>]*>', "", svg) + prices = [p for c in self.candles for p in (c.o, c.h, c.l, c.c)] + [lv.price for lv in self.levels] + self._body_bottom = self.top + (max(prices) - min(prices)) * self.scale + return svg + + +def px_ratio(ch, a, b, c): + """raportul (c-b)/(b-a) măsurat în pixeli, după render""" + return (ch._y(b) - ch._y(c)) / (ch._y(a) - ch._y(b)) + + +def f2(x): + return f"{x:.2f}" + + +def near(a, b, tol=0.011): + return abs(a - b) <= tol + + +def wicks(n, special, default=(0.3, 0.3)): + w = [default] * n + for i, v in special.items(): + w[i] = v + return w + + +def true_range(cds): + out = [cds[0].h - cds[0].l] + for p, c in zip(cds, cds[1:]): + out.append(max(c.h, p.c) - min(c.l, p.c)) + return out + + +V = {} # cifrele folosite în text, tipărite la final + +# ================================================================ 1. VIX DA: reject în fostul suport + lower low +vix_head = [15.2, 14.8, 15.4, 15.0, 14.6, 15.1, # 0-5 calm + 17.0, 19.5, 23.8, 27.5, 26.0, # 6-10 spike + 24.1, 22.0, 20.2, 19.6, 20.4, 19.8, 20.6, 19.5, # 11-18 se sprijină pe 19.20 + 17.9, 16.9, 16.4] # 19-21 sparge suportul +vw_head = {8: (0.8, 0.3), 9: (0.9, 0.4), 13: (0.3, 1.0), 14: (0.3, 0.4), 15: (0.3, 0.4), 16: (0.3, 0.6), + 17: (0.3, 0.6), 18: (0.3, 0.3)} +vix_da = vix_head + [17.4, 18.5, 17.6, 16.8, 16.2, 15.6, 15.9, 15.1, 14.7, 15.0, 14.5, 14.3] +SUP = 19.20 +RJ = 23 +cds = from_closes(vix_da, wicks=wicks(len(vix_da), {**vw_head, 23: (0.7, 0.2)}), start=15.0) +assert all(near(cds[i].l, SUP) for i in (13, 14, 15, 18)), [cds[i].l for i in range(13, 19)] +assert all(c.l >= SUP - 0.01 for c in cds[11:19]), "suportul 19.20 ține pe barele 11-18" +assert cds[19].c < SUP, "bara 19 închide sub suport" +assert all(c.h < SUP for c in cds[20:RJ]), "după bara de spargere nimic nu revine la 19.20 până la retest" +assert near(cds[RJ].h, SUP) and cds[RJ].c < SUP, "retestul atinge 19.20 din jos și închide sub" +assert cds[RJ + 1].c < cds[RJ].c, "bara de după retest confirmă rejectul" +LL0 = min(c.l for c in cds[19:22]) +LL = next(i for i in range(RJ + 1, len(cds)) if cds[i].l < LL0) +assert all(c.h < SUP for c in cds[RJ + 1:]) +peak_v = max(range(len(cds)), key=lambda i: cds[i].h) +V["vix"] = dict(sup=SUP, peak=cds[peak_v].h, rj_h=cds[RJ].h, rj_c=cds[RJ].c, ll0=LL0, ll=LL, ll_l=cds[LL].l, + end=cds[-1].c) +print("D1 VIX", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["vix"].items()}) +ch = PChart(candles=cds, + levels=[Level(SUP, f"fost suport = rezistență {SUP:.2f}", ORANGE)], + marks=[Mark(peak_v, f"spike {cds[peak_v].h:.1f}", RED, "above"), + Mark(16, "suport", ORANGE, "below", dy=4), + Mark(RJ, "reject", RED, "above", dy=-4), + Mark(LL, "lower low", GREEN, "below", dy=4)], + scale=12, title="Exemplu construit (fără ticker) — daily, VIX (citit invers)", + caption="VIX respins sub fostul suport și lower low: frica scade, favorabil long-urilor pe indice.", + **STYLE) +svgs["vix_da"] = ch.render() + +# ================================================================ 2. indicele, aceeași perioadă: HL + long +idx = [55.0, 55.3, 54.9, 55.2, 55.5, 55.2, + 54.2, 53.0, 51.2, 49.8, 50.3, + 51.0, 51.9, 52.4, 52.7, 52.2, 52.6, 52.1, 52.6, + 53.4, 54.0, 54.3, + 53.8, 53.2, 54.3, + 54.8, 55.3, 55.9, 55.6, 56.2, 56.8, 56.5, 57.1, 57.5] +assert len(idx) == len(vix_da), "aceeași perioadă, bară cu bară" +cds = from_closes(idx, wicks=wicks(len(idx), {8: (0.3, 0.8), 9: (0.3, 0.9)}), start=55.2) +HL, TRG = RJ, RJ + 1 +bottom = min(range(len(cds)), key=lambda i: cds[i].l) +assert bottom == peak_v, "bottom-ul indicelui = spike-ul VIX" +assert cds[HL].l > max(c.l for c in cds[11:19]), "pullback-ul face higher low peste consolidarea de după bottom" +assert cds[HL].l == min(c.l for c in cds[20:]), "bara 23 e low-ul pullback-ului de după bara 19" +assert cds[TRG].c > cds[HL].h, "trigger: close peste high-ul barei de higher low" +entry = cds[TRG].c +sl = round(cds[HL].l - 0.10, 2) +risk = entry - sl +tp = round(entry + 2 * risk, 2) +hit = next(i for i in range(TRG + 1, len(cds)) if cds[i].h >= tp) +assert min(c.l for c in cds[TRG + 1:]) > sl +V["idx"] = dict(bottom=cds[bottom].l, hl=cds[HL].l, entry=entry, sl=sl, risk=risk, tp=tp, hit=hit - TRG) +print("D2 indice", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["idx"].items()}) +ch = PChart(candles=cds, + levels=[Level(tp, f"TP {f2(tp)} = 2R", BLUE), + Level(entry, f"intrare {f2(entry)}", GREEN), + Level(sl, f"SL {f2(sl)}", RED)], + marks=[Mark(bottom, "bottom (VIX în spike)", GRAY, "below", dy=4), + Mark(HL, "HL = reject pe VIX", GREEN, "below", dy=14), + Mark(hit, "TP", BLUE, "above")], + scale=24, title="Exemplu construit (fără ticker) — daily, indicele, aceeași perioadă", + caption="Bara 23: VIX respins la 19.20, indicele face higher low. Intrarea vine pe close-ul următor.", + **STYLE) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp) - 2.0) < 0.01, "2R nu e desenat la 2x risc" +svgs["vix_indice"] = svg_ + +# ================================================================ 3. VIX NU: higher low pe VIX +vix_nu = vix_head + [17.4, 18.5, 17.6, 17.2, 18.4, 19.8, 21.6, 23.4, 22.5, 24.6, 23.8, 25.2] +cds = from_closes(vix_nu, wicks=wicks(len(vix_nu), {**vw_head, 23: (0.7, 0.2), 25: (0.2, 0.3)}), start=15.0) +assert [c.c for c in cds[:24]] == [c.c for c in from_closes(vix_da, start=15.0)[:24]], "până la bara 23 identic cu DA" +HLV = 25 +assert cds[HLV].l > LL0 and cds[HLV].l == min(c.l for c in cds[RJ:]), "VIX face higher low" +back = next(i for i in range(HLV, len(cds)) if cds[i].c > SUP) +V["vixnu"] = dict(hl=cds[HLV].l, back=back, back_c=cds[back].c, end=cds[-1].c) +print("D3 VIX NU", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["vixnu"].items()}) +ch = PChart(candles=cds, + levels=[Level(SUP, f"fost suport {SUP:.2f}", ORANGE), + Level(LL0, f"low anterior {f2(LL0)}", GRAY)], + marks=[Mark(RJ, "reject?", GRAY, "above", dy=-4), + Mark(HLV, "higher low", RED, "below", dy=4)], + scale=12, title="Exemplu construit (fără ticker) — daily, VIX (citit invers)", + caption="Același început, dar VIX face higher low și închide peste 19.20: risc de nouă cădere pe indice.", + **STYLE) +svgs["vix_nu"] = ch.render() + +# ================================================================ 4. ATR în spike la locul crimei: bounce +cl4 = [50.0, 50.6, 51.1, 50.8, 51.6, 52.3, 52.0, 53.0, 53.8, 54.4, # 0-9 swing high la 9 + 53.9, 53.4, 53.8, # 10-12 + 54.8, 55.7, 55.4, 56.5, 57.4, 57.1, 58.3, 59.2, 58.9, 60.1, 61.2, 62.0, # 13-24 vârf + 61.4, 61.7, 60.6, 59.8, # 25-28 început de corecție + 58.0, 56.3, 55.5, # 29-31 bare mari, hammer la 31 + 56.6, # 32 trigger + 57.2, 57.9, 57.6, 58.6, 59.3, 59.0, 60.0, 60.8] # 33-40 +cds = from_closes(cl4, wicks=wicks(len(cl4), {29: (0.4, 0.6), 30: (0.4, 0.7), 31: (0.1, 0.9)}, default=(0.2, 0.2)), start=49.7) +LC = cds[9].h +HM, TG = 31, 32 +PK = max(range(len(cds)), key=lambda i: cds[i].h) +tr = true_range(cds) +for c, t in zip(cds, tr): + c.vol = t +tr_norm = sum(tr[10:29]) / len(tr[10:29]) +assert PK == 24 +assert all(c.h < LC for c in cds[:9]) and cds[13].c > LC, "bara 9 e swing high-ul spart = locul crimei" +assert near(cds[HM].l, LC, 0.051) and cds[HM].c > LC, "hammer-ul atinge locul crimei și închide deasupra" +assert min(tr[29:31]) >= 2 * tr_norm, ("barele 29-30: range de 2x normalul", tr[25:33], tr_norm) +assert cds[TG].c > cds[HM].h, "trigger: close peste high-ul hammer-ului" +entry = cds[TG].c +sl = round(cds[HM].l - 0.10, 2) +risk = entry - sl +tp1 = round((cds[PK].h + cds[HM].l) / 2, 2) # jumătatea distanței până la vârf +R1 = (tp1 - entry) / risk +tp2 = round(entry + 2 * risk, 2) +hit1 = next(i for i in range(TG + 1, len(cds)) if cds[i].h >= tp1) +hit2 = next(i for i in range(TG + 1, len(cds)) if cds[i].h >= tp2) +assert tp2 < cds[PK].h and min(c.l for c in cds[TG + 1:]) > sl +V["atr"] = dict(lc=LC, pk=cds[PK].h, hm_l=cds[HM].l, tr_norm=tr_norm, tr_spike=max(tr[29:32]), + spike_x=max(tr[29:32]) / tr_norm, entry=entry, sl=sl, risk=risk, tp1=tp1, R1=R1, tp2=tp2, + hit1=hit1 - TG, hit2=hit2 - TG) +print("D4 ATR", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["atr"].items()}) +ch = PChart(candles=cds, + levels=[Level(tp2, f"TP2 {f2(tp2)} = 2R", BLUE), + Level(tp1, f"TP1 {f2(tp1)} = 1/2 până la vârf ({R1:.1f}R)", BLUE), + Level(entry, f"intrare {f2(entry)}", GREEN), + Level(LC, f"locul crimei {f2(LC)}", ORANGE), + Level(sl, f"SL {f2(sl)}", RED)], + marks=[Mark(9, "swing high", ORANGE, "above", dy=-4), + Mark(PK, f"vârf {f2(cds[PK].h)}", GRAY, "above"), + Mark(30, "spike de range", RED, "below", dy=26), + Mark(TG, "trigger", GREEN, "above", dy=-4)], + mas=[MA(20, GRAY, dash="4 3", text="SMA-20")], + scale=18, vol_h=70, vol_label="true range pe bară (volatilitate)", + title="Exemplu construit (fără ticker) — daily, indicele", + caption="Range-ul barelor sare la peste 2x normalul exact când prețul atinge locul crimei.", + **STYLE) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp2) - 2.0) < 0.01 +assert abs(px_ratio(ch, sl, entry, tp1) - R1) < 0.01 +svgs["atr_spike"] = svg_ + +# ================================================================ 5. ATR în cădere liberă: nu e bottom +cl5 = [50.0, 50.7, 51.2, 50.9, 51.8, 52.5, 52.2, 53.2, 53.9, 54.5, + 54.0, 55.0, 55.6, 56.3, 57.0, + 56.6, 56.3, 55.9, 56.0, 55.6, 55.3, 55.4, 55.0, 54.7, 54.8, 54.5, 54.2, 54.3, 54.0, 53.8, 53.9, + 53.6, 53.4, 53.5, 53.2, 53.0] +w5 = [(0.3, 0.3)] * 15 + [(0.12, 0.12)] * 21 +cds = from_closes(cl5, wicks=w5, start=49.7) +LC5 = cds[9].h +tr = true_range(cds) +for c, t in zip(cds, tr): + c.vol = t +up_tr = sum(tr[1:15]) / 14 +dn_tr = sum(tr[15:]) / len(tr[15:]) +touch = next(i for i in range(15, len(cds)) if cds[i].l <= LC5) +assert all(c.h < LC5 for c in cds[:9]) and cds[11].c > LC5 +assert max(tr[15:]) < up_tr, "fără nicio bară de spike în corecție" +assert cds[-1].c < LC5 - 1.5, "prețul trece prin locul crimei fără reacție" +V["atrnu"] = dict(lc=LC5, up_tr=up_tr, dn_tr=dn_tr, touch=touch, end=cds[-1].c) +print("D5 ATR NU", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["atrnu"].items()}) +ch = PChart(candles=cds, + levels=[Level(LC5, f"locul crimei {f2(LC5)}", ORANGE)], + marks=[Mark(9, "swing high", ORANGE, "above", dy=-4), + Mark(touch, "atins, fără spike", RED, "below", dy=4), + Mark(33, "lower lows", RED, "below", dy=4)], + mas=[MA(20, GRAY, dash="4 3", text="SMA-20")], + scale=26, vol_h=70, vol_label="true range pe bară (volatilitate)", + title="Exemplu construit (fără ticker) — daily, indicele", + caption="Range-ul se micșorează pe cădere: nimeni nu capitulează, deci încă nu e bottom.", + **STYLE) +svgs["atr_nu"] = ch.render() + +# ================================================================ 6-7. top purtat de mega-cap-uri: indice vs RSP +ci = [50.0, 50.5, 50.2, 51.0, 51.6, 51.3, 52.1, 52.8, 52.5, 53.3, 53.9, 53.6, 54.4, 55.0, 54.7, 55.5, 56.0, + 55.4, 54.8, 55.1, 54.5, 54.2, + 54.9, 55.6, 56.1, 56.7, 56.8, + 55.9, + 55.4, 55.7, 54.9, 54.3, 54.6, 53.8, 53.2, 53.5, 52.6, 52.4, 52.8, 52.1] +cds = from_closes(ci, wicks=wicks(len(ci), {26: (0.6, 0.1)}), start=49.8) +P1, P2, ST, EN = 16, 26, 26, 27 +assert cds[P1].h == max(c.h for c in cds[:22]) and cds[P2].h == max(c.h for c in cds) +assert cds[P2].h > cds[P1].h, "indicele: al doilea vârf mai sus" +assert abs(cds[ST].c - cds[ST].o) <= 0.15 and cds[ST].h - max(cds[ST].o, cds[ST].c) >= 0.5, "shooting star" +assert cds[25].c - cds[25].o >= 0.5 and cds[EN].o - cds[EN].c >= 0.8, "evening star: bull mare, stea, bear mare" +assert cds[EN].c < cds[ST].l, "trigger short: close sub low-ul stelei" +entry = cds[EN].c +sl = round(cds[P2].h + 0.10, 2) +risk = sl - entry +tp = round(entry - 2 * risk, 2) +hit = next(i for i in range(EN + 1, len(cds)) if cds[i].l <= tp) +assert max(c.h for c in cds[EN + 1:]) < sl +V["top"] = dict(p1=cds[P1].h, p2=cds[P2].h, star_l=cds[ST].l, entry=entry, sl=sl, risk=risk, tp=tp, + hit=hit - EN) +print("D6 top indice", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["top"].items()}) +ch = PChart(candles=cds, + levels=[Level(sl, f"SL {f2(sl)}", RED), + Level(cds[P1].h, f"vârf 1 {f2(cds[P1].h)}", GRAY), + Level(entry, f"intrare short {f2(entry)}", GREEN), + Level(tp, f"TP {f2(tp)} = 2R", BLUE)], + marks=[Mark(P1, "vârf 1", GRAY, "above", dy=-4), + Mark(ST, "vârf 2 mai sus", RED, "above", dy=-4), + Mark(EN, "evening star", RED, "below", dy=4), + Mark(hit, "TP", BLUE, "below", dy=4)], + scale=22, title="Exemplu construit (fără ticker) — daily, indicele (ponderat)", + caption="Indicele face vârf nou. Singur, arată a continuare. Verificarea e pe RSP, dedesubt.", + **STYLE) +svg_ = ch.render() +assert abs(1 / px_ratio(ch, tp, entry, sl) - 2.0) < 0.01, "2R nu e desenat la 2x risc" +svgs["top_indice"] = svg_ + +cr = [40.0, 40.3, 40.1, 40.6, 41.0, 40.8, 41.3, 41.7, 41.5, 42.0, 42.4, 42.2, 42.7, 43.1, 42.9, 43.4, 43.7, + 43.1, 42.6, 42.8, 42.3, 42.0, + 42.4, 42.8, 43.0, 43.3, 43.2, + 42.8, + 42.4, 42.6, 42.0, 41.6, 41.8, 41.2, 40.8, 41.0, 40.4, 40.2, 40.5, 40.0] +assert len(cr) == len(ci) +cds = from_closes(cr, wicks=wicks(len(cr), {26: (0.3, 0.1)}, default=(0.25, 0.25)), start=39.8) +r1 = cds[P1].h +r2 = max(c.h for c in cds[22:28]) +i_r2 = max(range(22, 28), key=lambda i: cds[i].h) +assert r1 == max(c.h for c in cds) and r2 < r1, "RSP: al doilea vârf mai jos = nu confirmă" +V["rsp"] = dict(r1=r1, r2=r2, i_r2=i_r2, diff=(r2 - r1) / r1 * 100) +print("D7 RSP", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["rsp"].items()}) +ch = PChart(candles=cds, + levels=[Level(r1, f"vârf 1 {f2(r1)}", GRAY)], + marks=[Mark(P1, "vârf 1", GRAY, "above", dy=-4), + Mark(i_r2, f"vârf 2 mai jos {f2(r2)}", RED, "above", dy=-20)], + scale=40, title="Exemplu construit (fără ticker) — daily, varianta equal weight (tip RSP)", + caption="Aceleași zile. Compania medie nu mai face vârf nou: urcarea o duc câteva mega-cap-uri.", + **STYLE) +svgs["top_rsp"] = ch.render() + +# ================================================================ 8-9. CPI: breakout din compresie DA / NU +head8 = [50.0, 50.5, 50.3, 51.0, 51.6, 51.4, 52.1, 52.7, 52.5, 53.2, 53.8, 53.6, 54.3, 54.9, # 0-13 + 54.8, 55.1, 54.6, 54.9, 55.2, 54.7, 55.0, 54.8, 55.1, 54.9, 55.0] # 14-24 compresie +hv8 = [44, 47, 42, 48, 50, 43, 49, 51, 44, 50, 52, 45, 50, 48, + 38, 36, 35, 33, 32, 31, 30, 29, 28, 27, 26] +hw8 = [(0.3, 0.3)] * 14 + [(0.2, 0.2)] * 11 +C0, CP = 14, 25 +tail_da = [56.4, 56.9, 57.3, 57.0, 57.8, 58.4, 58.1, 58.9, 59.5, 59.2, 60.0, 60.5, 60.2, 60.9] +tv_da = [96, 62, 55, 44, 52, 54, 42, 50, 53, 41, 49, 51, 40, 47] +tw_da = [(0.2, 0.3), (0.2, 0.2)] + [(0.3, 0.3)] * 12 +cds = from_closes(head8 + tail_da, wicks=hw8 + tw_da, vols=hv8 + tv_da, start=49.8) +RH = max(c.h for c in cds[C0:CP]) +RL = min(c.l for c in cds[C0:CP]) +vavg = sum(hv8[C0:CP]) / (CP - C0) +CF = CP + 1 +assert near(RH, 55.40) and near(RL, 54.40), (RH, RL) +assert cds[CP].c > RH and cds[CP].vol >= 3 * vavg, "bara de CPI închide peste range cu volum de 3x" +assert cds[CF].l > RH and cds[CF].c > cds[CP].c, "a doua zi rămâne deasupra range-ului: confirmare" +entry = cds[CF].c +sl = round(RH - 0.20, 2) +risk = entry - sl +tp = round(entry + 2 * risk, 2) +hit = next(i for i in range(CF + 1, len(cds)) if cds[i].h >= tp) +assert min(c.l for c in cds[CF + 1:]) > sl +V["cpi"] = dict(rh=RH, rl=RL, cp_c=cds[CP].c, vol=cds[CP].vol, vavg=vavg, entry=entry, sl=sl, risk=risk, + tp=tp, hit=hit - CF) +print("D8 CPI DA", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["cpi"].items()}) +ch = PChart(candles=cds, + levels=[Level(tp, f"TP {f2(tp)} = 2R", BLUE), + Level(entry, f"intrare {f2(entry)}", GREEN), + Level(RH, f"range high {f2(RH)}", ORANGE), + Level(sl, f"SL {f2(sl)}", RED), + Level(RL, f"range low {f2(RL)}", ORANGE)], + marks=[Mark(19, "compresie înainte de CPI", GRAY, "below", dy=26), + Mark(CP, "CPI", PURPLE, "below", dy=4), + Mark(CF, "confirmare", GREEN, "above", dy=-4)], + scale=22, vol_h=70, title="Exemplu construit (fără ticker) — daily, indicele", + caption="Nu intri înainte de raport. Intri după ce ziua de după CPI rămâne deasupra range-ului.", + **STYLE) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp) - 2.0) < 0.01 +svgs["cpi_da"] = svg_ + +tail_nu = [55.1, 54.2, 53.8, 54.1, 53.4, 52.9, 53.2, 52.5, 52.0, 52.3, 51.7, 51.2, 51.5, 50.9] +tv_nu = [92, 70, 58, 44, 60, 62, 45, 58, 60, 44, 55, 57, 42, 52] +tw_nu = [(1.4, 0.3)] + [(0.3, 0.3)] * 13 +cds = from_closes(head8 + tail_nu, wicks=hw8 + tw_nu, vols=hv8 + tv_nu, start=49.8) +assert near(max(c.h for c in cds[C0:CP]), RH) and near(min(c.l for c in cds[C0:CP]), RL), "aceeași compresie" +assert cds[CP].h > RH + 0.8 and RL < cds[CP].c < RH, "CPI: spike peste range, close înapoi înăuntru" +BD = next(i for i in range(CP + 1, len(cds)) if cds[i].c < RL) +assert BD == CP + 1 +V["cpinu"] = dict(cp_h=cds[CP].h, cp_c=cds[CP].c, bd_c=cds[BD].c, end=cds[-1].c) +print("D9 CPI NU", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["cpinu"].items()}) +ch = PChart(candles=cds, + levels=[Level(RH, f"range high {f2(RH)}", ORANGE), + Level(RL, f"range low {f2(RL)}", ORANGE)], + marks=[Mark(19, "compresie înainte de CPI", GRAY, "below", dy=26), + Mark(CP, f"CPI: spike {f2(cds[CP].h)}", PURPLE, "above", dy=-4), + Mark(BD, "close sub range", RED, "below", dy=40)], + scale=22, vol_h=70, title="Exemplu construit (fără ticker) — daily, indicele", + caption="Același range. Spike-ul de pe CPI se închide înapoi înăuntru: cine a cumpărat la 56 e prins.", + **STYLE) +svgs["cpi_nu"] = ch.render() + +# ================================================================ 10. bond-urile: hammer în suportul quarterly +cl10 = [46.0, 45.6, 45.9, 45.2, 44.7, 45.0, 44.3, 43.8, 44.1, 43.4, 43.0, 43.3, # 0-11 + 43.9, 44.4, 44.1, 44.7, 44.3, 43.9, # 12-17 + 43.4, 42.9, 42.6, 42.5, # 18-21 (21 hammer) + 43.0, 43.4, 43.2, 43.8, 44.3, 44.0, 44.6, 45.1, 44.8, 45.4, 45.9, 45.6] # 22-33 +cds = from_closes(cl10, wicks=wicks(len(cl10), {21: (0.1, 0.7)}, default=(0.2, 0.2)), start=46.3) +L1 = min(range(0, 12), key=lambda i: cds[i].l) +H10 = 21 +SQ = 41.80 +assert near(cds[H10].l, SQ) and cds[H10].l == min(c.l for c in cds), "hammer-ul face low-ul seriei, în suportul quarterly" +assert cds[H10].l < cds[L1].l, "al doilea picior mai jos" +assert min(cds[H10].o, cds[H10].c) - cds[H10].l >= 2 * abs(cds[H10].o - cds[H10].c), "hammer: codiță >= 2x corpul" +TG10 = H10 + 1 +assert cds[TG10].c > cds[H10].h +V["tlt"] = dict(l1=cds[L1].l, sq=SQ, hm_l=cds[H10].l, hm_c=cds[H10].c, tg=TG10, tg_c=cds[TG10].c) +print("D10 TLT", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["tlt"].items()}) +ch = PChart(candles=cds, + levels=[Level(SQ, f"suport quarterly {SQ:.2f}", ORANGE)], + marks=[Mark(3, "downtrend", GRAY, "above", dy=-4), + Mark(L1, "picior 1", GRAY, "below", dy=4), + Mark(H10, "hammer, picior 2 mai jos", GREEN, "below", dy=4)], + scale=26, pad_bot_px=10, title="Exemplu construit (fără ticker) — daily, ETF de bond-uri pe termen lung", + caption="Spike low sub picior 1, hammer în suportul quarterly: bond-urile își pot face bottom-ul.", + **STYLE) +svgs["tlt"] = ch.render() + +# ================================================================ 11. acțiunea sensibilă la dobândă: ascending triangle +cl11 = [49.0, 49.6, 50.3, 50.1, 51.0, 51.8, 52.6, 53.5, # 0-7 + 54.8, 54.0, 53.1, 53.8, 54.4, 54.8, 54.2, 53.6, 54.2, 54.8, 54.4, 54.0, 54.5, 54.8, 54.5, 54.3, 54.6, # 8-24 + 55.7, # 25 breakout + 56.2, 55.9, 56.6, 57.2, 56.9, 57.6, 58.2, 57.9, 58.6, 59.2, 58.9, 59.5, 60.0, 59.7] # 26-39 +cds = from_closes(cl11, wicks=[(0.2, 0.2)] * len(cl11), start=48.7) +RT = 55.00 +BO = 25 +assert near(max(c.h for c in cds[8:BO]), RT), "vârful triunghiului e plat la 55.00" +assert sum(1 for c in cds[8:BO] if near(c.h, RT)) >= 4, "cel puțin 4 atingeri ale rezistenței" +sw = [min(cds[a:b], key=lambda c: c.l).l for a, b in ((9, 13), (14, 17), (18, 21), (22, 25))] +assert all(x < y for x, y in zip(sw, sw[1:])), f"low-urile nu urcă: {sw}" +assert cds[BO].c > RT and all(c.c <= RT for c in cds[8:BO]) +assert BO > TG10, "breakout-ul acțiunii vine după trigger-ul de pe bond-uri" +entry = cds[BO].c +sl = round(sw[-1] - 0.10, 2) +risk = entry - sl +tp = round(entry + 2 * risk, 2) +hit = next(i for i in range(BO + 1, len(cds)) if cds[i].h >= tp) +assert min(c.l for c in cds[BO + 1:]) > sl +V["dhi"] = dict(rt=RT, lows=[f2(x) for x in sw], entry=entry, sl=sl, risk=risk, tp=tp, hit=hit - BO) +print("D11 actiune", {k: (f2(v) if isinstance(v, float) else v) for k, v in V["dhi"].items()}) +lowbars = [min(range(a, b), key=lambda i: cds[i].l) for a, b in ((9, 13), (14, 17), (18, 21), (22, 25))] +ch = PChart(candles=cds, + levels=[Level(tp, f"TP {f2(tp)} = 2R", BLUE), + Level(entry, f"intrare {f2(entry)}", GREEN), + Level(RT, f"rezistență {RT:.2f}", ORANGE), + Level(sl, f"SL {f2(sl)}", RED)], + marks=[Mark(lowbars[0], "low", GRAY, "below", dy=4), + Mark(lowbars[1], "HL", GREEN, "below", dy=4), + Mark(lowbars[2], "HL", GREEN, "below", dy=4), + Mark(BO, "breakout", GREEN, "above", dy=-4), + Mark(hit, "TP", BLUE, "above")], + scale=20, title="Exemplu construit (fără ticker) — daily, acțiune sensibilă la dobândă", + caption="Aceleași zile ca bond-urile: ascending triangle, breakout la 3 zile după trigger-ul de pe bond-uri.", + **STYLE) +svg_ = ch.render() +assert abs(px_ratio(ch, sl, entry, tp) - 2.0) < 0.01 +svgs["dhi"] = svg_ + +# ---------------------------------------------------------------- substituție în .md +if MD.exists(): + md = MD.read_text(encoding="utf-8") + for name, svg in svgs.items(): + pat = re.compile(rf".*?", re.S) + assert pat.search(md), f"marcatorul {name} lipsește din .md" + md = pat.sub(lambda _m: f"\n{svg}\n", md) + MD.write_text(md, encoding="utf-8") + print("scris", MD) diff --git a/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.html b/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.html new file mode 100644 index 0000000..b1434fa --- /dev/null +++ b/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.html @@ -0,0 +1,2088 @@ + + + + + +Analiză zilnică / #7 — Context de piață: breadth, sentiment, volatilitate, macro + + + +

Analiză zilnică / #7 — Context de piață: breadth, sentiment, volatilitate, macro

+

TLDR

+
    +
  • Înainte de orice idee pe simbol, verifici piața: cât din ea urcă de + fapt (breadth, McClellan, advance/decline), cât de speriată e (AAII, Fear & + Greed, VIX), dacă volatilitatea a explodat (ATR) și ce raport macro vine.
  • +
  • Bottom = majoritatea companiilor sub SMA 10/20 și peste 50% sub SMA 50, + McClellan oversold, advance/decline prăbușit, ATR în spike. Cât timp + ATR e „în cădere liberă", nu e bottom.
  • +
  • Top = indicele face vârf nou, dar McClellan face divergență și RSP + (equal weight) nu confirmă: piața o duc câteva mega-cap-uri.
  • +
  • VIX îl citești invers: VIX respins sub fostul suport și lower low = + bine pentru long; higher low pe VIX = risc de nouă cădere.
  • +
  • AAII e contrarian doar la 15-25% distanță între bullish și bearish.
  • +
  • Pe CPI, NFP, Fed nu intri înainte de raport. Intri pe ce rămâne după.
  • +
  • Contextul nu e trigger. Îți spune dacă ai voie să iei trigger-ul și cât + de agresiv.
  • +
+
+

De ce urmărești contextul

+

Un trigger bun pe o acțiune (buy doji, MBT-10) are aceeași formă într-o +piață care urcă și într-una care se prăbușește. Diferența e cine mai +cumpără după tine. Când 74% din companii sunt sub SMA 10, fondurile vând +tot, fără să aleagă, iar setup-ul tău cade împreună cu restul. Din +17.08:

+
+

„când a picat toată piața și aici am avut rejectorul ăstea masive, dacă +înținem BT-10, ați fi scos dacă ați fi intrat"

+
+

Ce decizie te ajută să iei:

+
    +
  • dacă intri — un long pe acțiune cu McClellan în zero reject și VIX în + higher low e un long împotriva pieței;
  • +
  • cât de mare — în volatilitate mare (săptămâna NFP, Jackson Hole) + poziția e mai mică, iar stop-ul pe break-even te scoate des;
  • +
  • când — nu deschizi înainte de CPI / NFP / Fed. Aștepți ziua raportului + și vezi unde se închide;
  • +
  • ce direcție — la top cauți short-uri, la bottom cauți long-uri, nu + invers.
  • +
+
+

Termenii, o singură dată

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermenCe înseamnă aici
market picturepanoul lui cu procentul de companii sub/peste SMA 10/20/50/200, pe fiecare indice, plus McClellan și COT
breadthcât de largă e mișcarea: câte companii participă, nu doar cât a mișcat indicele
McClellan Oscillatoroscilator de breadth calculat din avansuri minus declinuri; are linie de zero, zonă de oversold și de overbought
zero rejectMcClellan pleacă din oversold, urcă la linia de zero și e respins sub ea
advance/decline (A/D)linia cumulată: acțiuni în urcare minus acțiuni în scădere, zi de zi
RSPETF-ul S&P 500 equal weight: fiecare companie are aceeași pondere
Magnificiimega-cap-urile (Magnificent 7) care pot duce singure indicele ponderat
AAII Surveysondaj săptămânal al investitorilor individuali: bullish / bearish / neutru
Fear & Greedindex de sentiment pe cadrane: frică extremă, frică, neutru, lăcomie, lăcomie extremă
VIXvolatilitatea implicită pe S&P 500. Crește când piața cade (se cumpără protecție)
ATR / ATR%Average True Range: cât se mișcă, în medie, o bară. ATR% e varianta procentuală din platforma lui
COTCommitment of Traders: poziționarea marilor speculatori și a marilor comercianți
TLTETF pe bond-urile americane pe termen lung. Prețul urcă atunci când randamentul scade
locul crimeiun fost swing high spart, care la retest devine suport
+
+

Ce se desenează și ce rămâne tabel

+

svg_candles desenează preț. Unii indicatori de aici nu sunt preț:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IndicatorCum e în documentDe ce
breadth pe SMA 10/20/50/200tabele un procent din companii, o singură cifră pe zi per medie, nu o serie OHLC
McClellantabeloscilator în jurul lui zero; o diagramă de candele l-ar falsifica
advance/declinetabellinie cumulată, nu are open/high/low/close
AAII, Fear & Greedtabelsondaje / scor 0-100, săptămânal sau zilnic
COTtabelpoziții nete raportate săptămânal
VIXdiagramă (3)are candele, se citește cu aceleași pattern-uri
RSP vs. indicediagramă (2)două serii de preț în aceleași zile
ATRdiagramă (2)se vede în range-ul barelor; panoul de jos arată true range-ul pe bară
TLT + acțiune sensibilă la dobândădiagramă (2)preț
CPI / macrodiagramă (2)reacția prețului la raport
+
+

1. Breadth pe SMA 10/20/50/200

+

Primul lucru din analiza zilnică (02.09), înainte de simboluri: ce procent +din companiile fiecărui indice (S&P, NASDAQ, Russell, Dow) e sub SMA 10, +20, 50 și 200.

+
+

„suntem 74% total companii din state sub SMA 10 […] 56% sub SMA 50 și +vedeți că la SMA 200 este 50-50"

+
+

De ce funcționează: SMA 10 și 20 se schimbă repede, deci arată vânzarea din +ultimele 2-4 săptămâni. SMA 200 se mișcă greu și arată trendul de fond. Când +cele scurte sunt la extrem, iar SMA 200 e încă 50/50, a fost o corecție +bruscă într-o piață care, pe fond, nu s-a stricat.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ce vezi (% companii SUB medie)Ce înseamnăCe faci
~70%+ sub SMA 10 și 20, pe S&P, NASDAQ și Russell simultanvânzare generalizată, piață oversoldcauți bottom: verifici McClellan, ATR, VIX
peste 50% sub SMA 50corecția a trecut de zgomotbottom posibil, dar ai nevoie de trigger pe indice
SMA 200 încă ~50/50nu e capitularebottom-ul poate fi temporar: retest al vârfurilor, apoi încă un picior
un indice (ex. Dow) are mai puține companii sub mediie cel mai puțin oversoldcel mai puțin loc de revenire; nu e primul pe care îl cumperi
60-70% companii peste mediisemn de întrebarenu mai adaugi long-uri noi agresiv (Q&A 18.08.2025)
70-80% peste mediisuper overboughtpregătești protecție / short-uri
+

Trigger NU: majoritate sub SMA 10/20, dar doar pe un indice. Bottom-ul +de breadth cere toți indicii mari în același timp.

+
+

2. McClellan Oscillator

+

McClellan măsoară câte acțiuni avansează față de câte scad, netezit. Indicele +ponderat poate urca pe 7 companii; McClellan nu poate. De aceea el e +detectorul de „urcare pe puțini".

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Ce face McClellanCe înseamnăCe faci
oversold masiv + A/D prăbușit, indice în downtrendvânzare pe toată piața; bottom temporar posibil (02.09)cauți trigger pe indice (double bottom, retest locul crimei); aștepți ATR în spike
pleacă din oversold, trece de zero „ca prin brânză"cumpărarea s-a lărgitlong-urile continuă; bonus pentru sfântul buy doji (04.09)
pleacă din oversold, zero reject sub linia de zerorevenirea a fost doar pe câteva companiiinvalidare: nu adaugi long-uri; risc de continuare a corecției
ajunge în overboughtparticipare la maxim, puțini cumpărători noipregătești short: aștepți un pattern de top (04.09)
indicele face vârf nou, McClellan face vârf mai josdivergență beartop posibil; verifici RSP (secțiunea 4)
preț la pivotul monthly, McClellan peste zerobreakout credibil (10.09)iei breakout-ul
preț la pivotul monthly, McClellan sub zerobreakout nesusținutrisc de bear flag, cade înapoi în suport
+
+

„Dacă ne închidem deasupra pivotului și McLennal oscillator deasupra linei +de zero, posibil o să continuă urcarea. Altfel, probabil va fi un bearflake"

+
+

Trigger NU pentru bottom: sell doji pe indice fără ca McClellan să +înceapă să urce: „aș vrea să văd când începe să urce" (02.09). Oversold +singur poate rămâne oversold.

+
+

3. Advance/decline

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
A/DIndiceleCitire
la maxim nouvârf nouurcare largă, sănătoasă
la maxim, dar McClellan în divergențăvârf nouurcarea încetinește sub suprafață (17.08): S&P, NASDAQ 100 și Russell toate în divergență, Dow în zero reject
în scăderedouble top cu al doilea vârf mai sus + evening startop pe indice (19.08, Dow Jones)
prăbușit + McClellan oversoldlower lowsbottom temporar (02.09)
+

A/D e cumulat, deci arată trendul participării. McClellan arată viteza +schimbării ei. Le citești împreună.

+
+

4. RSP: verificarea de top

+

Indicele ponderat (S&P 500) dă unei companii de 3.000 de miliarde o pondere +de sute de ori mai mare decât uneia de 15 miliarde. Câteva mega-cap-uri pot +face vârful nou singure. RSP pune toate companiile la aceeași pondere: dacă +RSP nu face vârf nou, compania medie nu urcă.

+
+

„McLaren oscillator […] mi-a rată mie că de fapt magnificii duc piața, +iar restul de companii din S&P nu prea o fac, de asta e bine să vă uitați +de la RSP, care este S&P-ul equal weight" (17.08)

+
+

Indicele: vârf nou, apoi evening star

+ +

+ Exemplu construit (fără ticker) — daily, indicele (ponderat) + + SL 57.50 + + vârf 1 56.30 + + intrare short 55.90 + + TP 52.70 = 2R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vârf 1 + vârf 2 mai sus + evening star + TP + Indicele face vârf nou. Singur, arată a continuare. Verificarea e pe RSP, dedesubt. +

+ + +
    +
  • Vârf 1: 56.30. Pullback, apoi urcare la vârf 2: 57.40, mai sus. + Privit singur, e uptrend.
  • +
  • La vârful 2: bară bull mare, shooting star (corp mic, codiță sus până + la 57.40), apoi bară bear mare = evening star.
  • +
  • Intrare short 55.90: close-ul barei bear, sub low-ul stelei (56.60).
  • +
  • SL 57.50, deasupra vârfului 2. Dacă prețul trece de acolo, vârful nou + e real.
  • +
  • TP 52.70 = 2R (risc 1.60). Atins după 9 bare.
  • +
+

RSP, aceleași zile: vârful 2 mai jos

+ +

+ Exemplu construit (fără ticker) — daily, varianta equal weight (tip RSP) + + vârf 1 43.95 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vârf 1 + vârf 2 mai jos 43.60 + Aceleași zile. Compania medie nu mai face vârf nou: urcarea o duc câteva mega-cap-uri. +

+ + +

Vârful 1 al RSP: 43.95. În zilele în care indicele face 57.40, RSP se +oprește la 43.60, cu 0.8% sub vârful lui. Asta e confirmarea pe care o +cauți înainte de short-ul de mai sus.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Top — DATop — NU
indicele: vârf nou (ascending wedge / double top cu vârful 2 mai sus) la rezistența monthlyRSP face și el vârf nou
RSP nu confirmă vârfulMcClellan confirmă prețul (fără divergență)
McClellan în divergență bear, apoi sub zeroATR fără spike: încă nu e top confirmat, aștepți
pattern de lumânări (shooting star / evening star), apoi sell momentum
+

Ascending wedge-ul e bearish prin natura lui. Double top-ul cu al doilea vârf +mai sus e oglinda double bottom-ului cu al doilea picior mai jos: ia +stop-urile short-urilor de deasupra vârfului 1, apoi cade.

+
+

5. VIX, citit invers

+

Pe VIX aplici aceleași pattern-uri (suport, rezistență, double bottom, higher +low), dar sensul e opus: VIX urcă atunci când piața cade, pentru că se +cumpără protecție (put-uri). Un VIX care nu mai poate urca e o piață care nu +mai are de ce să se teamă.

+
+

„Vix-ul, dacă vă uitați pe Vix Futures, double button cu ultimul picior +mai jos și posibil higher low de aici. Vedeți că momentan a fost rejectat +în zona asta de resistance." (21.08)

+
+

DA: VIX respins în fostul suport, lower low

+ +

+ Exemplu construit (fără ticker) — daily, VIX (citit invers) + + fost suport = rezistență 19.20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + spike 28.4 + suport + reject + lower low + VIX respins sub fostul suport și lower low: frica scade, favorabil long-urilor pe indice. +

+ + +
    +
  • Spike la 28.40, apoi VIX coboară și se sprijină pe 19.20 (bara 11-18).
  • +
  • Sparge 19.20 în jos: frica iese din piață. Low-ul de după spargere: 16.10.
  • +
  • Reject: revine exact la 19.20 (fostul suport, acum rezistență) și + închide la 18.50, sub nivel. Bara următoare închide mai jos.
  • +
  • Lower low sub 16.10 (15.90), apoi VIX coboară la 14.30.
  • +
+

Indicele, în aceleași zile

+ +

+ Exemplu construit (fără ticker) — daily, indicele, aceeași perioadă + + TP 57.30 = 2R + + intrare 54.30 + + SL 52.80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bottom (VIX în spike) + HL = reject pe VIX + TP + Bara 23: VIX respins la 19.20, indicele face higher low. Intrarea vine pe close-ul următor. +

+ + +
    +
  • Bottom 48.90 în aceeași zi cu spike-ul VIX.
  • +
  • În ziua rejectului pe VIX, indicele face higher low la 52.90.
  • +
  • Intrare 54.30: close-ul următor, peste high-ul barei de higher low.
  • +
  • SL 52.80, sub higher low. Dacă indicele sparge 52.90, VIX nu a fost + respins de fapt.
  • +
  • TP 57.30 = 2R (risc 1.50), atins după 8 bare.
  • +
+

NU: higher low pe VIX

+ +

+ Exemplu construit (fără ticker) — daily, VIX (citit invers) + + fost suport 19.20 + + low anterior 16.10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + reject? + higher low + Același început, dar VIX face higher low și închide peste 19.20: risc de nouă cădere pe indice. +

+ + +

Același început, același retest la 19.20. Dar VIX nu mai face lower low: +higher low la 16.90 (peste 16.10), apoi închide la 19.80, peste +fostul suport, și urcă la 25.20. Pe indice asta înseamnă o nouă cădere: +un long luat la higher low-ul indicelui ar fi fost scos pe stop.

+ + + + + + + + + + + + + + + + + + + + + +
VIX — DA (bine pentru long pe piață)VIX — NU
respins în rezistență (fost suport)face higher low
face lower low după rejectînchide înapoi peste fostul suport
double bottom pe indice în aceleași zilespike nou, fără lower low înainte
+
+

6. ATR: spike vs. cădere liberă

+

ATR măsoară cât se mișcă o bară. La un bottom adevărat ultimii +vânzători vând în panică, cu orice preț, iar barele devin foarte mari: +ATR sare. După ce au vândut, nu mai are cine să vândă. Când prețul coboară +cu bare mici și din ce în ce mai mici, nimeni nu capitulează. Vânzarea e +ordonată și poate continua.

+
+

„ATL-ul este în cădere liberă, pentru un top sau un bottom, cel puțin noi +urmărim un bottom, aș vrea să văd ATL-ul în spike." (19.08)

+

„Văd că ATR-ul începe să intră în spike, ceea ce este bine. […] 105% a +urcat ATR-ul peste 100%." (21.08)

+
+

Pragul de „peste 100%" e al ATR%-ului din platforma lui. Transcrierea nu +spune cum e calculat, deci diagramele nu îl reproduc. Panoul de jos arată +true range-ul fiecărei bare (cât a mișcat bara, cu gap cu tot), iar +spike-ul e o bară de peste 2x media.

+

DA: spike de range în locul crimei

+ +

+ Exemplu construit (fără ticker) — daily, indicele + + TP2 60.80 = 2R + + TP1 58.40 = 1/2 până la vârf (0.9R) + + intrare 56.60 + + locul crimei 54.60 + + SL 54.50 + SMA-20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true range pe bară (volatilitate) + swing high + vârf 62.20 + spike de range + trigger + Range-ul barelor sare la peste 2x normalul exact când prețul atinge locul crimei. +

+ + +
    +
  • Locul crimei 54.60: swing high-ul din bara 9, spart la urcare.
  • +
  • Vârf la 62.20, apoi corecție. Primele bare sunt normale, apoi două bare + cu range de 2.80, față de 1.15 normal (2.4x). Asta e spike-ul.
  • +
  • Bara a treia e un hammer cu low exact pe 54.60 și close deasupra.
  • +
  • Intrare 56.60: close-ul peste high-ul hammer-ului.
  • +
  • SL 54.50, sub locul crimei. Sub el, fostul vârf nu mai e suport.
  • +
  • TP1 58.40 = jumătatea distanței dintre low (54.60) și vârf (62.20). + Regula lui pentru bounce: „contezi realist pe jumătate" (21.08). E doar + 0.9R, deci acolo iei jumătate din poziție și muți stop-ul pe + break-even. Atins după 4 bare.
  • +
  • TP2 60.80 = 2R (risc 2.10), pentru restul. Atins după 8 bare.
  • +
+

Din sesiune, bounce-ul bun are toate trei: ATR% peste 100 + McClellan +oversold + locul crimei / gap închis / SMA 20.

+

NU: ATR în cădere liberă

+ +

+ Exemplu construit (fără ticker) — daily, indicele + + locul crimei 54.80 + SMA-20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true range pe bară (volatilitate) + swing high + atins, fără spike + lower lows + Range-ul se micșorează pe cădere: nimeni nu capitulează, deci încă nu e bottom. +

+ + +

Aceeași structură: swing high la 54.80, urcare, corecție. Dar corecția +vine cu range mediu de 0.49 pe bară, față de 1.26 pe urcare, fără +nicio bară mare. Prețul atinge locul crimei și trece prin el ca prin nimic, +până la 53.00. Nu există bara de capitulare, deci nu există bounce. Un long +luat „pentru că e locul crimei" ar fi fost sub stop.

+ + + + + + + + + + + + + + + + + + + + + +
Bottom — DABottom — NU
ATR în spike (bare de 2x+, ATR% peste 100)ATR în cădere liberă, bare tot mai mici
McClellan oversoldMcClellan reject sub zero fără oversold: corecția poate continua
prețul în locul crimei / gap închis / SMA 20niciun nivel atins, sau atins fără reacție
+

La top e invers (10.09): volatilitatea scăzută înainte de vârf e normală. +Te aștepți ca ATR să crească la noul all-time high. Top-ul confirmat vine cu +ATR în spike, nu cu el adormit.

+
+

7. Sentiment: AAII și Fear & Greed

+

Ideea e Buffett: cumperi când ceilalți se tem. Mecanismul: cine e bearish în +sondaj a vândut deja sau stă pe cash. Vânzătorii viitori s-au terminat, iar +cash-ul lor e cumpărare viitoare. Invers la top.

+
+

„cumpără când ceilal se cacă pe ei de frică și vin de când ceilal sunt la +cum." (02.09)

+
+

AAII: pragul de 15-25%

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Distanța bullish − bearishCitireCe faci
bearish peste bullish cu 15-25% (ex. ~50% bearish vs. ~30% bullish)opinie contrară validă: bottomcauți long-uri, confirmi pe McClellan / breadth
bullish peste bearish cu 15-25%opinie contrară: topprudență pe long-uri, pregătești short
bullish peste ~40%zonă de top (Q&A 18.08.2025)nu adaugi long-uri noi
diferență de câteva procente (ex. ~4 puncte, 21.08)„prea mică distanța"nu e semnal; treci la McClellan / market picture
neutri mulți (~27%), tabere apropiateindecizie (19.08)nu e semnal
+
+

„Ideal ar fi să fie distanțe de 20% între cele două tabere, nu suntem în +opinie contrară" (19.08)

+
+

Fear & Greed

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CadranCitireCe faci
frică extremăvarianta mai puternică a semnalului de cumpărarecauți bottom-ul pe indici, cu trigger
fricăzonă de cumpărat, dacă AAII confirmă (bearish > bullish)la fel, cu poziție normală
neutrufără informațiecontextul îl dau breadth-ul și McClellan
lăcomie / lăcomie extremăparticipanții sunt deja investițiprudență pe long-uri noi
+

Trigger NU (02.09): sentimentul singur nu e intrare. Frica poate deveni +frică extremă încă două săptămâni. Intri pe sistem.

+
+

8. COT: poziționarea la bottom

+

Marii comercianți (producători, utilizatori reali) își acoperă riscul și +cumpără de obicei la prețuri mici. Marii speculatori (fonduri) urmăresc +trendul și sunt cel mai short exact la fund.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Poziționare pe indiceCitireCe faci
marii speculatori net short + marii comercianți urcă spre zerobottom în formare (24.08)aștepți trigger de preț: buy doji la bottom, eventual retest ~1/2
poziționarea arată bottom, dar pe preț nu e triggerprea devremenu intri; COT poate anunța bottom-ul cu 3-5 săptămâni înainte (Q&A 25.08.2026)
comercianții trec peste zeropoziționare confirmatăținta se poate lărga (Q&A 18.08.2025, exemplul pe euro)
+
+

„marii speculatori au fost net short în zona asta în timp ce marii +comercianți se apropiau de linea de zero în acest bottom, unde a fost și un +buy-doge în formare." (24.08)

+
+

Retestul de ~1/2 al barei de buy doji, care ia lichiditatea de sub ea, poate +veni înainte de urcare. Tranșele de la documentul +01 cumpără exact acel retest.

+
+

9. Bond-urile ca semnal inter-market

+

Acțiunile sensibile la dobândă (constructori de case, ca D.R. Horton) +depind de costul creditului: dobânzi mici înseamnă ipoteci mai ieftine și +mai multe case vândute. Prețul bond-urilor merge invers față de randament. +Un bottom pe TLT e deci piața care anunță că randamentele au atins +vârful, înainte ca asta să apară în acțiuni.

+
+

„în condițiile în care bond-urile […] vor face un spike low, să puteam să +vedem DHI-ul că face un break-out." (19.08)

+
+

Bond-urile: hammer în suportul quarterly

+ +

+ Exemplu construit (fără ticker) — daily, ETF de bond-uri pe termen lung + + suport quarterly 41.80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + downtrend + picior 1 + hammer, picior 2 mai jos + Spike low sub picior 1, hammer în suportul quarterly: bond-urile își pot face bottom-ul. +

+ + +
    +
  • Downtrend, picior 1 la 42.80, revenire, apoi cădere nouă.
  • +
  • Picior 2 mai jos: spike low la 41.80, exact în suportul quarterly, + cu hammer (codiță de peste 2x corpul) și close la 42.50. Cine a pus stop + sub 42.80 a fost scos, apoi prețul revine.
  • +
  • Bara următoare închide la 43.00, peste high-ul hammer-ului: bottom-ul + pe bond-uri are trigger.
  • +
+

Pe TLT nu iei trade-ul în exemplul ăsta. E semnalul pentru acțiune.

+

Acțiunea sensibilă la dobândă: breakout după bond-uri

+ +

+ Exemplu construit (fără ticker) — daily, acțiune sensibilă la dobândă + + TP 59.10 = 2R + + intrare 55.70 + + rezistență 55.00 + + SL 54.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + low + HL + HL + breakout + TP + Aceleași zile ca bond-urile: ascending triangle, breakout la 3 zile după trigger-ul de pe bond-uri. +

+ + +
    +
  • Ascending triangle: rezistență plată la 55.00 (atinsă de 4+ ori) și + low-uri care urcă: 52.90 → 53.40 → 53.80 → 54.10. Fiecare cumpărător + vine mai sus decât precedentul.
  • +
  • Cu 3 zile după trigger-ul de pe bond-uri: breakout, close 55.70. Asta + e intrarea.
  • +
  • SL 54.00, sub ultimul higher low (54.10). Sub el, triunghiul s-a + stricat.
  • +
  • TP 59.10 = 2R (risc 1.70), atins după 10 bare.
  • +
+ + + + + + + + + + + + + + + + + + + + + +
Inter-market — DAInter-market — NU
spike low / hammer pe bond futures sau TLT, în suport quarterlybreakdown sub pivot pe acțiune, cu volum care trece negativ
double bottom pe TLT cu ultimul picior mai josbond-urile fac lower low nou
pe acțiune: compresie, ascending triangle, triple bottom cu ultimul picior mai sus, buy hammeracțiunea nu are setup propriu: bond-urile singure nu sunt intrare
+
+

10. Calendar macro

+

Rapoartele mută toată piața în câteva minute. Stop-ul pus înainte de raport +se execută la prețul la care se găsește contrapartidă, nu la cel scris, iar +spread-ul se lărgește. De aici regula: nu deschizi înainte, citești +reacția după.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RaportCând / ce eCe contează (din sesiuni)
CPIinflația de consum, lunarcel mai urmărit de Fed pentru dobândă; zi de volatilitate pe indici, dolar, bond-uri (Q&A 11.06.2025)
PPIinflația la producător, lunar, în jurul CPIanticipează CPI; mai puțină reacție decât CPI
ADPmiercuri; raportul privat de locuri de muncănu e NFP. Nu le confunda (02.09)
NFPvineri, 15:30 ora României; raportul oficial (Bureau of Labor Statistics)„face ravagii ca și volatilitate" (04.09); piața așteaptă toată săptămâna
JOLTSjob openingsîn scădere = piața muncii slăbește, poate frâna creșterile de dobândă (02.09)
ISMindici de activitateISM pe servicii contează (economia SUA e ~70% servicii); ISM pe industrie contează puțin (02.09, 03.09)
Fed / FOMCdecizia de dobândă, apoi minutaminuta = volatilitate în ziua publicării (19.08). Probabilitățile pot fi „fake" și deja în preț (03.09). Fed nu urcă ușor dobânda înainte de midterm elections (10.09)
Jackson Holesimpozionul Fed de la final de augustpoate muta indicii câteva procente într-o zi (17.08, cifra exactă din memorie, incertă)
Core PCE, PIB, consumer confidence, șomaj săptămânalîn săptămâna Jackson Holede verificat (25.08). La PIB, prima din cele 3 estimări mișcă piața (17.08)
+

CPI — DA: breakout din compresie, confirmat a doua zi

+ +

+ Exemplu construit (fără ticker) — daily, indicele + + TP 60.30 = 2R + + intrare 56.90 + + range high 55.40 + + SL 55.20 + + range low 54.40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + compresie înainte de CPI + CPI + confirmare + Nu intri înainte de raport. Intri după ce ziua de după CPI rămâne deasupra range-ului. +

+ + +
    +
  • Uptrend, apoi 11 zile de compresie între 54.40 și 55.40, cu volum în + scădere. Piața așteaptă raportul.
  • +
  • Ziua CPI: close 56.40, peste range, cu volum 96 față de media + compresiei de 31 (3x).
  • +
  • Nu intri în bara de CPI. A doua zi low-ul rămâne deasupra lui 55.40 + și close-ul e mai sus: intrare 56.90.
  • +
  • SL 55.20, sub range high. Înapoi în range = breakout-ul a eșuat + (diagrama NU, mai jos).
  • +
  • TP 60.30 = 2R (risc 1.70), atins după 9 bare.
  • +
+

CPI — NU: spike peste range, close înapoi înăuntru

+ +

+ Exemplu construit (fără ticker) — daily, indicele + + range high 55.40 + + range low 54.40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + compresie înainte de CPI + CPI: spike 56.50 + close sub range + Același range. Spike-ul de pe CPI se închide înapoi înăuntru: cine a cumpărat la 56 e prins. +

+ + +

Aceeași compresie. Pe CPI prețul sare la 56.50, dar închide la 55.10, +înapoi în range, cu o codiță lungă. Cine a cumpărat în minutele raportului, +la 56, e prins. A doua zi close la 54.20, sub range low, apoi 50.90. +Regula de a aștepta close-ul, și ziua de după, te ține afară.

+ + + + + + + + + + + + + + + + + + + + + +
După raport — DADupă raport — NU
close-ul zilei de raport în afara range-ului, cu volumcodiță peste range, close înăuntru
ziua următoare rămâne în afara range-uluiziua următoare închide în partea opusă a range-ului
contextul e de acord (McClellan peste zero, VIX în scădere)intrare luată în minutele raportului
+
+

Checklist: context înainte de trigger

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VerificareBottom (long)Top (short / prudență)
breadth~70%+ sub SMA 10/20, >50% sub SMA 50, pe toți indicii70-80% peste medii
McClellanoversold, apoi trece de zerooverbought / divergență bear / zero reject
advance/declineprăbușitîn scădere cu indicele la vârf
RSP—nu confirmă vârful indicelui
VIXrespins în rezistență, lower lowhigher low, înapoi peste fostul suport
ATRîn spikecrește la noul vârf
AAIIbearish > bullish cu 15-25%bullish > bearish cu 15-25%, bullish > 40%
Fear & Greedfrică / frică extremălăcomie / lăcomie extremă
COTspeculatori net short, comercianți spre zero—
macrofără raport major în 1-2 zile, sau raport deja trecutla fel
+

Niciunul singur nu e suficient. Cu cât mai multe rânduri sunt de aceeași +parte, cu atât poziția poate fi mai mare.

+
+

Gotchas

+
    +
  • Contextul nu e trigger. Frica extremă, McClellan oversold, VIX la + 28.40 — toate pot deveni mai extreme încă o săptămână. Intri pe preț: + în diagrama VIX, intrarea a venit abia la higher low-ul indicelui (54.30).
  • +
  • Nu cumpăra locul crimei fără spike de ATR. Diagrama NU de la ATR: + bare de 0.49 față de 1.26, prețul a trecut prin 54.80 fără reacție.
  • +
  • Un vârf nou pe indice nu e un vârf nou pe piață. Verifici RSP: în + exemplu indicele a făcut 57.40, RSP a rămas cu 0.8% sub vârful lui.
  • +
  • Nu intra în minutele de CPI / NFP. Spike-ul de la 56.50 s-a închis la + 55.10. Și nu confunda ADP (miercuri) cu NFP (vineri).
  • +
  • Stop-ul pe break-even te scoate des în volatilitate mare (02.09). + În săptămânile cu rapoarte, fie accepți ieșirile la zero și cauți + reintrare, fie lași stop-ul la structură, cu poziție mai mică.
  • +
+
+

Surse

+

Din analiza zilnică (recoltele din harvest/):

+
    +
  • 17.08.2026 — top purtat de mega-cap-uri: A/D la maxim, McClellan în + divergență, RSP; Jackson Hole; PIB-ul cu 3 estimări; MBT-10 în căderile + generale.
  • +
  • 19.08.2026 — bond-urile / TLT și D.R. Horton; top pe Dow cu double top, + evening star și McClellan; ATR în cădere liberă; AAII cu neutri mulți; + minuta FOMC.
  • +
  • 21.08.2026 — AAII cu pragul de 15-25%; ATR% în spike peste 100%; VIX + futures citit invers; McClellan sub zero cu MBT-10 short pe indice; ținta + bounce-ului la jumătate.
  • +
  • 24.08.2026 — COT la bottom.
  • +
  • 25.08.2026 — calendarul din săptămâna Jackson Hole.
  • +
  • 02.09.2026 — breadth pe SMA 10/20/50/200; bottom temporar cu McClellan + oversold și A/D prăbușit; AAII + Fear & Greed; ADP vs. NFP; ISM; JOLTS; + stop-ul pe break-even.
  • +
  • 03.09.2026 — ISM pe servicii; probabilitățile de dobândă „fake".
  • +
  • 04.09.2026 — McClellan: zero reject vs. overbought; NFP.
  • +
  • 10.09.2026 — breakout la pivotul monthly confirmat de McClellan; ATR + scăzut înainte de vârf; Fed înainte de midterm.
  • +
+

Din Q&A: 18.08.2025 (market picture, AAII +40%, COT), 25.08.2026 (COT, AAII), +11.06.2025 (ziua CPI), +28.07.2026 +(bond-urile ca indicator avansat), 08.07.2025 +(VIX / SPY). Documente vecine: 01 — buy doji, +04 — pivoți, 05 — volum.

+
+

Ce e completare a mea: toate prețurile și diagramele sunt construite (în +transcrieri cifrele de pe ecran sunt aproximative). Panoul de true range e +alegerea mea în locul ATR%-ului din platforma lui, al cărui calcul nu apare +în transcrieri; pragul „bară de 2x media" e al meu. Intrările, stop-urile, +țintele de 2R și împărțirea TP1/TP2 la bounce sunt aplicarea mea a regulilor +din curs. CPI și PPI nu sunt discutate în recoltele acestor sesiuni: +descrierea lor, regula „intri a doua zi după raport" și diagramele CPI +DA/NU sunt ale mele. La fel: explicațiile de mecanism (de ce VIX urcă la +căderi, de ce capitularea mărește barele, de ce speculatorii sunt short la +fund, legătura dobândă–constructori de case, stop-urile executate prost la +raport). Pragurile (15-25% la AAII, 74% / 56% / 50-50 la breadth, 105% la +ATR, NFP la 15:30), trigger-ele DA/NU și citatele vin din sesiuni; cele +marcate cu link vin din Q&A.

+ + diff --git a/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.md b/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.md new file mode 100644 index 0000000..c542aec --- /dev/null +++ b/summaries/08_ANALIZA_ZILNICA/07_context_de_piata.md @@ -0,0 +1,1680 @@ +# Analiză zilnică / #7 — Context de piață: breadth, sentiment, volatilitate, macro + +## TLDR + +- Înainte de orice idee pe simbol, verifici **piața**: cât din ea urcă de + fapt (breadth, McClellan, advance/decline), cât de speriată e (AAII, Fear & + Greed, VIX), dacă volatilitatea a explodat (ATR) și ce raport macro vine. +- **Bottom** = majoritatea companiilor sub SMA 10/20 și peste 50% sub SMA 50, + McClellan oversold, advance/decline prăbușit, **ATR în spike**. Cât timp + ATR e „în cădere liberă", nu e bottom. +- **Top** = indicele face vârf nou, dar McClellan face divergență și **RSP** + (equal weight) nu confirmă: piața o duc câteva mega-cap-uri. +- **VIX îl citești invers**: VIX respins sub fostul suport și lower low = + bine pentru long; higher low pe VIX = risc de nouă cădere. +- **AAII** e contrarian doar la **15-25%** distanță între bullish și bearish. +- Pe **CPI, NFP, Fed** nu intri înainte de raport. Intri pe ce rămâne după. +- Contextul nu e trigger. Îți spune **dacă ai voie** să iei trigger-ul și cât + de agresiv. + +--- + +## De ce urmărești contextul + +Un trigger bun pe o acțiune (buy doji, MBT-10) are aceeași formă într-o +piață care urcă și într-una care se prăbușește. Diferența e cine mai +cumpără după tine. Când 74% din companii sunt sub SMA 10, fondurile vând +tot, fără să aleagă, iar setup-ul tău cade împreună cu restul. Din +17.08: + +> „când a picat toată piața și aici am avut rejectorul ăstea masive, dacă +> înținem BT-10, ați fi scos dacă ați fi intrat" + +Ce decizie te ajută să iei: + +- **dacă intri** — un long pe acțiune cu McClellan în zero reject și VIX în + higher low e un long împotriva pieței; +- **cât de mare** — în volatilitate mare (săptămâna NFP, Jackson Hole) + poziția e mai mică, iar stop-ul pe break-even te scoate des; +- **când** — nu deschizi înainte de CPI / NFP / Fed. Aștepți ziua raportului + și vezi unde se închide; +- **ce direcție** — la top cauți short-uri, la bottom cauți long-uri, nu + invers. + +--- + +## Termenii, o singură dată + +| Termen | Ce înseamnă aici | +|---|---| +| **market picture** | panoul lui cu procentul de companii sub/peste SMA 10/20/50/200, pe fiecare indice, plus McClellan și COT | +| **breadth** | cât de largă e mișcarea: câte companii participă, nu doar cât a mișcat indicele | +| **McClellan Oscillator** | oscilator de breadth calculat din avansuri minus declinuri; are linie de zero, zonă de oversold și de overbought | +| **zero reject** | McClellan pleacă din oversold, urcă la linia de zero și e respins sub ea | +| **advance/decline (A/D)** | linia cumulată: acțiuni în urcare minus acțiuni în scădere, zi de zi | +| **RSP** | ETF-ul S&P 500 **equal weight**: fiecare companie are aceeași pondere | +| **Magnificii** | mega-cap-urile (Magnificent 7) care pot duce singure indicele ponderat | +| **AAII Survey** | sondaj săptămânal al investitorilor individuali: bullish / bearish / neutru | +| **Fear & Greed** | index de sentiment pe cadrane: frică extremă, frică, neutru, lăcomie, lăcomie extremă | +| **VIX** | volatilitatea implicită pe S&P 500. Crește când piața cade (se cumpără protecție) | +| **ATR / ATR%** | Average True Range: cât se mișcă, în medie, o bară. ATR% e varianta procentuală din platforma lui | +| **COT** | Commitment of Traders: poziționarea marilor speculatori și a marilor comercianți | +| **TLT** | ETF pe bond-urile americane pe termen lung. Prețul urcă atunci când randamentul scade | +| **locul crimei** | un fost swing high spart, care la retest devine suport | + +--- + +## Ce se desenează și ce rămâne tabel + +`svg_candles` desenează **preț**. Unii indicatori de aici nu sunt preț: + +| Indicator | Cum e în document | De ce | +|---|---|---| +| breadth pe SMA 10/20/50/200 | **tabel** | e un procent din companii, o singură cifră pe zi per medie, nu o serie OHLC | +| McClellan | **tabel** | oscilator în jurul lui zero; o diagramă de candele l-ar falsifica | +| advance/decline | **tabel** | linie cumulată, nu are open/high/low/close | +| AAII, Fear & Greed | **tabel** | sondaje / scor 0-100, săptămânal sau zilnic | +| COT | **tabel** | poziții nete raportate săptămânal | +| VIX | **diagramă** (3) | are candele, se citește cu aceleași pattern-uri | +| RSP vs. indice | **diagramă** (2) | două serii de preț în aceleași zile | +| ATR | **diagramă** (2) | se vede în range-ul barelor; panoul de jos arată true range-ul pe bară | +| TLT + acțiune sensibilă la dobândă | **diagramă** (2) | preț | +| CPI / macro | **diagramă** (2) | reacția prețului la raport | + +--- + +## 1. Breadth pe SMA 10/20/50/200 + +Primul lucru din analiza zilnică (02.09), înainte de simboluri: ce procent +din companiile fiecărui indice (S&P, NASDAQ, Russell, Dow) e **sub** SMA 10, +20, 50 și 200. + +> „suntem 74% total companii din state sub SMA 10 […] 56% sub SMA 50 și +> vedeți că la SMA 200 este 50-50" + +De ce funcționează: SMA 10 și 20 se schimbă repede, deci arată vânzarea din +ultimele 2-4 săptămâni. SMA 200 se mișcă greu și arată trendul de fond. Când +cele scurte sunt la extrem, iar SMA 200 e încă 50/50, a fost o corecție +bruscă într-o piață care, pe fond, nu s-a stricat. + +| Ce vezi (% companii SUB medie) | Ce înseamnă | Ce faci | +|---|---|---| +| ~70%+ sub SMA 10 și 20, **pe S&P, NASDAQ și Russell simultan** | vânzare generalizată, piață oversold | cauți bottom: verifici McClellan, ATR, VIX | +| peste 50% sub SMA 50 | corecția a trecut de zgomot | bottom posibil, dar ai nevoie de trigger pe indice | +| SMA 200 încă ~50/50 | nu e capitulare | bottom-ul poate fi **temporar**: retest al vârfurilor, apoi încă un picior | +| un indice (ex. Dow) are mai puține companii sub medii | e cel mai puțin oversold | cel mai puțin loc de revenire; nu e primul pe care îl cumperi | +| 60-70% companii **peste** medii | semn de întrebare | nu mai adaugi long-uri noi agresiv ([Q&A 18.08.2025](../09_QA/21_2025-08-18.html#market-picture-procentul-de-actiuni-peste-mediile-mobile)) | +| 70-80% **peste** medii | super overbought | pregătești protecție / short-uri | + +**Trigger NU:** majoritate sub SMA 10/20, dar doar pe un indice. Bottom-ul +de breadth cere toți indicii mari în același timp. + +--- + +## 2. McClellan Oscillator + +McClellan măsoară câte acțiuni avansează față de câte scad, netezit. Indicele +ponderat poate urca pe 7 companii; McClellan nu poate. De aceea el e +detectorul de „urcare pe puțini". + +| Ce face McClellan | Ce înseamnă | Ce faci | +|---|---|---| +| **oversold masiv** + A/D prăbușit, indice în downtrend | vânzare pe toată piața; bottom temporar posibil (02.09) | cauți trigger pe indice (double bottom, retest locul crimei); aștepți ATR în spike | +| pleacă din oversold, **trece de zero** „ca prin brânză" | cumpărarea s-a lărgit | long-urile continuă; bonus pentru sfântul buy doji (04.09) | +| pleacă din oversold, **zero reject** sub linia de zero | revenirea a fost doar pe câteva companii | invalidare: nu adaugi long-uri; risc de continuare a corecției | +| ajunge în **overbought** | participare la maxim, puțini cumpărători noi | pregătești short: aștepți un pattern de top (04.09) | +| indicele face vârf nou, McClellan face **vârf mai jos** | divergență bear | top posibil; verifici RSP (secțiunea 4) | +| preț la **pivotul monthly**, McClellan **peste zero** | breakout credibil (10.09) | iei breakout-ul | +| preț la pivotul monthly, McClellan **sub zero** | breakout nesusținut | risc de bear flag, cade înapoi în suport | + +> „Dacă ne închidem deasupra pivotului și McLennal oscillator deasupra linei +> de zero, posibil o să continuă urcarea. Altfel, probabil va fi un bearflake" + +**Trigger NU pentru bottom:** sell doji pe indice fără ca McClellan să +înceapă să urce: „aș vrea să văd când începe să urce" (02.09). Oversold +singur poate rămâne oversold. + +--- + +## 3. Advance/decline + +| A/D | Indicele | Citire | +|---|---|---| +| la maxim nou | vârf nou | urcare largă, sănătoasă | +| la maxim, dar **McClellan în divergență** | vârf nou | urcarea încetinește sub suprafață (17.08): S&P, NASDAQ 100 și Russell toate în divergență, Dow în zero reject | +| **în scădere** | double top cu al doilea vârf mai sus + evening star | top pe indice (19.08, Dow Jones) | +| **prăbușit** + McClellan oversold | lower lows | bottom temporar (02.09) | + +A/D e cumulat, deci arată trendul participării. McClellan arată **viteza** +schimbării ei. Le citești împreună. + +--- + +## 4. RSP: verificarea de top + +Indicele ponderat (S&P 500) dă unei companii de 3.000 de miliarde o pondere +de sute de ori mai mare decât uneia de 15 miliarde. Câteva mega-cap-uri pot +face vârful nou singure. RSP pune toate companiile la aceeași pondere: dacă +RSP nu face vârf nou, **compania medie nu urcă**. + +> „McLaren oscillator […] mi-a rată mie că de fapt magnificii duc piața, +> iar restul de companii din S&P nu prea o fac, de asta e bine să vă uitați +> de la RSP, care este S&P-ul equal weight" (17.08) + +### Indicele: vârf nou, apoi evening star + + + + Exemplu construit (fără ticker) — daily, indicele (ponderat) + + SL 57.50 + + vârf 1 56.30 + + intrare short 55.90 + + TP 52.70 = 2R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vârf 1 + vârf 2 mai sus + evening star + TP + Indicele face vârf nou. Singur, arată a continuare. Verificarea e pe RSP, dedesubt. + + + +- **Vârf 1: 56.30.** Pullback, apoi urcare la **vârf 2: 57.40**, mai sus. + Privit singur, e uptrend. +- La vârful 2: bară bull mare, **shooting star** (corp mic, codiță sus până + la 57.40), apoi bară bear mare = **evening star**. +- **Intrare short 55.90**: close-ul barei bear, sub low-ul stelei (56.60). +- **SL 57.50**, deasupra vârfului 2. Dacă prețul trece de acolo, vârful nou + e real. +- **TP 52.70 = 2R** (risc 1.60). Atins după 9 bare. + +### RSP, aceleași zile: vârful 2 mai jos + + + + Exemplu construit (fără ticker) — daily, varianta equal weight (tip RSP) + + vârf 1 43.95 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + vârf 1 + vârf 2 mai jos 43.60 + Aceleași zile. Compania medie nu mai face vârf nou: urcarea o duc câteva mega-cap-uri. + + + +Vârful 1 al RSP: **43.95**. În zilele în care indicele face 57.40, RSP se +oprește la **43.60**, cu 0.8% sub vârful lui. Asta e confirmarea pe care o +cauți înainte de short-ul de mai sus. + +| Top — DA | Top — NU | +|---|---| +| indicele: vârf nou (ascending wedge / double top cu vârful 2 mai sus) la rezistența monthly | RSP face și el vârf nou | +| RSP **nu** confirmă vârful | McClellan confirmă prețul (fără divergență) | +| McClellan în divergență bear, apoi sub zero | ATR fără spike: încă nu e top confirmat, aștepți | +| pattern de lumânări (shooting star / evening star), apoi sell momentum | | + +Ascending wedge-ul e bearish prin natura lui. Double top-ul cu al doilea vârf +mai sus e oglinda double bottom-ului cu al doilea picior mai jos: ia +stop-urile short-urilor de deasupra vârfului 1, apoi cade. + +--- + +## 5. VIX, citit invers + +Pe VIX aplici aceleași pattern-uri (suport, rezistență, double bottom, higher +low), dar **sensul e opus**: VIX urcă atunci când piața cade, pentru că se +cumpără protecție (put-uri). Un VIX care nu mai poate urca e o piață care nu +mai are de ce să se teamă. + +> „Vix-ul, dacă vă uitați pe Vix Futures, double button cu ultimul picior +> mai jos și posibil higher low de aici. Vedeți că momentan a fost rejectat +> în zona asta de resistance." (21.08) + +### DA: VIX respins în fostul suport, lower low + + + + Exemplu construit (fără ticker) — daily, VIX (citit invers) + + fost suport = rezistență 19.20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + spike 28.4 + suport + reject + lower low + VIX respins sub fostul suport și lower low: frica scade, favorabil long-urilor pe indice. + + + +- Spike la **28.40**, apoi VIX coboară și se sprijină pe **19.20** (bara 11-18). +- Sparge 19.20 în jos: frica iese din piață. Low-ul de după spargere: **16.10**. +- **Reject:** revine exact la 19.20 (fostul suport, acum rezistență) și + închide la 18.50, sub nivel. Bara următoare închide mai jos. +- **Lower low** sub 16.10 (15.90), apoi VIX coboară la 14.30. + +### Indicele, în aceleași zile + + + + Exemplu construit (fără ticker) — daily, indicele, aceeași perioadă + + TP 57.30 = 2R + + intrare 54.30 + + SL 52.80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bottom (VIX în spike) + HL = reject pe VIX + TP + Bara 23: VIX respins la 19.20, indicele face higher low. Intrarea vine pe close-ul următor. + + + +- **Bottom 48.90** în aceeași zi cu spike-ul VIX. +- În ziua rejectului pe VIX, indicele face **higher low la 52.90**. +- **Intrare 54.30**: close-ul următor, peste high-ul barei de higher low. +- **SL 52.80**, sub higher low. Dacă indicele sparge 52.90, VIX nu a fost + respins de fapt. +- **TP 57.30 = 2R** (risc 1.50), atins după 8 bare. + +### NU: higher low pe VIX + + + + Exemplu construit (fără ticker) — daily, VIX (citit invers) + + fost suport 19.20 + + low anterior 16.10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + reject? + higher low + Același început, dar VIX face higher low și închide peste 19.20: risc de nouă cădere pe indice. + + + +Același început, același retest la 19.20. Dar VIX nu mai face lower low: +**higher low la 16.90** (peste 16.10), apoi închide la **19.80, peste +fostul suport**, și urcă la 25.20. Pe indice asta înseamnă o nouă cădere: +un long luat la higher low-ul indicelui ar fi fost scos pe stop. + +| VIX — DA (bine pentru long pe piață) | VIX — NU | +|---|---| +| respins în rezistență (fost suport) | face higher low | +| face lower low după reject | închide înapoi peste fostul suport | +| double bottom pe **indice** în aceleași zile | spike nou, fără lower low înainte | + +--- + +## 6. ATR: spike vs. cădere liberă + +ATR măsoară cât se mișcă o bară. La un **bottom adevărat** ultimii +vânzători vând în panică, cu orice preț, iar barele devin foarte mari: +ATR sare. După ce au vândut, nu mai are cine să vândă. Când prețul coboară +**cu bare mici și din ce în ce mai mici**, nimeni nu capitulează. Vânzarea e +ordonată și poate continua. + +> „ATL-ul este în cădere liberă, pentru un top sau un bottom, cel puțin noi +> urmărim un bottom, aș vrea să văd ATL-ul în spike." (19.08) + +> „Văd că ATR-ul începe să intră în spike, ceea ce este bine. […] 105% a +> urcat ATR-ul peste 100%." (21.08) + +Pragul de „peste 100%" e al ATR%-ului din platforma lui. Transcrierea nu +spune cum e calculat, deci diagramele nu îl reproduc. Panoul de jos arată +**true range-ul fiecărei bare** (cât a mișcat bara, cu gap cu tot), iar +spike-ul e o bară de peste 2x media. + +### DA: spike de range în locul crimei + + + + Exemplu construit (fără ticker) — daily, indicele + + TP2 60.80 = 2R + + TP1 58.40 = 1/2 până la vârf (0.9R) + + intrare 56.60 + + locul crimei 54.60 + + SL 54.50 + SMA-20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true range pe bară (volatilitate) + swing high + vârf 62.20 + spike de range + trigger + Range-ul barelor sare la peste 2x normalul exact când prețul atinge locul crimei. + + + +- **Locul crimei 54.60**: swing high-ul din bara 9, spart la urcare. +- Vârf la **62.20**, apoi corecție. Primele bare sunt normale, apoi două bare + cu range de **2.80**, față de **1.15** normal (**2.4x**). Asta e spike-ul. +- Bara a treia e un **hammer** cu low exact pe **54.60** și close deasupra. +- **Intrare 56.60**: close-ul peste high-ul hammer-ului. +- **SL 54.50**, sub locul crimei. Sub el, fostul vârf nu mai e suport. +- **TP1 58.40** = jumătatea distanței dintre low (54.60) și vârf (62.20). + Regula lui pentru bounce: „contezi realist pe jumătate" (21.08). E doar + **0.9R**, deci acolo iei jumătate din poziție și muți stop-ul pe + break-even. Atins după 4 bare. +- **TP2 60.80 = 2R** (risc 2.10), pentru restul. Atins după 8 bare. + +Din sesiune, bounce-ul bun are toate trei: **ATR% peste 100 + McClellan +oversold + locul crimei / gap închis / SMA 20**. + +### NU: ATR în cădere liberă + + + + Exemplu construit (fără ticker) — daily, indicele + + locul crimei 54.80 + SMA-20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true range pe bară (volatilitate) + swing high + atins, fără spike + lower lows + Range-ul se micșorează pe cădere: nimeni nu capitulează, deci încă nu e bottom. + + + +Aceeași structură: swing high la **54.80**, urcare, corecție. Dar corecția +vine cu range mediu de **0.49 pe bară**, față de **1.26** pe urcare, fără +nicio bară mare. Prețul atinge locul crimei și trece prin el ca prin nimic, +până la 53.00. Nu există bara de capitulare, deci nu există bounce. Un long +luat „pentru că e locul crimei" ar fi fost sub stop. + +| Bottom — DA | Bottom — NU | +|---|---| +| ATR în spike (bare de 2x+, ATR% peste 100) | ATR în cădere liberă, bare tot mai mici | +| McClellan oversold | McClellan reject sub zero fără oversold: corecția poate continua | +| prețul în locul crimei / gap închis / SMA 20 | niciun nivel atins, sau atins fără reacție | + +**La top e invers (10.09):** volatilitatea scăzută înainte de vârf e normală. +Te aștepți ca ATR să crească la noul all-time high. Top-ul confirmat vine cu +ATR în spike, nu cu el adormit. + +--- + +## 7. Sentiment: AAII și Fear & Greed + +Ideea e Buffett: cumperi când ceilalți se tem. Mecanismul: cine e bearish în +sondaj a vândut deja sau stă pe cash. Vânzătorii viitori s-au terminat, iar +cash-ul lor e cumpărare viitoare. Invers la top. + +> „cumpără când ceilal se cacă pe ei de frică și vin de când ceilal sunt la +> cum." (02.09) + +### AAII: pragul de 15-25% + +| Distanța bullish − bearish | Citire | Ce faci | +|---|---|---| +| **bearish peste bullish cu 15-25%** (ex. ~50% bearish vs. ~30% bullish) | opinie contrară validă: bottom | cauți long-uri, confirmi pe McClellan / breadth | +| **bullish peste bearish cu 15-25%** | opinie contrară: top | prudență pe long-uri, pregătești short | +| bullish peste **~40%** | zonă de top ([Q&A 18.08.2025](../09_QA/21_2025-08-18.html#aaii-survey-cele-trei-cadrane-si-pragul-de-40)) | nu adaugi long-uri noi | +| diferență de câteva procente (ex. ~4 puncte, 21.08) | „prea mică distanța" | nu e semnal; treci la McClellan / market picture | +| neutri mulți (~27%), tabere apropiate | indecizie (19.08) | nu e semnal | + +> „Ideal ar fi să fie distanțe de 20% între cele două tabere, nu suntem în +> opinie contrară" (19.08) + +### Fear & Greed + +| Cadran | Citire | Ce faci | +|---|---|---| +| frică extremă | varianta mai puternică a semnalului de cumpărare | cauți bottom-ul pe indici, cu trigger | +| frică | zonă de cumpărat, dacă AAII confirmă (bearish > bullish) | la fel, cu poziție normală | +| neutru | fără informație | contextul îl dau breadth-ul și McClellan | +| lăcomie / lăcomie extremă | participanții sunt deja investiți | prudență pe long-uri noi | + +**Trigger NU (02.09):** sentimentul singur nu e intrare. Frica poate deveni +frică extremă încă două săptămâni. Intri pe sistem. + +--- + +## 8. COT: poziționarea la bottom + +Marii comercianți (producători, utilizatori reali) își acoperă riscul și +cumpără de obicei la prețuri mici. Marii speculatori (fonduri) urmăresc +trendul și sunt cel mai short exact la fund. + +| Poziționare pe indice | Citire | Ce faci | +|---|---|---| +| **marii speculatori net short** + **marii comercianți urcă spre zero** | bottom în formare (24.08) | aștepți trigger de preț: buy doji la bottom, eventual retest ~1/2 | +| poziționarea arată bottom, dar pe preț nu e trigger | prea devreme | nu intri; COT poate anunța bottom-ul cu 3-5 săptămâni înainte ([Q&A 25.08.2026](../09_QA/01_2026-08-25.html#commitment-of-traders-cum-vezi-un-bottom-cu-3-5-saptamani-inainte)) | +| comercianții trec peste zero | poziționare confirmată | ținta se poate lărga ([Q&A 18.08.2025](../09_QA/21_2025-08-18.html#cot-pe-valute-exemplul-euro), exemplul pe euro) | + +> „marii speculatori au fost net short în zona asta în timp ce marii +> comercianți se apropiau de linea de zero în acest bottom, unde a fost și un +> buy-doge în formare." (24.08) + +Retestul de ~1/2 al barei de buy doji, care ia lichiditatea de sub ea, poate +veni înainte de urcare. Tranșele de la documentul +[01](01_buy_doji_si_strategia_mici.html) cumpără exact acel retest. + +--- + +## 9. Bond-urile ca semnal inter-market + +Acțiunile sensibile la dobândă (constructori de case, ca D.R. Horton) +depind de costul creditului: dobânzi mici înseamnă ipoteci mai ieftine și +mai multe case vândute. Prețul bond-urilor merge invers față de randament. +Un **bottom pe TLT** e deci piața care anunță că randamentele au atins +vârful, **înainte** ca asta să apară în acțiuni. + +> „în condițiile în care bond-urile […] vor face un spike low, să puteam să +> vedem DHI-ul că face un break-out." (19.08) + +### Bond-urile: hammer în suportul quarterly + + + + Exemplu construit (fără ticker) — daily, ETF de bond-uri pe termen lung + + suport quarterly 41.80 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + downtrend + picior 1 + hammer, picior 2 mai jos + Spike low sub picior 1, hammer în suportul quarterly: bond-urile își pot face bottom-ul. + + + +- Downtrend, **picior 1 la 42.80**, revenire, apoi cădere nouă. +- **Picior 2 mai jos**: spike low la **41.80**, exact în suportul quarterly, + cu hammer (codiță de peste 2x corpul) și close la 42.50. Cine a pus stop + sub 42.80 a fost scos, apoi prețul revine. +- Bara următoare închide la **43.00**, peste high-ul hammer-ului: bottom-ul + pe bond-uri are trigger. + +Pe TLT **nu** iei trade-ul în exemplul ăsta. E semnalul pentru acțiune. + +### Acțiunea sensibilă la dobândă: breakout după bond-uri + + + + Exemplu construit (fără ticker) — daily, acțiune sensibilă la dobândă + + TP 59.10 = 2R + + intrare 55.70 + + rezistență 55.00 + + SL 54.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + low + HL + HL + breakout + TP + Aceleași zile ca bond-urile: ascending triangle, breakout la 3 zile după trigger-ul de pe bond-uri. + + + +- **Ascending triangle**: rezistență plată la **55.00** (atinsă de 4+ ori) și + low-uri care urcă: **52.90 → 53.40 → 53.80 → 54.10**. Fiecare cumpărător + vine mai sus decât precedentul. +- Cu 3 zile după trigger-ul de pe bond-uri: **breakout, close 55.70**. Asta + e intrarea. +- **SL 54.00**, sub ultimul higher low (54.10). Sub el, triunghiul s-a + stricat. +- **TP 59.10 = 2R** (risc 1.70), atins după 10 bare. + +| Inter-market — DA | Inter-market — NU | +|---|---| +| spike low / hammer pe bond futures sau TLT, în suport quarterly | breakdown sub pivot pe acțiune, cu volum care trece negativ | +| double bottom pe TLT cu ultimul picior mai jos | bond-urile fac lower low nou | +| pe acțiune: compresie, ascending triangle, triple bottom cu ultimul picior mai sus, buy hammer | acțiunea nu are setup propriu: bond-urile singure nu sunt intrare | + +--- + +## 10. Calendar macro + +Rapoartele mută toată piața în câteva minute. Stop-ul pus înainte de raport +se execută la prețul la care se găsește contrapartidă, nu la cel scris, iar +spread-ul se lărgește. De aici regula: **nu deschizi înainte**, citești +reacția după. + +| Raport | Când / ce e | Ce contează (din sesiuni) | +|---|---|---| +| **CPI** | inflația de consum, lunar | cel mai urmărit de Fed pentru dobândă; zi de volatilitate pe indici, dolar, bond-uri ([Q&A 11.06.2025](../09_QA/26_2025-06-11.html#macro-din-ziua-cpi-dolar-aur-bonduri-fed)) | +| **PPI** | inflația la producător, lunar, în jurul CPI | anticipează CPI; mai puțină reacție decât CPI | +| **ADP** | miercuri; raportul **privat** de locuri de muncă | **nu e NFP**. Nu le confunda (02.09) | +| **NFP** | vineri, **15:30 ora României**; raportul oficial (Bureau of Labor Statistics) | „face ravagii ca și volatilitate" (04.09); piața așteaptă toată săptămâna | +| **JOLTS** | job openings | în scădere = piața muncii slăbește, poate frâna creșterile de dobândă (02.09) | +| **ISM** | indici de activitate | **ISM pe servicii** contează (economia SUA e ~70% servicii); ISM pe industrie contează puțin (02.09, 03.09) | +| **Fed / FOMC** | decizia de dobândă, apoi minuta | minuta = volatilitate în ziua publicării (19.08). Probabilitățile pot fi „fake" și deja în preț (03.09). Fed nu urcă ușor dobânda înainte de midterm elections (10.09) | +| **Jackson Hole** | simpozionul Fed de la final de august | poate muta indicii câteva procente într-o zi (17.08, cifra exactă din memorie, incertă) | +| **Core PCE, PIB, consumer confidence, șomaj săptămânal** | în săptămâna Jackson Hole | de verificat (25.08). La PIB, prima din cele 3 estimări mișcă piața (17.08) | + +### CPI — DA: breakout din compresie, confirmat a doua zi + + + + Exemplu construit (fără ticker) — daily, indicele + + TP 60.30 = 2R + + intrare 56.90 + + range high 55.40 + + SL 55.20 + + range low 54.40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + compresie înainte de CPI + CPI + confirmare + Nu intri înainte de raport. Intri după ce ziua de după CPI rămâne deasupra range-ului. + + + +- Uptrend, apoi **11 zile de compresie între 54.40 și 55.40**, cu volum în + scădere. Piața așteaptă raportul. +- **Ziua CPI**: close **56.40**, peste range, cu volum **96** față de media + compresiei de **31** (3x). +- Nu intri în bara de CPI. **A doua zi** low-ul rămâne deasupra lui 55.40 + și close-ul e mai sus: **intrare 56.90**. +- **SL 55.20**, sub range high. Înapoi în range = breakout-ul a eșuat + (diagrama NU, mai jos). +- **TP 60.30 = 2R** (risc 1.70), atins după 9 bare. + +### CPI — NU: spike peste range, close înapoi înăuntru + + + + Exemplu construit (fără ticker) — daily, indicele + + range high 55.40 + + range low 54.40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + volum + compresie înainte de CPI + CPI: spike 56.50 + close sub range + Același range. Spike-ul de pe CPI se închide înapoi înăuntru: cine a cumpărat la 56 e prins. + + + +Aceeași compresie. Pe CPI prețul sare la **56.50**, dar închide la **55.10**, +înapoi în range, cu o codiță lungă. Cine a cumpărat în minutele raportului, +la 56, e prins. A doua zi close la **54.20, sub range low**, apoi 50.90. +Regula de a aștepta close-ul, și ziua de după, te ține afară. + +| După raport — DA | După raport — NU | +|---|---| +| close-ul zilei de raport **în afara** range-ului, cu volum | codiță peste range, close înăuntru | +| ziua următoare rămâne în afara range-ului | ziua următoare închide în partea opusă a range-ului | +| contextul e de acord (McClellan peste zero, VIX în scădere) | intrare luată în minutele raportului | + +--- + +## Checklist: context înainte de trigger + +| Verificare | Bottom (long) | Top (short / prudență) | +|---|---|---| +| breadth | ~70%+ sub SMA 10/20, >50% sub SMA 50, pe toți indicii | 70-80% peste medii | +| McClellan | oversold, apoi trece de zero | overbought / divergență bear / zero reject | +| advance/decline | prăbușit | în scădere cu indicele la vârf | +| RSP | — | nu confirmă vârful indicelui | +| VIX | respins în rezistență, lower low | higher low, înapoi peste fostul suport | +| ATR | în spike | crește la noul vârf | +| AAII | bearish > bullish cu 15-25% | bullish > bearish cu 15-25%, bullish > 40% | +| Fear & Greed | frică / frică extremă | lăcomie / lăcomie extremă | +| COT | speculatori net short, comercianți spre zero | — | +| macro | fără raport major în 1-2 zile, sau raport deja trecut | la fel | + +Niciunul singur nu e suficient. Cu cât mai multe rânduri sunt de aceeași +parte, cu atât poziția poate fi mai mare. + +--- + +## Gotchas + +- **Contextul nu e trigger.** Frica extremă, McClellan oversold, VIX la + 28.40 — toate pot deveni mai extreme încă o săptămână. Intri pe preț: + în diagrama VIX, intrarea a venit abia la higher low-ul indicelui (54.30). +- **Nu cumpăra locul crimei fără spike de ATR.** Diagrama NU de la ATR: + bare de 0.49 față de 1.26, prețul a trecut prin 54.80 fără reacție. +- **Un vârf nou pe indice nu e un vârf nou pe piață.** Verifici RSP: în + exemplu indicele a făcut 57.40, RSP a rămas cu 0.8% sub vârful lui. +- **Nu intra în minutele de CPI / NFP.** Spike-ul de la 56.50 s-a închis la + 55.10. Și nu confunda ADP (miercuri) cu NFP (vineri). +- **Stop-ul pe break-even te scoate des în volatilitate mare** (02.09). + În săptămânile cu rapoarte, fie accepți ieșirile la zero și cauți + reintrare, fie lași stop-ul la structură, cu poziție mai mică. + +--- + +## Surse + +Din analiza zilnică (recoltele din `harvest/`): + +- **17.08.2026** — top purtat de mega-cap-uri: A/D la maxim, McClellan în + divergență, RSP; Jackson Hole; PIB-ul cu 3 estimări; MBT-10 în căderile + generale. +- **19.08.2026** — bond-urile / TLT și D.R. Horton; top pe Dow cu double top, + evening star și McClellan; ATR în cădere liberă; AAII cu neutri mulți; + minuta FOMC. +- **21.08.2026** — AAII cu pragul de 15-25%; ATR% în spike peste 100%; VIX + futures citit invers; McClellan sub zero cu MBT-10 short pe indice; ținta + bounce-ului la jumătate. +- **24.08.2026** — COT la bottom. +- **25.08.2026** — calendarul din săptămâna Jackson Hole. +- **02.09.2026** — breadth pe SMA 10/20/50/200; bottom temporar cu McClellan + oversold și A/D prăbușit; AAII + Fear & Greed; ADP vs. NFP; ISM; JOLTS; + stop-ul pe break-even. +- **03.09.2026** — ISM pe servicii; probabilitățile de dobândă „fake". +- **04.09.2026** — McClellan: zero reject vs. overbought; NFP. +- **10.09.2026** — breakout la pivotul monthly confirmat de McClellan; ATR + scăzut înainte de vârf; Fed înainte de midterm. + +Din Q&A: [18.08.2025](../09_QA/21_2025-08-18.html) (market picture, AAII +40%, COT), [25.08.2026](../09_QA/01_2026-08-25.html) (COT, AAII), +[11.06.2025](../09_QA/26_2025-06-11.html) (ziua CPI), +[28.07.2026](../09_QA/05_2026-07-28.html#bondurile-unde-te-uiti-inainte-sa-te-uiti-la-actiuni) +(bond-urile ca indicator avansat), [08.07.2025](../09_QA/25_2025-07-08.html#vix-jos-si-divergenta-vix-spy) +(VIX / SPY). Documente vecine: [01 — buy doji](01_buy_doji_si_strategia_mici.html), +[04 — pivoți](04_pivoti_si_proiectii.html), [05 — volum](05_volum.html). + +--- + +*Ce e completare a mea: toate prețurile și diagramele sunt construite (în +transcrieri cifrele de pe ecran sunt aproximative). Panoul de true range e +alegerea mea în locul ATR%-ului din platforma lui, al cărui calcul nu apare +în transcrieri; pragul „bară de 2x media" e al meu. Intrările, stop-urile, +țintele de 2R și împărțirea TP1/TP2 la bounce sunt aplicarea mea a regulilor +din curs. CPI și PPI nu sunt discutate în recoltele acestor sesiuni: +descrierea lor, regula „intri a doua zi după raport" și diagramele CPI +DA/NU sunt ale mele. La fel: explicațiile de mecanism (de ce VIX urcă la +căderi, de ce capitularea mărește barele, de ce speculatorii sunt short la +fund, legătura dobândă–constructori de case, stop-urile executate prost la +raport). Pragurile (15-25% la AAII, 74% / 56% / 50-50 la breadth, 105% la +ATR, NFP la 15:30), trigger-ele DA/NU și citatele vin din sesiuni; cele +marcate cu link vin din Q&A.*