Metadata-Version: 2.4
Name: tjl
Version: 0.1.0
Summary: Trial / Judge / Ledger - a calibrated rejection machine for trading-strategy claims. Not a trading bot; nothing here places orders.
Project-URL: Repository, https://github.com/oudouusa/tjl
Author: oudouusa
License: MIT
License-File: LICENSE
Requires-Python: >=3.12
Requires-Dist: moomoo-api>=10.8.6808
Requires-Dist: pandas>=2.2.0
Requires-Dist: yfinance>=0.2.50
Description-Content-Type: text/markdown

# tjl — Trial / Judge / Ledger

> 自分で作った最強の盾を、自分で作った最強の矛で打ち破る。
> 矛盾を乗り越えるプロジェクトであれ。

**これは自動売買ボットではありません。戦略クレームの「却下機械」です。**
X に毎日流れてくる「このルールで勝てる」という主張を、較正済みの5ゲートで安く・速く・
記録付きで裁く — その却下の質と台帳こそが主産物です。何も発注しません(全コードが
読み取り専用。発注 API は存在しません)。

*English summary: a calibrated **rejection machine** for trading-strategy claims —
not a trading bot. It measures its own false-positive rate, runs every claim through
a 5-gate gauntlet, and keeps an append-only public ledger of every trial.
Nothing here places orders.*

---

## なぜ「却下機械」なのか — 看板の数字

この機械の希少性は戦略ではなく、**自分の検定器の偽陽性率を実測してある**ことです:

- **エッジゼロのヌルデータでも、スクリーニングは 32〜42% の確率で「有望」と光る**
  (トレード分布の形状別に実測: williams 型 42.4% / gap-fade 型 39.4% / overnight 型 32.4%)
- 素朴な確認基準の偽確認率は最大 **21.8%** — だから確認閾値は候補ごとに
  ヌル・ブートストラップから導出する(偽確認率 ≤5% を満たす中で検出力最大の点)
- 測っていない 'promising' はスクリーン陽性にすぎない — 本リポジトリでは公式に
  そう格下げ済み(protocol v1)

## 台帳の現在地(2026-07-07、公開タイムスタンプ付き)

```
累積試行 N = 37(append-only、docs/research/ledger/trials.jsonl — 行削除は pre-commit が拒否)
composite: pass 28 / promising-caveated 8 / reject 1(source: manual 29 / x-ingest 8)
事前登録: 1件(12ヶ月確認中)/ Q4 待機 2件(1枠を規則で争う)/ 退役 1件 / 棚上げ多数
フォワード確認済みの生存者: 0件 ← この数字を隠さないことがこのリポジトリの流儀
```

**家系別の死因地図**(どの形がどのゲートで死ぬかの経験統計):

| 家系 | 戦績 | 主な死因 |
|---|---|---|
| trend_follow | 19戦17勝 | —(survivorship×2) |
| dip_buying | 6戦2勝 | **survivorship×4**(死にゆく銘柄を区別できない) |
| regime_timing | 6戦5勝 | 品質フィルタで復活する家系 |
| band_reversion | 3戦3勝 | — |
| breakout | 2戦1勝 | PIT(ユニバース固有性) |

注意: **pass 28件はエッジの証明ではなく「登録資格」です。** 登録された候補だけが
登録後データで12ヶ月確認され、現時点の確認済み生存者はゼロです。

## 5ゲート・ガントレット(protocol v2)

すべての候補は同じ審判を受け、結果は1行ずつ台帳に刻まれます:

1. **COST** — IBKR 風コスト($0.005/株・最低$1・スリッページ 5bps)適用後に net > 0
2. **SURVIVORSHIP** — 2021年時点の著名銘柄47本(のちの死者を含む・後知恵で選ばない)の
   最悪ケースユニバースでも net > 0 かつ PF ≥ 1
3. **MARKET_REGIME** — SPY 200SMA でレジーム分割し、負け側が勝ち側の25%以内
4. **PIT** — バックテスト開始時点の S&P500 実構成(point-in-time ヴィンテージ11本、
   2015〜2025)でも net > 0 — ユニバース固有の pass を殺す
5. **FOOTPRINT_NULL** — 候補の実足跡(日次エントリー本数+実現保有分布)を再現した
   ランダムエントリー100本のヌル分布で、観測 PF ≥ 中央値。
   **max_hold を伸ばして市場ドリフトを飲む偽装**を殺す — 自前の進化探索(85変異)が
   この抜け道で PF 6.14 を出した数時間後に、その発見ごとゲート化された

第5ゲートの遡及適用は既存 pass 4候補を4段階に判別しました:
100%ile(唯一のヌル超え → 登録)/ 87 / 73 / **16(ドリフト捕捉と確定 → 退役)**。

## アーキテクチャ

```
[毎日のフライホイール(ET、systemd 常駐・すべて読み取り専用)]
  プレマーケット・ギャップスキャン(8:30〜30分毎、gap≥5%・上位10)
    → TJL フィルター(10:05〜、SMA200・プレマ高値/前日高値ブレイク)
    → ペーパートレード(リスク管理+killswitch、16:10 決済)→ Telegram 通知
    → 16:20 フルアーカイブ7系統: 1分足 / 資金フロー+FINRA空売り / ニュース+トーン /
      決算カレンダー / F&G+VIX / クレーム混雑軌跡 / 想定フィル監査(コストゲートの自己監査)

[研究パイプライン]
  X 投稿 → hermes(Grok)が構造化+原文照合 → 制約付き DSL(exec なし・6ファクトリ・
  述語ホワイトリスト)→ 5ゲート → 台帳 N+1 → pass なら較正・ロバストネス近傍・
  新鮮な目の実装監査・時間反転検査 → 事前登録(枠: 同時2・四半期新規1)→
  登録後データのみで月次確認(12ヶ月・基準は候補別に較正から導出して凍結)
```

