メインコンテンツへスキップ

internal · architecture overview

Architecture

kenny.boats (Quant Desk · Project Dali) の全体像。 12 個のデータソースから GitHub Actions の 2 workflow (daily heavy 約 36 step + hourly lite 7 step) を経て、 Vercel + Next.js で公開するまでの完全フロー。 譲渡先 / 監査人 / Claude セッション 両方が読む reference。

最終更新: 2026-05-22 (Dali 3 セッション化 + X 自動投稿 + CF Worker cron-trigger + /briefing 市況分岐 + 注目ニュース統合、 16 commits)

概要

物理学・数学・LLM を組み合わせて、 グローバル流動性と FX 市場を毎日自動で読み解くデスク。 マクロ統計・中央銀行声明・機関投資家ポジショニング・LLM judgment を GitHub Actions の 2 workflow (daily heavy 約 36 step + hourly lite 7 step) で自動更新し、 kenny.boats で公開している研究プラットフォーム。

1. データフロー (マインドマップ)

外部データソース → cron pipeline → 永続蓄積 → Vercel 配信 → 各 route で表示、 という一方向の流れ。

              ┌──────────────────────────────────────────┐
              │       外部データソース (12 個、 1 次情報)    │
              └──────────────────────────────────────────┘
                              │
   ┌────────┬────────┬────────┼────────┬────────┬────────┐
   ▼        ▼        ▼        ▼        ▼        ▼        ▼
 FRED   CFTC COT  Twelve   Binance  ForexFct  中銀声明  YouTube
 (米マクロ)         Data    Futures             (HTML)   Shopify
                                                  ↓
                                            Claude Haiku
                                            4.5 NLP
                                            (hawk-dove)
                              │
                              ▼
   ┌──────────────────────────────────────────────────────┐
   │  GitHub Actions cron 2 workflow:                      │
   │   - daily_update.yml (heavy 約 36 step、 07/15:30/20:30) │
   │   - hourly_market_refresh.yml (lite 7 step、 毎時)    │
   │                                                       │
   │   fetch → z-score → backtest → LLM Oracle 判断        │
   │                                  (Sonnet 4.6 SC×3)    │
   └──────────────────────────────────────────────────────┘
                              │
                              ▼
              ┌──────────────────────────────┐
              │  data/raw/*.parquet (永続蓄積)│
              │  + market_payload.json (集約)│
              └──────────────────────────────┘
                              │
                              ▼
              ┌──────────────────────────────┐
              │   Vercel auto-deploy          │
              │   kenny.boats (Next.js)       │
              └──────────────────────────────┘
                              │
       ┌──────────────────────┼──────────────────────┐
       ▼                      ▼                      ▼
  Console 13 route       Marketing / EC        管理者向け
  (流動性 / マクロ /     (about / products /   (/admin /kpi)
  FX デスク / etc)       research / sponsors)
       │                      │
       ▼                      ▼
  個人投資家               譲渡先 / 監査人
  機関投資家               法務 / 経理

2. データソース 一覧 (12 source)

各 source の取得頻度・コスト・認証要件。 SLA 違反時は次の cron run で自動 retry、 fail しても dashboard は前回 parquet を表示続行。

Source取得内容更新頻度コスト認証
FRED米国マクロ 29 系列 + 利回り 7 系列月次〜日次無料不要
MOF (財務省)JGB 日次利回り 1Y〜40Y日次 15:00 JST無料不要
CFTC COT機関フロー TFF + DCOT 21 contracts週次 (3 日 lag)無料不要
TIC主要外国保有米国債 (日本 / 中国 / 等)月次 (5 ヶ月 lag)無料不要
Twelve Data ProFX 14 + 株 + Crypto + 商品 = 55 ticker × 5 TFchart: real-time WS / parquet: 毎時$229/月API key (CF Worker 経由)
Binance FuturesBTC/ETH OI + funding rate + 合成清算 heatmap毎時無料不要
ForexFactory経済指標カレンダー (過去 7d + 未来 7d)週次 XML無料不要
Financial Juice中銀 / FX ニュース headlines (RSS)リアルタイム無料不要
6 中央銀行FRB / 日銀 / BoE / ECB / RBA / BoC 公式声明声明日無料不要
Anthropic ClaudeSonnet 4.6 (LLM Oracle) + Haiku 4.5 (NLP)日次 1 回~¥8K/月API key (GitHub Secrets)
YouTube APIチャンネル KPI (登録者 / 視聴 / 純増)日次無料OAuth refresh
ShopifyREDFOX.store の月次 EC 売上 KPIリアルタイムプラン込みservice account

3. Route map (kenny.boats の構成)

主要コンソール 13 route (Shell 経由)

独立 page

4. Quant logic (採用戦略 + LLM Oracle)

採用 3 戦略を 8 個 (TSMOM × 5 pair + Macro Event × 3) として equal-weight 合成、 in-sample Sharpe 0.81 (cum +962%, max DD 201%)。 注: in-sample / OoS では性能異なる。

TSMOM Long-only

Moskowitz-Ooi-Pedersen 2012

12 ヶ月 log return z > threshold で entry、 21 日 hold

5 pair 採用: USDJPY (0.5σ, Sharpe 0.67) / EURJPY (1.5σ, 0.68) / GBPJPY (1.5σ, 1.61) / USDCAD (1.0σ, 0.69) / AUDUSD (1.5σ, 0.63)

Macro Event Surprise

Andersen 2003 系

FRED inflation YoY z > 1σ で entry

3 event 採用: Core PCE 21d (Sharpe 0.94) / Core CPI 1d (1.03) / PCE 21d (0.71)

Multi-Factor USDJPY Composite

Phase 4 (Grinold-Kahn + Black-Litterman)

19 factor を Bayes shrinkage + IC sign hybrid で合成

USDJPY 専用 (BoJ / JGB / 19 factor / EURJPY cointegration)

LLM Oracle Per-Pair (Anthropic Claude Sonnet 4.6 + Haiku 4.5、 Phase 11)

10 pair (6 USD ストレート + 4 クロス円) を 3 stage で深堀。 1 日 3 セッション (東京 07:30 / ロンドン 15:30 / NY 20:30 JST 前)、 同セッション dedup で月 ~$14 cost。

  • Stage 1 (Haiku 4.5): 全 10 pair 統合 bias から global regime 判定
  • Stage 2 (Sonnet 4.6、 並列 10): 各 pair を自前 context (合成シグナル時系列 + 金利 / CFTC / 実現ボラ / 4h チャート / news) で深堀、 他 pair は判断重み LOW
  • Stage 3 (Haiku 4.5): 10 pair judgment を集約し取引推奨 4 + 避けるべき 4 ランキング
  • 各 pair 出力: bias + confidence + long_term_strategy (multi-day swing) + short_term_strategy (intraday、 次セッションまで) の dual-horizon + 代替シナリオ + risk factors
  • 予測精度は /internal/synchronize (Synchronize Rate) で partial-credit 連続採点 (long/short 並列 stream、 random 50% baseline 併記)

4.5 Panel ⇄ 計算 ⇄ Source トレース表 (バグ時の影響範囲特定用)

「画面の何か数値がおかしい」 と気付いた時の trace map。 panel → payload field → 計算 script → 上流 source の順で辿れる。 ARCHITECTURE.md §9.5 と完全同期。

Panelpayload field計算 script数式 / ロジック概要上流 source
DaliStrategyRow (per_pair Oracle、 10 pair)llm_oracle_per_pair.judgment.pairs[PAIR]llm_oracle_per_pair.pyStage 1 Haiku regime + Stage 2 Sonnet 並列 10 深堀 + Stage 3 Haiku ranking。 各 pair に long_term (multi-day swing) + short_term (intraday、 次セッションまで) の dual-horizon 戦略、 pair-specific context 厳密分離Anthropic + Twelve Data + FRED + CFTC + Financial Juice + CME
SynchronizeView (/internal/synchronize)synchronize.json (sync_scores/*)score_dali_sync.py + build_sync_payload.pyDali brief の予測精度を partial-credit 採点 (A 方向 / B シナリオ被覆 / D 較正)。 long/short 並列 stream を composite_sync = 0.40 short + 0.60 long で合成、 random 50% baseline 併記oracle_archive/* + Twelve Data OHLCV (1day/1h)
PortfolioSharpePanelportfolio_combinedbacktest_portfolio_combined.py8 戦略 (TSMOM×5 + Macro Event×3) union calendar 平均、 Sharpe = mean/std × √252tsmom_signals + macro_event_alpha
TsmomSignalPaneltsmom_signals[]generate_ui_payload.py: build_tsmom_signals12m log return z (rolling 1260d) > pair 別 thr (0.5σ〜1.5σ) で signalTwelve Data 1day
MacroEventAlphaPanelmacro_event_alphagenerate_ui_payload.py: _macro_surprise_zevent z = (latest - rolling_mean) / std (60mo window)、 採用 3 event ±1σ、 composite は equal-weight meanFRED (CPILFESL / PCEPI / PCEPILFE)
MultiFactorBiasPanel (USDJPY 専用)usdjpy_factor_biasgenerate_ui_payload.py: build_usdjpy_factor_bias19 factor を Bayes shrinkage + IC sign hybrid 合成、 weight = (τ × prior + (1-τ) × ic²) × sign, τ=0.5FRED + MOF JGB + Twelve Data + USDJPY composite backtest
DeskScreen (4h chart + options + CFTC TWAP)ohlcv_4h[PAIR] + cftc_positioning + cme_options_wallsDeskScreen.tsx 内部 + 共通 fetch4h OHLCV 500 本 + CME gamma wall (5 majors + BTC 実、 KEN PC Playwright daily 07:15 JST) + CFTC TWAP entry + 共和分 spread + driver decompositionTwelve Data 4h + CME daily settle (KEN PC) + CFTC + FRED
NetLiquidityPanelnet_liquidity_chartgenerate_ui_payload.py: build_net_liquidity_chartnet = (WALCL − TGA − RRP) × 1000B$、 3週変化 ±50B で trend 拡大/縮小判定FRED (WALCL / WTREGEN / RRPONTSYD)
CrossAssetScreencross_assetgenerate_ui_payload.py: build_cross_asset11 asset の 60d rolling Pearson + partial corr (SPX 統制)、 9×9 matrixTwelve Data 1day
PositioningScreencftc_positioning + cftc_backtestfetch_cot_data.py + backtest_cftc_lev.pylev_money_z = (net - rolling_mean(52w)) / std(52w)、 crowding label ±1σ/±2σCFTC TFF (FX/Eq/Rates) + DCOT (Commodities) Socrata
CryptoFlowScreencrypto_positioningfetch_crypto_oi.pyBTC/ETH OI + funding + 合成 liquidation heatmap (5x/10x/25x/50x/100x mix 仮定)Binance Futures public API
CBStatementsScreencb_statementsfetch_cb_statements.py + score_cb_statements_llm.pyhawk-dove z (lex / 1000 語)、 最新声明は Haiku 4.5 で再採点、 古い声明はレキシコンのみ6 中銀公式 site + Anthropic Haiku
MacroOverlayScreen (各 MacroCell)macro[]generate_ui_payload.py: build_macro_metricsmetric ごとに latest + delta + sparkline 24mo + stale フラグ (source 別 cutoff)FRED + 中銀 NLP + OECD/Eurostat
WorldMonitor (4 mode map)monitor_stats + regional_scores + capital_gravity + contagion + overheatgenerate_ui_payload.py: build_world_monitor4 mode: Capital Gravity / Contagion / Overheat / Risk Surface の country-level compositeFRED + Twelve Data + 集約

4.6 障害時の影響範囲マトリクス

ある data source / service が止まった時、 どこが機能不全になるか + 自動回復可否 + 復旧手順。 ARCHITECTURE.md §9.6 と同期。

止まる Source壊れる場所自動回復復旧手順
FRED (米マクロ)/macro-overlay 全 cell / /us-economic 29 系列 / /liquidity-flows NetLiquidity / USDJPY 19 factor (rate_diff + real_yield) / Macro Event Alpha 3 event✅ 自動retry 3 回 (1s/2s/4s) → 次 cron で再試行、 既存 parquet 維持
MOF JGBUSDJPY 19 factor の policy_bias + rate_diff JPY side✅ 自動MOF サーバー復旧待ち、 既存 parquet 維持
CFTC COT/positioning 21 contracts / cftc_backtest / USDJPY 19 factor の cftc_z✅ 自動 (週次)次の金曜 release で再取得、 週内は前週値で表示
Twelve Data/desk 4h chart / KeyInstruments / MarketHeatmap / GlobalEquityHeatmap / CrossAsset 60d 相関 / TSMOM signal 計算⚠️ 部分自動API key rotate (SHINZO 操作) + status 確認、 fallback secondary なし、 既存 parquet で前回値を表示続行
Binance Futures/crypto-flow 全 panel (BTC/ETH OI + funding + heatmap)✅ 自動次 cron で再試行、 一時障害は parquet 維持
ForexFactory/calendar event✅ 自動次週 XML 取得失敗時は前週蓄積で前進、 raw XML 永続
Financial Juice RSSLLM Oracle prompt の news context⚠️ 部分自動失敗時は前回 news で代用、 LLM judgment は若干古い文脈で生成 (致命的でない)
6 中銀公式 scraping/cb-statements 最新声明 Haiku score⚠️ 部分自動scraping エラー時は最新声明だけ欠落、 過去蓄積は表示続行
Anthropic Claude APILLM Oracle Per-Pair (10 pair dual-horizon) / Synchronize Rate / Haiku CB statements / weekly dreaming_reflect⚠️ silent skiprequirements.txt anthropic + Secrets ANTHROPIC_API_KEY 必須。 失敗時は前回 judgment 維持、 SHINZO 確認まで silent (2026-05-16 〜 5/18 の 2 日 stale 事案の root cause)
YouTube API/kpi YouTube section✅ 自動 (graceful skip)secrets 失効時は placeholder JSON、 /kpi で 「Secrets 未登録」 表示
Shopify Admin/kpi Shopify section✅ 自動GCP service account 失効時は placeholder、 SHINZO が GCP console で rotate
Vercel deployサイト全体が古い state で固定 (data fetch は client 側で継続)⚠️ 部分Vercel dashboard で previous deployment を promote、 git revert で次 deploy
GitHub Actions runner全 cron pipeline (約 36 step)❌ SHINZO 介入要GitHub status 確認 / workflow_dispatch で manual trigger、 復旧後 cron 通常運用
Cloudflare Worker (td-proxy)/desk Live USDJPY ticker (1m WS feed)⚠️ 部分自動Worker dashboard で deploy 再実行、 fallback は client-side REST で 1m 補完

「数値が変」 と気付いた時の 5 step trace

  1. どの URL / どの section / どの数値?
  2. 上の Panel Trace 表で panel → payload field
  3. 同表で計算 script を特定
  4. 同表で上流 source を特定
  5. Impact Matrix で source 止まり / script bug → 他に何が壊れるか確認

例: 「/desk/usdjpy の Dali 戦略 (LLM Oracle) confidence が 0.0」 → Panel Trace の DaliStrategyRow → payload.llm_oracle_per_pair.judgment.pairs.USDJPYllm_oracle_per_pair.py → Anthropic (Haiku regime + Sonnet 深堀) → Impact Matrix Anthropic 行 = silent skip risk → 確認: git log -- data/raw/llm_oracle_per_pair.parquetの最終 commit 日時、 GitHub Actions log で 「anthropic not installed」 や 「ANTHROPIC_API_KEY not set」 WARN 確認

5. Cron pipeline (GitHub Actions、 2 workflow)

失敗履歴は data/raw/cron_runs.jsonlに永続記録、 GitHub UI に頼らず repo 内で trace 可能。 両 workflow はconcurrency: data-refreshで serialize、 push 衝突を回避。

5.1 daily_update.yml (heavy、 約 36 step、 3 回/日)

07:00 / 15:30 / 20:30 JST に自動実行。 完走時間 4-9 分 (LLM dedup 日は 2 分)。 LLM Oracle / FRED / CFTC / TIC 等 release-based or cost-bound source を含む。

  1. Fetch 系 10 step (FRED / MOF / CFTC / TIC / Crypto / Sunday USDJPY / Twelve Data / X / YouTube / ForexFactory / FJ News)
  2. Score / NLP 1 step (CB statements Haiku 4.5 採点)
  3. Analysis / backtest 2 step (liquidity / CFTC lev_z)
  4. Generate UI payload (1st pass) 1 step
  5. Time-series snapshot 2 step (signals_history / TSMOM paper trade)
  6. LLM Oracle Per-Pair 1 step (Stage 1 Haiku regime + Stage 2 Sonnet 並列 10 + Stage 3 Haiku ranking、 3 セッション) + Dali brief X 投稿 1 step
  7. Portfolio backtest 1 step + Generate UI payload (2nd pass) 1 step
  8. Synchronize Rate 2 step (score_dali_sync 採点 / build_sync_payload payload)
  9. Admin inventory / Forge cron stats + harness graph / Cost dashboard / automation health / MOF monitor 各 1 step
  10. Cron run summary + assert outputs 各 1 step / Commit and push 1 step (git push origin main)

5.2 hourly_market_refresh.yml (lite、 7 step、 毎時、 2026-05-19 新設)

毎時 00 分 UTC (24 回/日)、 ~30 秒/run、 LLM 呼出なし。 cost neutral な high-frequency 更新のみ (Twelve Data Pro plan quota 13% 使用、 Binance / CoinGecko / Financial Juice 無料)。 KeyInstruments / MarketHeatmap / 4h chart の last price + chg_pct lag が 8-10h → 1h 以内 fresh。

  1. fetch_crypto_oi.py (Binance public)
  2. fetch_sunday_usdjpy.py (CoinGecko + TD)
  3. fetch_twelve_data.py (55 ticker × 5 TF、 主要 ボトルネック ~10s)
  4. fetch_financial_juice_news.py (RSS)
  5. generate_ui_payload.py (既存 Oracle/Portfolio parquet を os.path.exists で自動 re-embed、 Oracle field 維持)
  6. build_admin_inventory.py
  7. Commit + push (`Hourly market refresh [skip ci]`、 empty-commit guard + rebase guard)

5.49 自律改善 layer 構造化 (2026-05-23、 24 件 1 日完結)

KEN「今週 1 週間の振り返り、 ハーネス / スキル / データ構造、 現段階これが一番いい状態?」 → silent skip / cron fail / memory stale / render-truth gap の 4 構造的弱点を 1 セッションで全層構造化。 詳細: CLAUDE.md §18 + ARCHITECTURE.md §11 + memory project_session_2026_05_23

達成度: 構造 floor 85% 最適。 silent skip → 通知 → fix → 再 verify → メタ監視まで chain 完成、 KEN 操作 残 ゼロ。 残 15% は数週運用後の dead code 剪定 + meta-meta monitor (heartbeat 自身の監視) + memory layer 自動圧縮、 ROI 低で別 phase 推奨。

5.48 Dali 3 セッション化 + X 自動投稿 infra (2026-05-22、 16 commits)

KEN 指示「24h LIVE 配信 (東京/ロンドン/NY) と整合させて Dali ブリーフも 1 日 3 回 cron 発火」 + 「Dali ブリーフ X 自動投稿」 を 1 セッションで完成。 詳細: CLAUDE.md §16 + memory project_session_2026_05_22

end-to-end: CF Worker cron (数秒精度) → daily_update.yml → llm_oracle_per_pair → post_dali_to_x → fx-indicator-business manual-x-post → @redfox99007 X 投稿。 1 日 3 投稿で 自動運用 開始。

5.47 Composite Signal framework (2026-05-20、 Phase 1〜3 完成 17 commits)

KEN「対称性 + 固有 edge 区別」 + 「合成 signal 構成要素 method 明示」 要求で 2 層 framework 構築。 全 pair 対称な Common Factor と pair-specific Edge を decomposed display、 USDJPY だけ 19 factor で深掘りという非対称性を矯正。 詳細: CLAUDE.md §15.13 + memory project_composite_signal_2026_05_20

framework 完成度: Layer 1 = 100% / Layer 2 Edge = 96%。 これで /desk/[pair] page で 全 6 pair が「対称な合成 signal」 + 「pair 固有 edge」 + 「統合 LONG/SHORT bias」 の 3 panel で見れる。 USDJPY 専用の 19 factor 深掘り (04 / DEEP DIVE) と並行、 brand 「機関を可視化するクオンツ」 主張に対する非対称性矯正完了。

5.46 Inventory + Sunset + Regime Aggregator round (2026-05-19/20)

Phase 5 後続 1 集中 session で実装。 13 commits 投入、 institutional macro quant 視点での「素材 inventory + 構造整理 + 将来 regime layer 設計」 を一気に整備。 詳細: CLAUDE.md §15

SHINZO rule encoded: 「お金がかかるものはやらない」 (paid data source 永久除外、 free or self-built proxy で代替) + 「Composite を decompose、 individual factor で per-pair visibility」 (USDJPY template bias 排除)。 詳細 memory feedback_no_paid_sources + feedback_factor_decomposition

5.45 Phase 5 design 刷新 (2026-05-19)

15 brand designer (Apple / Stripe / Linear / Airbnb / Notion / Figma / Robinhood / Revolut / Wise / Pinterest / VSCO / Instagram / Aesop / SSENSE / Zara) を 並列 audit、 8 utility sub-agent で解析、 SHINZO 7 decisions approved 後 1 session で 20+ commits 投入。

詳細: CLAUDE.md §14 + memory project_phase5_design_overhaul。 dep 追加 0 (Radix / cmdk / tailwind-merge 全 self-built)。

5.5 Persona ownership + 改修フロー (Dali / Thorp 分業)

2026-05-19 に Thorp persona を sub-agent system + 物理 infra の運用 owner として正式実装 (ADR-011)。 kenny.boats への改修は 2 business agent の分業 で進む — Dali (frontend + data analysis content) + Thorp (sub-agent system + cron / CF Worker / Vercel / Secret)。 詳細は CLAUDE.md §13 参照。

Domain ownership

LayerOwner副 owner consult 要件
Frontend code / text / SEO / pair-specific integrityDalisub-agent UI 追加時は Thorp
Macro data 解析 content (中銀 NLP / 19 factor / Oracle prompt)Dali
Python data pipeline (scripts/)Dali新 source が cron yml 変更を伴うなら Thorp
Cron workflow yml (.github/workflows/)Thorpデータ流量が Dali 領域に影響するなら Dali
CF Worker (cf_worker/td_proxy/)Thorpfrontend WS client 影響なら Dali
Vercel deploy / rollbackThorp
Secret management (rotation / 新規)Thorp (proposal) + SHINZO (execution)影響 source 主 owner
Sub-agent system (.claude/agents/)Thorpdispatcher 他 persona 影響なら該当 persona

改修フロー 4 pattern

Recursion resolve

Dali ↔ Thorp は peer 関係、 互いを管理しない。 互いの dispatcher / mandate 変更は SHINZO judgment 経由のみ。 self-amendment は両 persona とも forbidden。 Dalio Bridgewater「Idea Meritocracy + founder veto」 structure (SHINZO = founder)。

6. 法的位置付け / Disclaimer

関連 link / 参考

7. 詳細仕様書 (`docs/` 配下)

外部 dev / 譲渡先 engineering team が 「各 page の目的・機能・ロジック」 を read するための structured spec。 Robinhood + Stripe DD 観点 audit を経て 2026-05-19 に 17 docs を追加 (法務 2 件は協議後追加予定)。

技術 contract

運用 / ops

Billing / 移行 / 外部 dev

※ 法務関連 (金商法 § 28 disclosure / GDPR-CCPA-APPI 対応) は SHINZO 法務協議後に別途追加予定。