Version 04 als eigenes Repository

Erster Commit des Strangs "Optimierte Entscheidungsfindung mit Python"
(Version 04). Die Historie der 71 Commits bis zur Trennung bleibt im
uebergeordneten Repository OR_mit_Python liegen, das ab jetzt nur noch
Version_03 (eingefroren) verwaltet und Version_04/ ignoriert.

Bewusst kein "git subtree split": Der Pfad Version_04/ existiert erst seit
der Verzeichnistrennung, ein Split braechte daher nur 7 der 41 einschlaegigen
Commits - eine Teilhistorie, die vollstaendig aussieht und es nicht ist.

Stand: 5 Teile, 23 Kapitel, 5 Anhaenge, 292 Abschnitte, 703 Querverweise,
325 Indexmarken, 73 Beispielprogramme, 32 SVGs, 4 Plotly-Figuren,
25 Notebooks, PDF mit 715 Seiten.

Zusaetzlich in diesem Commit:

* pyproject.toml mit Abhaengigkeitsgruppen finance, large-scale, api,
  figures, dev, empfehlungen. Die abgedruckte requirements.txt bleibt
  unveraendert daneben bestehen. ortools steht in der Grundausstattung,
  highspy erst in [large-scale] - so kann der HiGHS-Symbolkonflikt bei der
  schlanken Installation gar nicht erst auftreten.

* Dabei zwei Funde: graphviz wird von erzeuge_architektur_diagramme.py
  importiert, fehlt aber in requirements.txt (jetzt in [figures]); pymoo
  steht in requirements.txt, wird aber von keinem Programm importiert,
  sondern nur im Kapitel Metaheuristiken empfohlen (jetzt in
  [empfehlungen]).

* NEUER_TITEL.md nach Kritik_und_Verbesserungsvorschlaege/ verschoben - es
  ist die Vorlage des Titelblatts, kein Bestandteil des Werks. Die beiden
  Fundstellen in PROGRESS.md und erzeuge_titelseite.py nachgezogen.

* PROGRESS.md nannte noch den Untertitel der ersten Fassung; auf den
  tatsaechlichen aus erzeuge_titelseite.py korrigiert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
dschlueter 2026-09-08 01:20:09 +02:00
commit b7af2f1d9a
468 changed files with 262141 additions and 0 deletions

View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.1.2 (20260126.1125)
-->
<!-- Title: d19 Pages: 1 -->
<svg width="503pt" height="516pt"
viewBox="7.00 7.00 495.00 509.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(11.2 504.6)">
<title>d19</title>
<!-- s1 -->
<g id="node1" class="node">
<title>s1</title>
<path fill="#fffbeb" stroke="#d97706" stroke-width="2" d="M370.67,-493.4C370.67,-493.4 128,-493.4 128,-493.4 122,-493.4 116,-487.4 116,-481.4 116,-481.4 116,-441.12 116,-441.12 116,-435.12 122,-429.12 128,-429.12 128,-429.12 370.67,-429.12 370.67,-429.12 376.67,-429.12 382.67,-435.12 382.67,-441.12 382.67,-441.12 382.67,-481.4 382.67,-481.4 382.67,-487.4 376.67,-493.4 370.67,-493.4"/>
<text xml:space="preserve" text-anchor="start" x="128.96" y="-473.41" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#d97706">1 · HISTORISCHE DATENPIPELINE</text>
<text xml:space="preserve" text-anchor="start" x="128.96" y="-449.26" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Automatischer Download bereinigter</text>
<text xml:space="preserve" text-anchor="start" x="128.96" y="-439.26" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Kursdaten über 5 Jahre</text>
</g>
<!-- s2 -->
<g id="node2" class="node">
<title>s2</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M230.67,-386.12C230.67,-386.12 12,-386.12 12,-386.12 6,-386.12 0,-380.12 0,-374.12 0,-374.12 0,-333.84 0,-333.84 0,-327.84 6,-321.84 12,-321.84 12,-321.84 230.67,-321.84 230.67,-321.84 236.67,-321.84 242.67,-327.84 242.67,-333.84 242.67,-333.84 242.67,-374.12 242.67,-374.12 242.67,-380.12 236.67,-386.12 230.67,-386.12"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-366.13" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">2 · FAKTOR&#45;SCORING&#45;MODELL</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-341.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">121M Momentum</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-331.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">als Rendite&#45;Signal μₜ</text>
</g>
<!-- s1&#45;&gt;s2 -->
<g id="edge1" class="edge">
<title>s1&#45;&gt;s2</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M210.58,-428.39C197.67,-417.77 183.12,-405.8 169.58,-394.66"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="171.69,-392.32 162.73,-389.03 167.68,-397.18 171.69,-392.32"/>
</g>
<!-- s3 -->
<g id="node3" class="node">
<title>s3</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M468.29,-386.12C468.29,-386.12 286.38,-386.12 286.38,-386.12 280.38,-386.12 274.38,-380.12 274.38,-374.12 274.38,-374.12 274.38,-333.84 274.38,-333.84 274.38,-327.84 280.38,-321.84 286.38,-321.84 286.38,-321.84 468.29,-321.84 468.29,-321.84 474.29,-321.84 480.29,-327.84 480.29,-333.84 480.29,-333.84 480.29,-374.12 480.29,-374.12 480.29,-380.12 474.29,-386.12 468.29,-386.12"/>
<text xml:space="preserve" text-anchor="start" x="287.33" y="-366.13" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">3 · ROBUSTE KOVARIANZ</text>
<text xml:space="preserve" text-anchor="start" x="287.33" y="-341.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Ledoit&#45;Wolf&#45;Shrinkage auf</text>
<text xml:space="preserve" text-anchor="start" x="287.33" y="-331.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">rollierendem 252&#45;Tage&#45;Fenster</text>
</g>
<!-- s1&#45;&gt;s3 -->
<g id="edge2" class="edge">
<title>s1&#45;&gt;s3</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M288.09,-428.39C301,-417.77 315.55,-405.8 329.09,-394.66"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="330.99,-397.18 335.94,-389.03 326.98,-392.32 330.99,-397.18"/>
</g>
<!-- s4 -->
<g id="node4" class="node">
<title>s4</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M383.42,-278.84C383.42,-278.84 115.25,-278.84 115.25,-278.84 109.25,-278.84 103.25,-272.84 103.25,-266.84 103.25,-266.84 103.25,-226.56 103.25,-226.56 103.25,-220.56 109.25,-214.56 115.25,-214.56 115.25,-214.56 383.42,-214.56 383.42,-214.56 389.42,-214.56 395.42,-220.56 395.42,-226.56 395.42,-226.56 395.42,-266.84 395.42,-266.84 395.42,-272.84 389.42,-278.84 383.42,-278.84"/>
<text xml:space="preserve" text-anchor="start" x="116.21" y="-258.85" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#7c3aed">4 · OR&#45;OPTIMIERUNGSKERN (CVXPY)</text>
<text xml:space="preserve" text-anchor="start" x="116.21" y="-234.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Max. Momentum CVaR Reibung</text>
<text xml:space="preserve" text-anchor="start" x="116.21" y="-224.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Hard Constraints: Sektor&#45;Caps, No&#45;Short</text>
</g>
<!-- s2&#45;&gt;s4 -->
<g id="edge3" class="edge">
<title>s2&#45;&gt;s4</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M160.09,-321.11C173,-310.49 187.55,-298.52 201.09,-287.38"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="202.99,-289.9 207.94,-281.75 198.98,-285.04 202.99,-289.9"/>
</g>
<!-- s3&#45;&gt;s4 -->
<g id="edge4" class="edge">
<title>s3&#45;&gt;s4</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M338.58,-321.11C325.67,-310.49 311.12,-298.52 297.58,-287.38"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="299.69,-285.04 290.73,-281.75 295.68,-289.9 299.69,-285.04"/>
</g>
<!-- s5 -->
<g id="node5" class="node">
<title>s5</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M393.54,-171.56C393.54,-171.56 105.12,-171.56 105.12,-171.56 99.12,-171.56 93.12,-165.56 93.12,-159.56 93.12,-159.56 93.12,-119.28 93.12,-119.28 93.12,-113.28 99.12,-107.28 105.12,-107.28 105.12,-107.28 393.54,-107.28 393.54,-107.28 399.54,-107.28 405.54,-113.28 405.54,-119.28 405.54,-119.28 405.54,-159.56 405.54,-159.56 405.54,-165.56 399.54,-171.56 393.54,-171.56"/>
<text xml:space="preserve" text-anchor="start" x="106.08" y="-151.57" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">5 · REBALANCING &amp; ORDER&#45;EXECUTION</text>
<text xml:space="preserve" text-anchor="start" x="106.08" y="-127.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Monatliche Neugewichtung mit</text>
<text xml:space="preserve" text-anchor="start" x="106.08" y="-117.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">realer Transaktionskosten&#45;Verbuchung</text>
</g>
<!-- s4&#45;&gt;s5 -->
<g id="edge5" class="edge">
<title>s4&#45;&gt;s5</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M249.33,-213.83C249.33,-204.53 249.33,-194.21 249.33,-184.31"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="252.49,-184.58 249.34,-175.58 246.19,-184.58 252.49,-184.58"/>
</g>
<!-- s6 -->
<g id="node6" class="node">
<title>s6</title>
<path fill="#059669" stroke="#059669" stroke-width="2" d="M388.29,-64.28C388.29,-64.28 110.38,-64.28 110.38,-64.28 104.38,-64.28 98.37,-58.28 98.37,-52.28 98.37,-52.28 98.37,-12 98.37,-12 98.37,-6 104.37,0 110.37,0 110.37,0 388.29,0 388.29,0 394.29,0 400.29,-6 400.29,-12 400.29,-12 400.29,-52.28 400.29,-52.28 400.29,-58.28 394.29,-64.28 388.29,-64.28"/>
<text xml:space="preserve" text-anchor="start" x="111.33" y="-44.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">6 · LEISTUNGSREPORT &amp; BENCHMARK</text>
<text xml:space="preserve" text-anchor="start" x="111.33" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">Sharpe, Max Drawdown, CAGR</text>
<text xml:space="preserve" text-anchor="start" x="111.33" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">vs. S&amp;P 500 (SPY)</text>
</g>
<!-- s5&#45;&gt;s6 -->
<g id="edge6" class="edge">
<title>s5&#45;&gt;s6</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M249.33,-106.55C249.33,-97.25 249.33,-86.93 249.33,-77.03"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="252.49,-77.3 249.34,-68.3 246.19,-77.3 252.49,-77.3"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB