This repository has been archived on 2026-10-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
anatoly 84635f5f72 research(5m): разбор 133 источников по 5 направлениям + сводка «что брать в бэктест»
ЧТО: directions/*.md+json (поток заявок, кросс-секция, издержки и исполнение, ML, волатильность),
сводный sources/ALL_SOURCES.json (133 источника с URL, горизонтом, заложенными издержками, вердиктом),
docs/SYNTHESIS.md — итог со страницы вики.
ПОЧЕМУ: сверить наши прогоны с литературой и взять готовые проверяемые формулировки правил.
ГЛАВНОЕ: ни одной работы с net-плюсом на 1-15м при издержках >=10 б.п.; пик валового эджа 1,3 б.п. на 15м
и 0,15 б.п. на 5м (Kitron & Wengrowicz 2026, 183 пары) против нашего круга 11 б.п.
КАК ПРОВЕРЕНО: JSON всех пяти направлений валидны (15/24/27/29/38 = 133 записи), отчёты 43-61 КБ.
2026-09-29 00:28:51 +03:00

34 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""Свод источников исследования 5м-стратегий: объединение 5 направлений + выборка «что брать в бэктест»."""
import glob
import json
import os
D = "/opt/data/work/5m_research/directions"
OUT = "/opt/data/work/5m_research/sources/ALL_SOURCES.json"
all_src = []
for path in sorted(glob.glob(os.path.join(D, "*.json"))):
direction = os.path.basename(path).replace(".json", "")
try:
items = json.load(open(path, encoding="utf-8"))
except Exception as e:
print(f"{direction}: НЕ ЧИТАЕТСЯ ({e})")
continue
for it in items:
if isinstance(it, dict):
it["direction"] = direction
all_src.append(it)
print(f"{direction}: {len(items)} источников")
os.makedirs(os.path.dirname(OUT), exist_ok=True)
json.dump(all_src, open(OUT, "w", encoding="utf-8"), ensure_ascii=False, indent=1)
print(f"\nВСЕГО: {len(all_src)} источников → {OUT}")
impl = [s for s in all_src if str(s.get("implementable")).lower() not in ("false", "none", "", "no")]
print(f"\n=== потенциально применимые ({len(impl)}) ===")
for s in impl:
print(f"- [{s.get('direction')}] {str(s.get('title'))[:80]} ({s.get('year')}) | "
f"горизонт: {str(s.get('horizon'))[:30]} | издержки: {str(s.get('costs_assumed'))[:40]} | "
f"вердикт: {str(s.get('verdict'))[:90]}")