selectia: SVG-urile purtau inca erorile corectate in text

Corectorul n-are voie la SVG, deci a semnalat si le-am reparat eu, in
generatoare:
- gen/selectia/cadrane.py: cadranul 3 scria "imbunatatire spre
  underperform" — chiar langa textul corectat. Acum "inrautatire,
  histograma inca peste linia 0".
- gen/selectia/funnel.py: "0.96 si 0.74 au fost respinse" era fals. Pe YPF
  la 0.96 zice "din pacate" si il trece oricum pe lista.
- gen/strategii/selectia_scor.py: "sub 7 se deduce ca excludere".

Bonus, preexistenta: in selectia_exemplu.py eticheta rezistentei 84.50
cadea peste titlu. Mutata la dreapta. audit_diagrams: 0 pe toate.

A1_risc: doua trimiteri la fise/selectia.md decalate cu 7 linii.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
This commit is contained in:
Claude Agent
2026-09-19 18:23:17 +00:00
parent a026c974ad
commit 2aff278021
11 changed files with 34 additions and 30 deletions

View File

@@ -15,7 +15,10 @@ Etichete si cifre, toate din text/glosar (fara axe inventate, fara procente):
- cadran 1 = supraperformanta, bate benchmark-ul, long (.md:63,310)
- cadran 2 = imbunatatire spre supraperformanta, zona de cumparat,
la long, de preferat (.md:64,311)
- cadran 3 = imbunatatire spre underperform, pentru short (.md:65,312)
- cadran 3 = INRAUTATIRE (histograma inca peste linia 0, dar sub medie),
pentru short. Definitia din modul:
`03_MODUL_2/06_6_INDICATORUL_DE_PERFORMANTA.txt:6`. Documentul scria
„imbunatatire spre underperform" — gresit, corectat pe 19.09.2026.
- cadran 4 = underperform, pierde in fata benchmark-ului,
short / stai pe margine (.md:66,313)
- cadranul 4 nu se tranzactioneaza pe orb: astepti trecerea in 2 sau 1,
@@ -61,9 +64,9 @@ CARDS = [
]),
(COL1_X, ROW2_Y, [
(34, "Cadran 3", 16, "700", BLACK),
(66, "îmbunătățire spre", 14, "400", BLACK),
(86, "underperform", 14, "400", BLACK),
(110, "pentru short", 13, "400", GRAY),
(66, "înrăutățire", 14, "400", BLACK),
(86, "încă peste linia 0", 14, "400", BLACK),
(110, "pierde avans; pentru short", 13, "400", GRAY),
(132, "SHORT", 13, "700", BLUE),
]),
(COL2_X, ROW2_Y, [

View File

@@ -16,9 +16,9 @@
<text x="515.0" y="218" font-size="13" font-weight="700" fill="#1a5fb4" text-anchor="middle">LONG</text>
<rect x="40" y="302" width="290" height="150" rx="10" fill="#ffffff" stroke="#1a5fb4" stroke-width="1.5"/>
<text x="185.0" y="336" font-size="16" font-weight="700" fill="#000000" text-anchor="middle">Cadran 3</text>
<text x="185.0" y="368" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">îmbunătățire spre</text>
<text x="185.0" y="388" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">underperform</text>
<text x="185.0" y="412" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">pentru short</text>
<text x="185.0" y="368" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">înrăutățire</text>
<text x="185.0" y="388" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">încă peste linia 0</text>
<text x="185.0" y="412" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">pierde avans; pentru short</text>
<text x="185.0" y="434" font-size="13" font-weight="700" fill="#1a5fb4" text-anchor="middle">SHORT</text>
<rect x="370" y="302" width="290" height="150" rx="10" fill="#ffffff" stroke="#1a5fb4" stroke-width="1.5"/>
<text x="515.0" y="336" font-size="16" font-weight="700" fill="#000000" text-anchor="middle">Cadran 4</text>

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -108,10 +108,10 @@ for i in range(N_BANDS):
svg.append(arrow(y + BAND_H + 6))
svg.append(txt(W / 2, FOOT_Y,
"Sub 100% relative volume: 0.96 și 0.74 au fost respinse; el vrea peste 100%.",
"Sub 100% relative volume e un minus, nu un veto: 0.96 (YPF) „din păcate”, dar îl trece pe listă;",
size=13, fill=GRAY))
svg.append(txt(W / 2, FOOT_Y + 20,
"Neconfirmat: nu reiese din sesiuni dacă sub prag oprește orice intrare.",
"0.74 (AON) „hai să ne uităm așa un pic pe el”. Neconfirmat: dacă sub prag oprește o intrare pe trigger.",
size=13, fill=GRAY))
svg.append(txt(W / 2, H - 52,
"Cifre din text: peste 100%, 10 candele, 0.96 / 0.74, cadranele 1-2.",

View File

@@ -29,8 +29,8 @@
<rect x="202" y="576" width="296" height="58" rx="8" fill="#ffffff" stroke="#1a5fb4" stroke-width="1.5"/>
<text x="350.0" y="601" font-family="system-ui, sans-serif" font-size="15" font-weight="700" fill="#000000" text-anchor="middle">Listă scurtă</text>
<text x="350.0" y="621" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">taie lista la câteva idei</text>
<text x="350.0" y="668" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Sub 100% relative volume: 0.96 și 0.74 au fost respinse; el vrea peste 100%.</text>
<text x="350.0" y="688" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Neconfirmat: nu reiese din sesiuni dacă sub prag oprește orice intrare.</text>
<text x="350.0" y="668" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Sub 100% relative volume e un minus, nu un veto: 0.96 (YPF) „din păcate”, dar îl trece pe listă;</text>
<text x="350.0" y="688" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">0.74 (AON) „hai să ne uităm așa un pic pe el”. Neconfirmat: dacă sub prag oprește o intrare pe trigger.</text>
<text x="350.0" y="712" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Cifre din text: peste 100%, 10 candele, 0.96 / 0.74, cadranele 1-2.</text>
<text x="350.0" y="732" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Sursa: 11_selectia_simbolului.md — fluxul din scanner.</text>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -101,7 +101,7 @@ assert min(c.l for c in cds) >= 71.30, "SL-ul de 82.00 nu poate fi sub minimul s
# ---------------------------------------------------------------- niveluri, etichete
levels = [
Level(84.50, "rezistenta 84.50", GRAY, label_at="left"),
Level(84.50, "rezistenta 84.50", GRAY, label_at="right"),
Level(82.00, "SL 82.00", RED, label_at="right"),
Level(78.10, "intrare short 78.10", BLUE, label_at="left"),
Level(72.00, "TP 72.00", GREEN, label_at="left"),

View File

@@ -1,7 +1,7 @@
<svg viewBox="0 0 640 433" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="16" fill="#333" style="font-weight:bold">HIG — daily (Sell Doji + Bear Reversal, RVOL 200%)</text>
<line x1="24" y1="34.0" x2="626" y2="34.0" stroke="#777" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="28.0" fill="#777">rezistenta 84.50</text>
<text x="612" y="28.0" fill="#777" text-anchor="end">rezistenta 84.50</text>
<line x1="24" y1="74.0" x2="626" y2="74.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="612" y="68.0" fill="#c00" text-anchor="end">SL 82.00</text>
<line x1="24" y1="136.4" x2="626" y2="136.4" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@@ -10,7 +10,8 @@ Ce arată (toate cifrele vin din spec):
- praguri: 7 (reperul „galben”), 7-8 („intră în analiză”), 12-13 („spuma”), 14 (max);
- benzile F-score: 0-3 slab fundamental, 4-5 mixt, 6-7 solid, 8-9 foarte puternic;
- nota: scor -1 = date indisponibile în platformă, NU scor 0;
- nota: „peste 7-8" e formularea cursului, sub 7 e deducere, nu prag declarat.
- nota: „peste 7-8" e formularea cursului. Sub 7 NU e excludere — la 4/14
si 6/14 continua analiza; scorul departajeaza intre candidati. Corectat 19.09.2026.
Rulare: .venv/bin/python gen/strategii/selectia_scor.py
"""
@@ -161,10 +162,10 @@ add(60, 470,
"16_ANALIZA_FUNDAMENTALA/09_implementare_f_score_tradestation.md:45-46, 268-269.",
13, "normal", GRAY, "start")
add(60, 498,
"„peste 7-8” e formularea exactă a cursului; sub 7 se deduce ca excludere,",
"„peste 7-8” e formularea exactă a cursului. Sub 7 NU e excludere:",
13, "normal", BLACK, "start")
add(60, 518,
"nu e declarat ca prag separat (11_selectia_simbolului.md:199-204).",
"la 4/14 și 6/14 continuă analiza; scorul departajează candidații.",
13, "normal", GRAY, "start")
# ---- surse
@@ -209,8 +210,8 @@ for req in ("ATM score: scala 0-14",
"0-3", "slab", "fundamental",
"4-5", "mixt", "6-7", "solid", "8-9", "foarte", "puternic",
"Scor -1 = date indisponibile în platformă, NU scor 0.",
"sub 7 se deduce ca excludere",
"nu e declarat ca prag separat"):
"Sub 7 NU e excludere",
"departajează candidații"):
assert any(req in t[2] for t in TEXTS), f"lipsește din desen: {req!r}"
# 3. numerele de pe scală sunt exact 0..14

View File

@@ -69,8 +69,8 @@
<text x="60.0" y="430.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Scor -1 = date indisponibile în platformă, NU scor 0.</text>
<text x="60.0" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Scorul -1 nu se citește ca 0.</text>
<text x="60.0" y="470.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">16_ANALIZA_FUNDAMENTALA/09_implementare_f_score_tradestation.md:45-46, 268-269.</text>
<text x="60.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">„peste 7-8” e formularea exactă a cursului; sub 7 se deduce ca excludere,</text>
<text x="60.0" y="518.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">nu e declarat ca prag separat (11_selectia_simbolului.md:199-204).</text>
<text x="60.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">„peste 7-8” e formularea exactă a cursului. Sub 7 NU e excludere:</text>
<text x="60.0" y="518.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">la 4/14 și 6/14 continuă analiza; scorul departajează candidații.</text>
<text x="350.0" y="556.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Surse: 08_ANALIZA_ZILNICA/11_selectia_simbolului.md:158-164, :199-204;</text>
<text x="350.0" y="574.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">16_ANALIZA_FUNDAMENTALA/08_piotrowski_f_score.md:70-72;</text>
<text x="350.0" y="592.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">16_ANALIZA_FUNDAMENTALA/09_implementare_f_score_tradestation.md:45-46, 268-269.</text>

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -119,8 +119,8 @@ Nu tot ce e aici e preț, deci nu totul se poate desena ca grafic de candele:
<rect x="202" y="576" width="296" height="58" rx="8" fill="#ffffff" stroke="#1a5fb4" stroke-width="1.5"/>
<text x="350.0" y="601" font-family="system-ui, sans-serif" font-size="15" font-weight="700" fill="#000000" text-anchor="middle">Listă scurtă</text>
<text x="350.0" y="621" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">taie lista la câteva idei</text>
<text x="350.0" y="668" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Sub 100% relative volume: 0.96 și 0.74 au fost respinse; el vrea peste 100%.</text>
<text x="350.0" y="688" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Neconfirmat: nu reiese din sesiuni dacă sub prag oprește orice intrare.</text>
<text x="350.0" y="668" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Sub 100% relative volume e un minus, nu un veto: 0.96 (YPF) „din păcate”, dar îl trece pe listă;</text>
<text x="350.0" y="688" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">0.74 (AON) „hai să ne uităm așa un pic pe el”. Neconfirmat: dacă sub prag oprește o intrare pe trigger.</text>
<text x="350.0" y="712" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Cifre din text: peste 100%, 10 candele, 0.96 / 0.74, cadranele 1-2.</text>
<text x="350.0" y="732" font-family="system-ui, sans-serif" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">Sursa: 11_selectia_simbolului.md — fluxul din scanner.</text>
</svg>
@@ -460,9 +460,9 @@ Definiția din modul: 1 = supraperformanță, 2 = îmbunătățire, **3 = înră
<text x="515.0" y="218" font-size="13" font-weight="700" fill="#1a5fb4" text-anchor="middle">LONG</text>
<rect x="40" y="302" width="290" height="150" rx="10" fill="#ffffff" stroke="#1a5fb4" stroke-width="1.5"/>
<text x="185.0" y="336" font-size="16" font-weight="700" fill="#000000" text-anchor="middle">Cadran 3</text>
<text x="185.0" y="368" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">îmbunătățire spre</text>
<text x="185.0" y="388" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">underperform</text>
<text x="185.0" y="412" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">pentru short</text>
<text x="185.0" y="368" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">înrăutățire</text>
<text x="185.0" y="388" font-size="14" font-weight="400" fill="#000000" text-anchor="middle">încă peste linia 0</text>
<text x="185.0" y="412" font-size="13" font-weight="400" fill="#777777" text-anchor="middle">pierde avans; pentru short</text>
<text x="185.0" y="434" font-size="13" font-weight="700" fill="#1a5fb4" text-anchor="middle">SHORT</text>
<rect x="370" y="302" width="290" height="150" rx="10" fill="#ffffff" stroke="#1a5fb4" stroke-width="1.5"/>
<text x="515.0" y="336" font-size="16" font-weight="700" fill="#000000" text-anchor="middle">Cadran 4</text>

View File

@@ -384,8 +384,8 @@ Scala de scor:
<text x="60.0" y="430.0" font-size="14" font-weight="bold" fill="#000000" text-anchor="start">Scor -1 = date indisponibile în platformă, NU scor 0.</text>
<text x="60.0" y="450.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">Scorul -1 nu se citește ca 0.</text>
<text x="60.0" y="470.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">16_ANALIZA_FUNDAMENTALA/09_implementare_f_score_tradestation.md:45-46, 268-269.</text>
<text x="60.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">„peste 7-8” e formularea exactă a cursului; sub 7 se deduce ca excludere,</text>
<text x="60.0" y="518.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">nu e declarat ca prag separat (11_selectia_simbolului.md:199-204).</text>
<text x="60.0" y="498.0" font-size="13" font-weight="normal" fill="#000000" text-anchor="start">„peste 7-8” e formularea exactă a cursului. Sub 7 NU e excludere:</text>
<text x="60.0" y="518.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="start">la 4/14 și 6/14 continuă analiza; scorul departajează candidații.</text>
<text x="350.0" y="556.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">Surse: 08_ANALIZA_ZILNICA/11_selectia_simbolului.md:158-164, :199-204;</text>
<text x="350.0" y="574.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">16_ANALIZA_FUNDAMENTALA/08_piotrowski_f_score.md:70-72;</text>
<text x="350.0" y="592.0" font-size="13" font-weight="normal" fill="#777777" text-anchor="middle">16_ANALIZA_FUNDAMENTALA/09_implementare_f_score_tradestation.md:45-46, 268-269.</text>
@@ -690,7 +690,7 @@ avertisment de participare.
<svg viewBox="0 0 640 433" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:auto;font:12px sans-serif">
<text x="24" y="16" fill="#333" style="font-weight:bold">HIG — daily (Sell Doji + Bear Reversal, RVOL 200%)</text>
<line x1="24" y1="34.0" x2="626" y2="34.0" stroke="#777" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="30" y="28.0" fill="#777">rezistenta 84.50</text>
<text x="612" y="28.0" fill="#777" text-anchor="end">rezistenta 84.50</text>
<line x1="24" y1="74.0" x2="626" y2="74.0" stroke="#c00" stroke-width="1.5" stroke-dasharray="4 3"/>
<text x="612" y="68.0" fill="#c00" text-anchor="end">SL 82.00</text>
<line x1="24" y1="136.4" x2="626" y2="136.4" stroke="#1a5fb4" stroke-width="1.5" stroke-dasharray="4 3"/>

View File

@@ -89,7 +89,7 @@ sunt reconciliate explicit de material (vezi 2.4).
scrie NEACOPERIT ÎN MATERIAL la MBT-10 (`strategii/fise/mbt10.md:186`), MBP
(`strategii/fise/mbp.md:322-326`), MDSRT (`strategii/fise/mdsrt.md:294-297`),
BYH (`strategii/fise/byh.md:291-295`) și selecție
(`strategii/fise/selectia.md:300-302`). În acele cazuri se aplică plafonul
(`strategii/fise/selectia.md:307-309`). În acele cazuri se aplică plafonul
general de 2% de mai sus.
### 1.2 De unde vine stopul (înainte de a calcula ceva)
@@ -423,7 +423,7 @@ sizing — stopul pe structură, TP1/TP2/trail, jurnalul — se transferă ca at
| scanere programate (TradeStation) | nu | listă manuală de 5-10 nume BET, verificată pe daily/weekly |
| indicatori proprietari (jbtgrshdATM, TICUS, Buy/Sell Momentum) | nu | „nimic — regula cade”; rămâne doar prețul (doji, hammer, niveluri, ATR) |
| short | practic nu | rămâne doar varianta long; jumătate din strategiile simetrice dispar |
| volum mediu > 500k, preț > 30-40 $ | nu (praguri US) | praguri recalculate pe lichiditatea reală a numelor BET, nu pe cifrele US (`strategii/fise/selectia.md:318-320`) |
| volum mediu > 500k, preț > 30-40 $ | nu (praguri US) | praguri recalculate pe lichiditatea reală a numelor BET, nu pe cifrele US (`strategii/fise/selectia.md:325-327`) |
| date fundamentale trimestriale | parțial | raportările de pe bvb.ro, F-Score calculabil manual |
**Universul propus** *(judecata mea; materialul nu dă lichiditate BVB)*: