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

@@ -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