**エージェント分業**: hermes(常時稼働の手 — X 読取・キュー投入・自律検定・告知)/
dev loop(判断と制度 — 受け入れ監査・宣言・登録執行)/ 決定論コード(執行と記録 —
数値を LLM に作らせない)。統治は Tier 制: エージェント自律は拒否権つき(Tier 1)、
**ライブ発注・killswitch 解除・実マネー・検定基準の変更は人間必須(Tier 2)** —
「エージェントが自分の合格基準を変えられる状態は Goodhart 化する」ため。
git 規律も pre-commit フックが内容で強制(台帳追記専用・登録不変・宣言凍結・
ユニバース変更は PIT スナップショット同梱)。

## 専有データ資産

**注意: data/ はすべて gitignore — clone してもデータは付いてきません。**
リポジトリが運ぶのはコード・config(PIT ヴィンテージ含む)・研究ノート・台帳のみ。

毎晩自動蓄積している観測(自己記述スキーマ `tjl.*.v1` ×18種)のうち、
**後から買い戻せないもの**: 1分足(公共からは約30日で消える)/ 当日の資金分布 /
判断時刻の実測 quoted spread / クレームの favorite_count 軌跡 / スキャン・paper・
フィル監査という「当時の判断の一次記録」。成長率は実測 ~1MB/日。

この資産の上に第4の柱(専有観測エッジ)の憲法が立ちます:
**「公共データの上でエッジを探さない。私たちにしか無い観測の上でだけ仮説を立てる。」**
前方宣言済みの仮説8本(active 1 / waiting 6 / shelved 1)が
`config/declared_hypotheses.json` で凍結され(pre-commit が改竄を拒否)、
成熟ウォッチャーが解禁を告げます。

## 正直さの記録(まだ言えないこと)

- 実測コスト(2晩・191銘柄・場中中央値 20bps)は成熟前。日足推定器(ρ=0.18)も
  1分足プロキシ(ρ=0.32)も実測と相関せず却下済み — **待つ以外にない**
- survivorship ゲートは完全上場廃止銘柄(SIVB 等53件)のデータ欠損で
  **最悪ケースをなお過小評価**している
- X クレームの出所照合: verbatim はキュー10件中1件のみ(divergent 6・404 が1)。
  全 verdict は「抽出されたルールの検定」であって元投稿の主張の検証ではない
- 唯一の登録候補には gate-feedback 由来の選択バイアス caveat が永久記載されている —
  だからこそ確認は登録後の未来データのみ

## 動かす

```bash
uv sync
./scripts/check.sh                                # ruff + pytest(オフラインで常時グリーン)
uv run python -m tjl.research list                # 戦略一覧
uv run python -m tjl.research gauntlet <name>     # 5ゲート(台帳に N+1 が刻まれる)
uv run python -m tjl.promote status               # 登録と確認の現在地
uv run python scripts/edge_maturity.py            # 宣言仮説のデータ成熟
uv run python -m tjl.viewer                       # 読み取り専用ダッシュボード(:8787)
```

常駐系(スケジューラ・hermes・Telegram・moomoo shadow)の運用は `docs/playbook.md`、
安全不変条件は `AGENTS.md`、思想の全文は `docs/vision.md`。

## リポジトリの歩き方

| 場所 | 中身 |
|---|---|
| `docs/vision.md` | 憲法(エピグラフ・4本柱・不変条件) |
| `docs/promotion-protocol.md` | 昇格プロトコル(v0→v1→v2 の改訂史ごと) |
| `docs/research/ledger/` | **台帳**(trials.jsonl・registrations/ — 公開タイムスタンプ) |
| `docs/research/*.md` | 較正・却下・edge hunt の研究ノート(KB front-matter 付き) |
| `docs/inbox/` | X 記事の一次記録+考察(原文照合ラベル付き) |
| `src/tjl/` | フライホイール+研究ハーネス(全部読み取り専用) |
| `.claude/skills/` | 運用手順の成文化(/edge-hunt /flywheel-check /gauntlet-pass 等) |
| `integrations/hermes/` | 常時稼働エージェントの魂と手順(SOUL・SKILL・references) |

## 来歴

出発点は Humbled Trader のチュートリアル動画(2026-06)を参考にした
プレマーケット・スキャナでした。名前の初代の意味(**T**rend **J**oin **L**ong)は
その最初の戦略に由来し、現在の意味 — **T**rial / **J**udge / **L**edger
(試行 → 審判 → 台帳)— は機械が育った後、2026-07-06 に再定義されたものです。
最初の戦略は皮肉にも、自分が生んだ機械の検定でエッジ無しと判定されています。

---

*この機械は3日間(2026-07-05〜07)でビジョン文書から「登録1件を持つ稼働機関」に
なりました。数ヶ月後に生存者ゼロでも、この機械は成功しています — 成功指標は
発見の数ではなく、却下の質と記録の信頼性だからです。*
