alife-trader — LLM変異ループ

生成 2026-10-03 15:15:03(30秒ごとに自動更新)
未起動
変異器
?
条件
?
データ
?
完了ラウンド
771
最低取引/fold
?
直近の段階
ingest R4214
開始 ? / 最終更新 2026-10-03T15:04:22

殿堂 — 通算上位10%(103体)の数字

生ログ 265件 → 異なる表現型 199種 → 上位10%として 103体を保持。順位付けは適応度(進化用データのみ)で行い、holdout は選抜に使わない。
殿堂の進化用 中央値
$92.87
殿堂のholdout 中央値
$89.55
殿堂のholdout 平均
$87.90
適応度1位を採用した場合のholdout
$101.98
holdoutが正の個体
6/103
実際に運用するなら適応度で選ぶしかない(holdout で選ぶと holdout が選択に使われ、未来の推定値としての意味を失う)。その1体は R4027「c9 外来シード素通し(passivbot深押し(帯-0.7%))」で、進化用 $99.34 → holdout $101.98。

世代ごとの適応度の推移

適応度(ラウンド)-9.84-6.45-3.060.333.7215271053157921052631315736834209最良その世代の平均
最良が横に伸びているときは、親が強すぎて子が誰も超えていない状態。平均が最良に近づくほど個体群が収束している。

元手 $100 の残高推移(各ラウンドの最良個体)

残高(ドル)(ラウンド)-19.9853.95127.89201.82275.7515271053157921052631315736834209進化用(seg1→seg2を通しで運用)holdout(未来・進化中は未使用)
以下は親の再評価と同一ソースを除いた 27828 体で集計している(生ログは 37054 件。親は毎ラウンド再評価され、AST変異はコードを変えても挙動が同じことが多いため)。
適応度が最良の個体 進化用
$189.49
適応度が最良の個体 holdout
$91.59
holdoutが最良の個体 holdout
$155.39
適応度で選んだ個体が holdout で最良にならないのが常。ただし holdout が最良のものを選ぶのも同じ過剰適合である(選択に使った時点で holdout ではなくなる)。実際 27828 体の holdout リターンは中央値 -5.07%、正なのは 4114/27828 体(14.8%)で、最良の +55.39% は「多数振った中の最大値」にすぎない。最良を主張するなら多重比較の必要水準 0.05/27828 = 0.000002 を満たす必要がある。

ラウンドごとの最良個体

R条件個体拒否検出最良適応度進化用holdout取引建玉率進化用 $holdout $
4184blind900-0.382-0.31%-2.09%220.2%$99.37$97.91
4185blind901-1.006-1.69%-14.64%891.8%$96.62$85.36
4186blind902-0.510-0.31%-2.09%220.2%$99.37$97.91
4187blind901-1.145-5.30%-3.31%600.5%$89.44$96.69
4188blind901-0.382-0.31%-2.09%220.2%$99.37$97.91
4189blind900-1.129-4.81%-13.57%1514.0%$90.50$86.43
4190blind900-0.442-0.31%-2.09%220.2%$99.37$97.91
4191blind901-0.444-0.15%-1.90%190.2%$99.71$98.10
4192blind500-1.747+1.50%+1.11%101.3%$102.98$101.11
4193blind900-0.442-0.31%-2.09%220.2%$99.37$97.91
4194blind900-0.572-0.15%-1.90%190.2%$99.71$98.10
4195blind900-0.442-0.31%-2.09%220.2%$99.37$97.91
4196blind900-0.442-0.31%-2.09%220.2%$99.37$97.91
4197blind900-0.442-0.31%-2.09%220.2%$99.37$97.91
4198blind900-1.276-7.91%-14.53%1602.1%$84.58$85.47
4199blind901-0.572-0.15%-1.90%190.2%$99.71$98.10
4200blind901-0.980-2.49%+0.00%650.0%$95.08$100.00
4201blind900-1.638+0.20%-2.44%480.4%$100.39$97.56
4202blind900-1.128-6.15%-7.14%1541.4%$87.93$92.86
4203blind900-1.135-0.41%+0.00%280.0%$99.18$100.00
4204blind900-0.450-0.31%-2.09%220.2%$99.37$97.91
4205blind901-0.510-0.31%-2.09%220.2%$99.37$97.91
4206blind900-0.385-0.31%-2.09%220.2%$99.37$97.91
4207blind1000-0.581-0.15%-1.90%190.2%$99.71$98.10
4208blind500-1.639-0.24%-4.84%280.9%$99.52$95.16
4209blind1001-1.232-6.87%-7.63%570.3%$86.61$92.37
4210blind1000-0.445-0.31%-2.09%220.2%$99.37$97.91
4211blind900-0.445-0.31%-2.09%220.2%$99.37$97.91
4212blind902-1.465-6.77%+0.00%1410.0%$86.87$100.00
4213blind900-0.445-0.31%-2.09%220.2%$99.37$97.91
直近 30 ラウンドのみ表示(全 4213 ラウンド)。全期間は上のグラフで確認できる。
holdout は観察者用ログから表示している。変異器には見せていない(見せた時点で holdout ではなくなる)。

報酬信号の健全性

適応度 vs holdout 相関 (n=27828・重複排除後)
+0.712

実地検査で捕まえた個体(6673件)

評価系を突こうとした直接証拠。未来参照またはバー位置の暗記を検出している。
"
R個体検出内容
4113c1 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4325のシグナルが変化
4115c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4116c3 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4325のシグナルが変化
4126c3 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー209のシグナルが変化
4126c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー179のシグナルが変化
4126c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー167のシグナルが変化
4129c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4325のシグナルが変化
4131c7 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4132c4 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4133c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4141c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4141c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4325のシグナルが変化
4142c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4326のシグナルが変化
4146c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー178のシグナルが変化
4146c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー167のシグナルが変化
4152c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー173のシグナルが変化
4152c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー169のシグナルが変化
4153c7 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー173のシグナルが変化
4153c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー167のシグナルが変化
4157c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー169のシグナルが変化
4158c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4336のシグナルが変化
4159c7 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー169のシグナルが変化
4166c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー169のシグナルが変化
4167c7 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4325のシグナルが変化
4174c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー167のシグナルが変化
4177c3 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー173のシグナルが変化
4178c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4180c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー179のシグナルが変化
4185c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー169のシグナルが変化
4186c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー15360のシグナルが変化
4186c8 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー15365のシグナルが変化
4187c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4325のシグナルが変化
4188c5 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー169のシグナルが変化
4191c6 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4336のシグナルが変化
4199c4 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー173のシグナルが変化
4200c1 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー15366のシグナルが変化
4205c1 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー167のシグナルが変化
4209c3 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー4321のシグナルが変化
4212c3 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー205のシグナルが変化
4212c4 状態(state)を導入バー位置依存を検出: 系列を17本ずらすとバー299のシグナルが変化

通算最良個体のコード

適応度 +2.788 / c2 状態(state)を導入
# 狙い: 状態(state)を導入
def signal(window, state):
    closes = [b['c'] for b in window]
    fast = sum(closes[-10:]) / 10
    slow = sum(closes[-30:]) / 30
    closes = [b['c'] for b in window]
    fast = sum(closes[-10:]) / 10
    slow = sum(closes[-30:]) / 30
    prev_fast = sum(closes[-11:-1]) / 10
    prev_slow = sum(closes[-31:-1]) / 30
    state['ref'] = state.get('ref') or window[-1]['c']
    state['peak'] = max(state.get('peak', 0.0), window[-1]['c'])
    if window[-1]['c'] < state.get('peak', 0.0) * 0.937:
        state['peak'] = 0.0
        return -1
    if window[-1]['c'] < state['ref'] * 0.9519:
        state['ref'] = window[-1]['c']
        return -1
    if prev_fast >= prev_slow or fast > slow:
        return 1
    if prev_fast >= prev_slow or fast < slow:
        return -1
    return 0

取引履歴 — 適応度1位の個体(R4027)

c9 外来シード素通し(passivbot深押し(帯-0.7%)) / 適応度 -0.211。集計値だけでは「たまたま当たった1発」か「積み上げた結果」かが分からないので1件ずつ出す。

seg1(進化用)2022-01-17〜2023-05-30 市場 -20.29%

残高
$89.57
リターン
-10.43%
最大DD
55.4%
取引
51
勝率
33%
建玉率
66.5%
上位3件で損益の 1210% を占める。積み上げではなく数発に依存している。
#建玉手仕舞い本建値仕切損益理由残高
12022-02-18 01:002022-02-18 21:0054,827,0004,596,198-4.92%損切り$95.08
22022-02-19 01:002022-02-21 17:00164,594,0004,359,848-5.24%損切り$90.09
32022-02-21 21:002022-02-24 09:00154,329,0004,086,870-5.73%損切り$84.93
42022-02-24 13:002022-02-25 05:0044,020,0004,586,162+14.13%利確$96.93
52022-02-28 05:002022-03-01 05:0064,351,0004,934,707+13.46%利確$109.97
62022-03-05 01:002022-03-07 09:00144,676,0004,377,575-6.52%損切り$102.80
72022-03-07 13:002022-03-09 17:00134,361,0004,854,587+11.36%利確$114.48
82022-03-10 17:002022-03-22 13:00714,552,0005,122,729+12.58%利確$128.89
92022-04-07 01:002022-04-09 05:00135,473,0005,254,131-4.14%損切り$123.55
102022-04-09 09:002022-04-12 01:00165,261,0005,045,255-4.24%損切り$118.30
112022-04-12 05:002022-04-21 17:00575,023,0005,435,998+8.27%利確$128.08
122022-04-22 09:002022-04-25 09:00185,205,0004,994,769-4.18%損切り$122.72
132022-04-25 13:002022-04-27 01:0095,044,0004,866,994-3.65%損切り$118.24
142022-04-27 05:002022-05-06 01:00534,885,0004,668,271-4.58%損切り$112.82
152022-05-06 05:002022-05-08 09:00134,744,0004,528,445-4.69%損切り$107.54
162022-05-08 13:002022-05-09 17:0074,508,0004,311,462-4.50%損切り$102.69
172022-05-09 21:002022-05-10 01:0014,351,0004,129,091-5.24%損切り$97.31
182022-05-10 05:002022-05-12 05:00124,050,0003,788,177-6.61%損切り$90.88
192022-05-12 09:002022-06-13 13:001933,790,0003,388,985-10.72%損切り$81.14
202022-06-13 17:002022-06-13 21:0013,343,0003,098,394-7.46%損切り$75.09
212022-06-14 01:002022-06-14 09:0023,132,0002,864,130-8.69%損切り$68.57
222022-06-14 13:002022-06-18 13:00242,983,0002,670,293-10.62%損切り$61.29
232022-06-18 17:002022-07-19 21:001872,610,0003,181,803+21.96%利確$74.75
242022-07-25 13:002022-08-14 13:001202,981,0003,319,935+11.41%利確$83.28
252022-08-18 01:002022-08-19 13:0093,169,0003,051,380-3.86%損切り$80.07
262022-08-19 17:002022-08-20 05:0033,002,0002,881,695-4.15%損切り$76.74
272022-08-20 09:002022-08-27 21:00452,859,0002,734,105-4.51%損切り$73.28
282022-08-28 01:002022-09-07 17:00642,754,0002,975,622+8.09%利確$79.21
292022-09-07 21:002022-09-10 05:00142,719,0003,061,756+12.65%利確$89.23
302022-09-14 17:002022-09-19 09:00282,902,0002,742,358-5.64%損切り$84.19
312022-09-19 13:002022-09-27 21:00502,695,0002,937,019+9.02%利確$91.79
322022-09-28 13:002022-10-26 01:001652,716,0002,991,193+10.18%利確$101.13
332022-11-08 13:002022-11-08 17:0012,974,0002,884,452-3.16%損切り$97.94
342022-11-08 21:002022-11-09 01:0012,889,0002,794,158-3.43%損切り$94.58
352022-11-09 05:002022-11-09 17:0032,684,0002,542,386-5.42%損切り$89.46
362022-11-09 21:002022-11-10 01:0012,605,0002,442,276-6.39%損切り$83.74
372022-11-10 05:002022-11-14 01:00232,473,0002,284,629-7.76%損切り$77.25
382022-11-14 05:002023-01-14 09:003672,293,0002,599,532+13.41%利確$87.61
392023-02-09 13:002023-02-10 01:0032,971,0002,895,256-2.70%損切り$85.25
402023-02-10 05:002023-02-16 01:00352,906,0003,070,524+5.70%利確$90.11
412023-02-25 13:002023-03-03 09:00353,157,0003,038,997-3.88%損切り$86.61
422023-03-03 13:002023-03-09 05:00343,066,0002,960,329-3.59%損切り$83.50
432023-03-09 09:002023-03-10 01:0042,978,0002,904,080-2.63%損切り$81.31
442023-03-10 05:002023-03-10 09:0012,848,0002,757,681-3.32%損切り$78.61
452023-03-10 13:002023-03-13 05:00162,757,0002,948,025+6.97%利確$84.09
462023-04-20 09:002023-04-21 01:0043,896,0003,789,515-2.88%損切り$81.67
472023-04-21 05:002023-04-22 01:0053,777,0003,664,173-3.13%損切り$79.11
482023-04-22 05:002023-04-26 21:00283,663,0003,905,353+6.66%利確$84.38
492023-04-27 05:002023-05-12 13:00923,738,0003,561,041-4.88%損切り$80.26
502023-05-12 17:002023-05-23 13:00653,556,0003,801,516+6.95%利確$85.84
512023-05-25 01:002023-05-28 13:00213,671,0003,828,748+4.34%利確$89.57

seg2(進化用)2023-05-30〜2024-10-09 市場 +137.78%

残高
$147.90
リターン
+47.90%
最大DD
27.5%
取引
37
勝率
43%
建玉率
56.5%
上位3件で損益の 95% を占める。積み上げではなく数発に依存している。
#建玉手仕舞い本建値仕切損益理由残高
12023-07-10 09:002023-07-13 01:00164,304,0004,223,050-2.03%損切り$97.97
22023-07-13 05:002023-07-18 21:00344,213,0004,120,857-2.33%損切り$95.69
32023-07-19 01:002023-08-18 05:001814,143,0004,048,543-2.43%損切り$93.36
42023-08-18 09:002023-08-18 21:0033,917,0003,822,666-2.55%損切り$90.98
52023-08-19 01:002023-08-29 21:00653,790,0004,007,116+5.77%利確$96.23
62023-09-01 05:002023-09-11 21:00643,819,0003,711,983-2.95%損切り$93.39
72023-09-12 01:002023-09-12 17:0043,691,0003,822,391+3.60%利確$96.76
82023-09-25 13:002023-09-28 21:00203,895,0004,014,839+3.12%利確$99.77
92023-10-11 13:002023-10-16 21:00324,037,0004,193,956+3.93%利確$103.69
102023-11-15 05:002023-11-16 01:0055,320,0005,637,839+6.02%利確$109.93
112023-11-18 01:002023-12-03 05:00915,403,0005,804,780+7.48%利確$118.15
122023-12-12 05:002024-01-02 09:001275,976,0006,394,632+7.05%利確$126.48
132024-01-13 05:002024-01-23 01:00596,312,0005,921,969-6.32%損切り$118.49
142024-01-23 05:002024-01-28 13:00325,911,0006,300,766+6.64%利確$126.35
152024-02-01 13:002024-02-08 09:00416,184,0006,571,088+6.30%利確$134.31
162024-03-17 09:002024-04-08 17:001349,734,00010,889,443+11.91%利確$150.32
172024-04-13 05:002024-04-14 05:00610,301,0009,904,178-4.00%損切り$144.31
182024-04-14 09:002024-04-17 21:00219,979,0009,473,549-5.21%損切り$136.79
192024-04-18 01:002024-05-19 17:001909,385,00010,526,912+12.21%利確$153.50
202024-06-11 13:002024-06-11 17:00110,807,00010,602,531-2.04%損切り$150.37
212024-06-11 21:002024-06-15 01:001910,535,00010,314,317-2.24%損切り$147.00
222024-06-15 09:002024-06-24 09:005410,411,00010,098,451-3.15%損切り$142.37
232024-06-24 13:002024-06-24 17:00110,073,0009,876,320-2.10%損切り$139.38
242024-06-24 21:002024-06-25 01:0019,785,0009,549,934-2.55%損切り$135.83
252024-06-25 05:002024-07-01 05:00369,489,00010,059,332+6.05%利確$144.05
262024-07-03 13:002024-07-04 09:0059,879,0009,626,368-2.70%損切り$140.16
272024-07-04 13:002024-07-04 17:0019,574,0009,269,998-3.32%損切り$135.50
282024-07-04 21:002024-07-05 09:0039,325,0008,994,750-3.69%損切り$130.51
292024-07-05 13:002024-07-15 05:00588,893,0009,683,293+8.93%利確$142.16
302024-07-25 13:002024-07-27 21:00149,789,00010,520,722+7.52%利確$152.85
312024-07-31 05:002024-08-01 05:00610,115,0009,740,532-3.85%損切り$146.97
322024-08-01 09:002024-08-02 21:0099,706,0009,320,492-4.12%損切り$140.92
332024-08-03 01:002024-08-04 01:0069,350,0008,875,700-5.22%損切り$133.57
342024-08-04 05:002024-08-05 09:0078,850,0008,388,274-5.36%損切り$126.41
352024-08-05 13:002024-08-05 21:0027,810,0007,169,759-8.34%損切り$115.88
362024-08-06 01:002024-09-26 21:003117,849,0009,399,180+19.80%利確$138.82
372024-10-02 05:002024-10-07 09:00318,880,0009,457,471+6.55%利確$147.90

select(進化用)2024-10-09〜2025-09-06 市場 +76.76%

残高
$113.83
リターン
+13.83%
最大DD
35.3%
取引
31
勝率
39%
建玉率
55.1%
上位3件で損益の 198% を占める。積み上げではなく数発に依存している。
#建玉手仕舞い本建値仕切損益理由残高
12024-11-05 05:002024-11-06 09:00710,344,00011,003,621+6.42%利確$106.42
22024-11-27 05:002024-12-05 09:004914,091,00015,435,544+9.59%利確$116.62
32024-12-11 01:002024-12-15 21:002914,603,00015,831,374+8.46%利確$126.48
42024-12-20 05:002024-12-20 17:00315,334,00014,618,367-4.81%損切り$120.40
52024-12-20 21:002025-01-18 01:0016914,572,00016,285,543+11.80%利確$134.61
62025-01-27 13:002025-01-27 17:00115,882,00015,258,650-4.07%損切り$129.13
72025-01-27 21:002025-01-28 09:00315,259,00014,584,677-4.56%損切り$123.24
82025-01-29 09:002025-02-03 05:002915,821,00015,053,470-4.99%損切り$117.08
92025-02-03 09:002025-02-03 13:00115,231,00014,567,757-4.50%損切り$111.82
102025-02-03 17:002025-02-19 01:009214,930,00014,248,398-4.71%損切り$106.55
112025-02-19 05:002025-02-25 05:003614,322,00013,954,006-2.72%損切り$103.66
122025-02-25 09:002025-02-25 13:00113,722,00013,235,268-3.69%損切り$99.83
132025-02-25 17:002025-02-27 01:00813,365,00012,774,974-4.56%損切り$95.28
142025-02-27 05:002025-03-03 01:002312,492,00013,935,040+11.60%利確$106.33
152025-03-04 05:002025-03-10 05:003612,900,00011,995,090-7.15%損切り$98.72
162025-03-10 09:002025-04-07 05:0016711,930,00011,149,327-6.68%損切り$92.13
172025-04-07 09:002025-04-07 13:00111,395,00010,823,301-5.16%損切り$87.37
182025-04-07 17:002025-04-10 01:001410,954,00012,231,928+11.71%利確$97.60
192025-04-11 01:002025-04-23 05:007311,382,00013,016,540+14.41%利確$111.67
202025-05-30 05:002025-06-06 01:004115,286,00014,820,121-3.19%損切り$108.10
212025-06-06 05:002025-06-09 17:002114,684,00015,482,911+5.48%利確$114.03
222025-06-13 09:002025-06-22 21:005715,190,00014,788,558-2.79%損切り$110.85
232025-06-23 01:002025-06-24 05:00714,482,00015,342,587+5.98%利確$117.48
242025-07-01 21:002025-07-03 17:001115,267,00015,848,609+3.85%利確$122.01
252025-07-25 13:002025-08-03 01:005117,033,00016,552,870-2.96%損切り$118.39
262025-08-03 05:002025-08-10 09:004316,576,00017,435,194+5.23%利確$124.57
272025-08-16 01:002025-08-19 21:002317,267,00016,830,905-2.67%損切り$121.25
282025-08-20 01:002025-08-25 01:003016,837,00016,430,729-2.56%損切り$118.14
292025-08-25 05:002025-08-26 09:00716,559,00016,157,303-2.57%損切り$115.10
302025-08-26 13:002025-09-01 13:003616,269,00015,810,402-2.96%損切り$111.69
312025-09-01 21:002025-09-06 13:002816,036,00016,368,000+1.92%期末清算$113.83

艦隊 [btc4h] — 最良個体群の長期運用

進化ループとは別枠で回している(2分ごとに3データセットの窓を1つずつ進める)。銘柄・時間軸をまたいで生き残る艦こそ本物に近い。進化ループは高速な探索だが個体が長期でどう振る舞うかは分からない(進化用で$151だった個体が holdout で取引0回だった実例がある)。窓240本(40日)ずつ前に進めて累積の記録を作る。最終holdoutには入らない。 現在56周目。2周目以降は同一履歴の再消化であり新しい証拠は生まない(局面を一巡させるための指標)。誰も見ていないバーでの成績は下のlive前方成績で別枠に記録している。
tick
1880
周回
56
艦数
28
平均残高
$100.93
中位残高
$100.00
プラスの艦
9/28
建玉した艦
11/28
[btc4h] 上位5隻の残高推移(元手 $100)(tick)71.7583.2894.81106.35117.8814811531158116311681173117811831f12a2aec1951d69c5e9e09ff55483f3466072138
この区間で退役した艦 869隻。累積マイナスが6tick継続、または8連敗で退役し、殿堂→遺伝子バンクの順で補充する(就役直後4tickは猶予)。

live前方成績 [btc4h] — パック終端より後の未見バー

本命の記録はこちら。パック生成時点で誰も見ていない確定バーだけを、重複なしの窓で一度きり消化した成績である(窓を重ねると勝敗の数が水増しされる)。周回成績は同一履歴の再消化なので、この成績と同じ列には決して混ぜない。標本が薄いうちは退役判定にも使わない。
確定バー 359本 / 消費済み 240本 / 次窓(1窓=120本)まであと 1本 — 蓄積待ち(119/120本)。1窓ぶん溜まるまで成績は出ない
最新の確定バー 2026-10-03 09:00:00+09:00 / 確認 2026-10-03T06:13:34
live tick窓市場艦隊中位市場比(中位)プラスの艦取引(合計)記録時刻
12026-08-04 17:00 → 2026-08-24 13:00+22.28%$100.000.8180/2802026-08-24T08:01:03
22026-08-24 17:00 → 2026-09-13 13:00-4.96%$100.001.0520/2802026-09-13T08:01:40
12026-08-04 17:00 → 2026-08-24 13:00+22.28%$100.000.8180/2802026-09-14T11:26:40
22026-08-24 17:00 → 2026-09-13 13:00-4.96%$100.000.8600/2802026-09-14T11:26:48
12026-08-04 17:00 → 2026-08-24 13:00+22.28%$100.000.8180/2802026-09-30T15:22:37
22026-08-24 17:00 → 2026-09-13 13:00-4.96%$100.000.8600/2802026-09-30T15:22:46
各行が1つのlive窓(120本・重複なし)。「艦隊中位」はその時点の全艦のlive累積残高の中位、「市場」はその窓での市場リターン。

艦隊の一覧 [btc4h] — 周回成績とlive成績

艦残高市場市場比超過/ticktick勝負勝率連敗累損取引取引/ticklive残高live市場live市場比live ticklive勝live取引出自
f12a2aecf5$106.49$180.430.590-4.68%116555%00444.00——————殿堂 R3498
1951d69cc8$105.98$176.950.599-5.54%94544%00444.89——————殿堂 R4019
5e9e09ffb7$103.55$199.440.519-7.87%85362%00465.75——————殿堂 R3972
55483f3481$102.88$118.200.870-3.41%420100%0020.50——————殿堂 R3372
6607213842$102.88$118.200.870-3.41%420100%0020.50——————殿堂 R4021
d36f458afa$102.27$118.200.865-3.55%410100%0010.25——————殿堂 R4022
b89cdba967$102.11$118.200.864-3.59%41150%1020.50——————殿堂 R3879
c214c8fce4$101.00$176.950.571-6.04%94544%00444.89——————殿堂 R3971
e53b562353$101.00$176.950.571-6.04%94544%00444.89——————殿堂 R3879
16dcd48c70$100.00$199.440.501-8.27%800—0000.00——————殿堂 R4024
4ecc1bad9e$100.00$100.001.000+0.00%000—0000.00——————殿堂 R4027
e85d5fd9e4$100.00$100.001.000+0.00%000—0000.00——————殿堂 R4206
afdfb01a96$100.00$118.200.846-4.09%400—0000.00——————殿堂 R3974
bd56b84089$100.00$199.440.501-8.27%800—0000.00——————殿堂 R3498
e3bf5e799e$100.00$100.001.000+0.00%000—0000.00——————殿堂 R3879
bd56b84089$100.00$199.440.501-8.27%800—0000.00——————殿堂 R3879
1dd8e50122$100.00$100.001.000+0.00%000—0000.00——————殿堂 R4025
3f35067ac7$100.00$100.001.000+0.00%000—0000.00——————殿堂 R4026
1af320eaeb$100.00$176.950.565-6.14%900—0000.00——————殿堂 R3367
54760edc25$100.00$113.400.882-2.07%600—0000.00——————殿堂 R4213
a50a875d8d$100.00$199.440.501-8.27%800—0000.00——————殿堂 R4024
734a003a1b$100.00$100.001.000+0.00%000—0000.00——————殿堂 R3879
4da6c26642$100.00$199.440.501-8.27%800—0000.00——————殿堂 R4020
414d0921aa$100.00$113.400.882-2.07%600—0000.00——————殿堂 R4024
b1ec8d08f0$100.00$113.400.882-2.07%600—0000.00——————殿堂 R4021
528c4ae784$100.00$118.200.846-4.09%400—0000.00——————殿堂 R4026
7c2de187ba$99.17$170.500.582-5.27%101150%1220.20——————殿堂 R4213
59eaccbf44$98.80$118.200.836-4.38%41150%1220.50——————殿堂 R4022

各艦のコード

f12a2aecf5 — 残高 $106.49 / 市場比 0.590 / 11tick / 取引44回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25 and window[-1].get('tb', 0.0) / max(sum((_x.get('tb', 0.0) for _x in window[-90:])) / 90, 1e-09) > window[-1].get('ts', 0.0) / max(sum((_x.get('ts', 0.0) for _x in window[-14:])) / 14, 1e-09) * 1.0093:
        return -1
    return 0
1951d69cc8 — 残高 $105.98 / 市場比 0.599 / 9tick / 取引44回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.84, "sl": 8.6, "tp": 2.9, "atr_n": 20, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00336:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.000952
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

5e9e09ffb7 — 残高 $103.55 / 市場比 0.519 / 8tick / 取引46回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 9.1, "tp": 7.5, "atr_n": 20, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

55483f3481 — 残高 $102.88 / 市場比 0.870 / 4tick / 取引2回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -7.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0
6607213842 — 残高 $102.88 / 市場比 0.870 / 4tick / 取引2回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -8.1e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0
d36f458afa — 残高 $102.27 / 市場比 0.865 / 4tick / 取引1回
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        if not window[-1]['c'] >= sum((_x['c'] * _x['v'] for _x in window[-90:])) / max(sum((_x['v'] for _x in window[-90:])), 1e-09):
            return 1
        else:
            return 0
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0
b89cdba967 — 残高 $102.11 / 市場比 0.864 / 4tick / 取引2回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "taker", "alpha": "squeeze", "agg": 1.01, "sl": 5.2, "tp": 6.9, "atr_n": 14, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": true}
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x["c"] for x in window]
    fr = b["fr"]
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and c[-1] > sma10:
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0

c214c8fce4 — 残高 $101.00 / 市場比 0.571 / 9tick / 取引44回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.74, "sl": 8.3, "tp": 8.8, "atr_n": 20, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00296:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001081
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

e53b562353 — 残高 $101.00 / 市場比 0.571 / 9tick / 取引44回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00296:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001081
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
16dcd48c70 — 残高 $100.00 / 市場比 0.501 / 8tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    return 0
4ecc1bad9e — 残高 $100.00 / 市場比 1.000 / 0tick / 取引0回
# 狙い: 外来シード素通し(passivbot深押し(帯-0.7%))
# 外来シード: passivbot族の変種(実証済み勝ち筋の周辺探索 2026-08-25)
def signal(window, state):
    _exec = 'maker'
    closes = [b["c"] for b in window]
    def ema(vals, n):
        k = 2 / (n + 1)
        e = vals[0]
        for v in vals[1:]:
            e = v * k + e * (1 - k)
        return e
    e_fast = ema(closes[-120:], 30)
    e_slow = ema(closes[-120:], 90)
    if closes[-1] < min(e_fast, e_slow) * 0.993:
        return 1
    return 0

e85d5fd9e4 — 残高 $100.00 / 市場比 1.000 / 0tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 10.8, "tp": 6.2, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": true}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    if b["fr"] > 0.0003:
        need = need * 1.5
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

afdfb01a96 — 残高 $100.00 / 市場比 0.846 / 4tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "squeeze", "agg": 0.93, "sl": 4.1, "tp": 4.5, "atr_n": 20, "g_down": true, "g_vol": true, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00372:
        return -1
    rng_ = sum(abs(c[i] - c[i - 1]) for i in range(-30, 0)) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    fr = b["fr"]
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -0.000108 and sma10 > sma30 and c[-1] > sma10:
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0

bd56b84089 — 残高 $100.00 / 市場比 0.501 / 8tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "btclead", "agg": 0.57, "sl": 9.1, "tp": 7.5, "atr_n": 20, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    v = [x["bu"] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = (v[-1] / v[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0

e3bf5e799e — 残高 $100.00 / 市場比 1.000 / 0tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 11.8, "tp": 9.8, "atr_n": 14, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

bd56b84089 — 残高 $100.00 / 市場比 0.501 / 8tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "btclead", "agg": 0.57, "sl": 9.1, "tp": 7.5, "atr_n": 20, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    v = [x["bu"] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = (v[-1] / v[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0

1dd8e50122 — 残高 $100.00 / 市場比 1.000 / 0tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 8.3, "tp": 8.8, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

3f35067ac7 — 残高 $100.00 / 市場比 1.000 / 0tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00208:
        return -1
    sma20 = sum(c[-20:]) / 20
    sma60 = sum(c[-60:]) / 60
    need = 0.001923
    if sma20 < sma60 * 0.9985:
        return -1
    if c[-1] < sma20 * (1 - need):
        return 1
    return 0
1af320eaeb — 残高 $100.00 / 市場比 0.565 / 9tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    if b['t1'] < -0.08:
        return -1
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0
54760edc25 — 残高 $100.00 / 市場比 0.882 / 6tick / 取引0回
# 狙い: else分岐を追加
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    elif window[-1]['o'] <= sum((_x['l'] for _x in window[-30:])) / 30 * 1.0351 or (c >= sma30 and window[-1]['l'] < window[-1]['c']):
        return -1
    return 0.0
a50a875d8d — 残高 $100.00 / 市場比 0.501 / 8tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0
734a003a1b — 残高 $100.00 / 市場比 1.000 / 0tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00296:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001081
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    return 0
4da6c26642 — 残高 $100.00 / 市場比 0.501 / 8tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "btclead", "agg": 0.57, "sl": 11.8, "tp": 7.5, "atr_n": 14, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    v = [x["bu"] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = (v[-1] / v[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0

414d0921aa — 残高 $100.00 / 市場比 0.882 / 6tick / 取引0回
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        if sum((_x['l'] for _x in window[-10:])) / 10 > sum((_x['c'] for _x in window[-60:])) / 60 * 0.9909:
            return 1
        else:
            return 0
    if gap < 0:
        return -1
    return 0
b1ec8d08f0 — 残高 $100.00 / 市場比 0.882 / 6tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.57, "sl": 4.5, "tp": 7.5, "atr_n": 20, "g_down": true, "g_vol": false, "g_t1": true, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    if b["t1"] < -0.08:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

528c4ae784 — 残高 $100.00 / 市場比 0.846 / 4tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "btclead", "agg": 0.73, "sl": 4.7, "tp": 5.1, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": true, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00292:
        return -1
    if b["t1"] < -0.08:
        return -1
    v = [x["bu"] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.001644
    gap = (v[-1] / v[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0

7c2de187ba — 残高 $99.17 / 市場比 0.582 / 10tick / 取引2回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    return 0.0
59eaccbf44 — 残高 $98.80 / 市場比 0.836 / 4tick / 取引2回
# 狙い: 文レベル交叉(過去の最良個体と組み替え・データフロー解析つき)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    return 0.0
コードの見た目が人間にとって「正しい」形かどうかは基準にしない。たとえば分母が本数と一致しない移動平均は、人間の目には壊れて見えても「係数の違う別の指標」であって、それ自体が不正ではない。人間的な正しさに頼らずパターンを見つけるのがこの基盤の趣旨なので、判定は継続性と統計で行う。具体的には勝敗数・市場比・巡回シフト検定を見る。取引数が一桁の艦は、成績が良くても統計として何も言えない点だけは注意する。
残高ではなく「市場比」と「超過/tick」で比較すること。艦は就役タイミングが違うので tick 数も基準の市場も違う。市場比は残高÷同じ窓を単純保有した場合で、1.0超なら市場を上回っている。一番重要なのは継続してプラスを上げられるかで、残高は当たった局面の大きさに引きずられる。取引/tick が小さく勝率が高い艦は「変化を掴んだときだけ取引する」形になっている。
艦の構造 中位
175
艦の構造 最大
325
複雑度の目標
900
ASTノード数。テンプレートは133。構造が育つほど様々な局面に対応できるはずなので、中位が目標に近づいているかを見る。目標未満の個体には単純化をかけない(ラチェット)。

艦隊 [btc5m] — 最良個体群の長期運用

進化ループとは別枠で回している(2分ごとに3データセットの窓を1つずつ進める)。銘柄・時間軸をまたいで生き残る艦こそ本物に近い。進化ループは高速な探索だが個体が長期でどう振る舞うかは分からない(進化用で$151だった個体が holdout で取引0回だった実例がある)。窓240本(40日)ずつ前に進めて累積の記録を作る。最終holdoutには入らない。 現在313周目。2周目以降は同一履歴の再消化であり新しい証拠は生まない(局面を一巡させるための指標)。誰も見ていないバーでの成績は下のlive前方成績で別枠に記録している。
tick
1880
周回
313
艦数
28
平均残高
$100.07
中位残高
$100.00
プラスの艦
3/28
建玉した艦
3/28
[btc5m] 上位5隻の残高推移(元手 $100)(tick)96.4897.6098.7299.84100.961482153115801629167817271776182518741c0f0ff2fc92a8bd185af2f690b01c7230cac41a

live前方成績 [btc5m] — パック終端より後の未見バー

本命の記録はこちら。パック生成時点で誰も見ていない確定バーだけを、重複なしの窓で一度きり消化した成績である(窓を重ねると勝敗の数が水増しされる)。周回成績は同一履歴の再消化なので、この成績と同じ列には決して混ぜない。標本が薄いうちは退役判定にも使わない。
確定バー 17377本 / 消費済み 17280本 / 次窓(1窓=480本)まであと 383本
最新の確定バー 2026-10-03 15:05:00+09:00 / 確認 2026-10-03T06:14:01
live tick
36
記録のある艦
28/28
live中位残高
$100.00
live市場(中位)
$133.63
live市場比(中位)
0.748
liveでプラスの艦
0/28
live取引(合計)
102
live tick窓市場艦隊中位市場比(中位)プラスの艦取引(合計)記録時刻
72026-08-14 07:05 → 2026-08-15 23:00-0.88%$100.000.9940/2802026-09-30T15:24:01
82026-08-15 23:05 → 2026-08-17 15:00+0.57%$100.000.9890/2802026-09-30T15:24:10
92026-08-17 15:05 → 2026-08-19 07:00+1.95%$100.000.9700/2802026-09-30T15:24:10
102026-08-19 07:05 → 2026-08-20 23:00+10.49%$100.000.8780/2802026-09-30T15:24:19
112026-08-20 23:05 → 2026-08-22 15:00+7.74%$100.000.8150/2842026-09-30T15:24:27
122026-08-22 15:05 → 2026-08-24 07:00+0.46%$100.000.8110/2892026-09-30T15:24:35
132026-08-24 07:05 → 2026-08-25 23:00+1.74%$100.000.7970/28152026-09-30T15:24:43
142026-08-25 23:05 → 2026-08-27 15:00-0.08%$100.000.7980/28152026-09-30T15:24:51
152026-08-27 15:05 → 2026-08-29 07:00-1.43%$100.000.8090/28282026-09-30T15:24:59
162026-08-29 07:05 → 2026-08-30 23:00+1.91%$100.000.7940/28282026-09-30T15:25:10
172026-08-30 23:05 → 2026-09-01 15:00+0.11%$100.000.7930/28282026-09-30T15:25:21
182026-09-01 15:05 → 2026-09-03 07:00-2.96%$100.000.8170/28342026-09-30T15:25:29
192026-09-03 07:05 → 2026-09-04 23:00+1.30%$100.000.8070/28442026-09-30T15:25:29
202026-09-04 23:05 → 2026-09-06 15:00+1.02%$100.000.7990/28442026-09-30T15:25:38
212026-09-06 15:05 → 2026-09-08 07:00-2.26%$100.000.8170/28502026-09-30T15:25:47
222026-09-08 07:05 → 2026-09-09 23:00-0.93%$100.000.8250/28532026-09-30T15:25:56
232026-09-09 23:05 → 2026-09-11 15:00-1.58%$100.000.8380/28592026-09-30T15:26:08
242026-09-11 15:05 → 2026-09-13 07:00-0.35%$100.000.8410/28592026-09-30T15:26:18
252026-09-13 07:05 → 2026-09-14 23:00+2.36%$100.000.8220/28592026-09-30T15:26:26
262026-09-14 23:05 → 2026-09-16 15:00-2.67%$100.000.8440/28712026-09-30T15:26:33
272026-09-16 15:05 → 2026-09-18 07:00+0.30%$100.000.8420/28712026-09-30T15:26:41
282026-09-18 07:05 → 2026-09-19 23:00+6.95%$100.000.7870/28712026-09-30T15:26:48
292026-09-19 23:05 → 2026-09-21 15:00+0.52%$100.000.7830/28742026-09-30T15:26:56
302026-09-21 15:05 → 2026-09-23 07:00+5.77%$100.000.7400/28772026-09-30T15:27:06
312026-09-23 07:05 → 2026-09-24 23:00-1.31%$100.000.7500/28872026-09-30T15:27:16
322026-09-24 23:05 → 2026-09-26 15:00-1.24%$100.000.7600/28932026-09-30T15:27:24
332026-09-26 15:05 → 2026-09-28 07:00+0.72%$100.000.7540/28932026-09-30T15:27:31
342026-09-28 07:05 → 2026-09-29 23:00-0.57%$100.000.7580/28932026-09-30T15:27:39
352026-09-29 23:05 → 2026-10-01 15:00+1.13%$100.000.7500/28932026-10-01T06:06:24
362026-10-01 15:05 → 2026-10-03 07:00+0.22%$100.000.7480/281022026-10-02T22:07:14
各行が1つのlive窓(480本・重複なし)。「艦隊中位」はその時点の全艦のlive累積残高の中位、「市場」はその窓での市場リターン。

艦隊の一覧 [btc5m] — 周回成績とlive成績

艦残高市場市場比超過/ticktick勝負勝率連敗累損取引取引/ticklive残高live市場live市場比live ticklive勝live取引出自
1c0f0ff26a$100.65$98.101.026+1.29%210100%0010.50$95.21$133.630.71236336殿堂 R3580
fc92a8bd4d$100.65$98.101.026+1.29%210100%0010.50$95.16$133.630.71236533殿堂 R4005
185af2f639$100.65$98.101.026+1.29%210100%0010.50$95.54$133.630.71536533殿堂 R3723
90b01c7278$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3809
30cac41a0c$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3903
d569e4d8aa$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R4029
6ad955b9e9$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R4002
bf973cf4c9$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R4066
8300197364$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R4051
ea52fb8ff9$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3541
9fb6c0bfb1$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3933
790b1f7289$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3440
6b5b9dde9a$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3309
89aab326ef$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3815
c172f3d40b$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3771
d672b3c680$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3931
d433ffb26e$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3575
0ebd358f3e$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3907
f51c5cb490$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R4065
818639d634$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3440
f8bd442e13$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3612
025c49a233$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3881
1ca757ef65$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3666
7c5e01b9a9$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3342
c78abf543b$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3490
8d089a176b$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3815
6bc29b02e3$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R3345
2001dc8886$100.00$98.101.019+0.96%200—0000.00$100.00$133.630.7483600殿堂 R4081

各艦のコード

1c0f0ff26a — 残高 $100.65 / 市場比 1.026 / 2tick / 取引1回
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
    _exec = 'maker'
    closes = [b['c'] for b in window]

    def ema(vals, n):
        k = 2 / (n + 1)
        e = vals[0]
        for v in vals[1:]:
            e = v * k + e * (1 - k)
        return e
    e_fast = ema(closes[-120:], 30)
    e_slow = ema(closes[-120:], 90)
    if closes[-1] < min(e_fast, e_slow) * 0.993:
        if sum((_x['c'] * _x['v'] for _x in window[-90:])) / max(sum((_x['v'] for _x in window[-90:])), 1e-09) > window[-1]['l'] * 1.0929 or window[-1]['o'] > window[-1]['c']:
            return 1
        else:
            return -1
    return 0
fc92a8bd4d — 残高 $100.65 / 市場比 1.026 / 2tick / 取引1回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    closes = [b['c'] for b in window]

    def ema(vals, n):
        k = 2 / (n + 1)
        e = vals[0]
        for v in vals[1:]:
            e = v * k + e * (1 - k)
        return e
    e_fast = ema(closes[-120:], 30)
    e_slow = ema(closes[-120:], 90)
    state['peak'] = max(state.get('peak', 0.0), window[-1]['c'])
    if window[-1]['c'] < state.get('peak', 0.0) * 0.9642:
        state['peak'] = 0.0
        return -1
    if closes[-1] < min(e_fast, e_slow) * 0.993:
        if window[-1].get('ts', 0.0) / max(sum((_x.get('ts', 0.0) for _x in window[-120:])) / 120, 1e-09) <= window[-1]['hh']:
            return 1
        else:
            return 0
    return 0
185af2f639 — 残高 $100.65 / 市場比 1.026 / 2tick / 取引1回
# 狙い: 状態(state)を導入
def signal(window, state):
    _exec = 'maker'
    closes = [b['c'] for b in window]

    def ema(vals, n):
        k = 2 / (n + 1)
        e = vals[0]
        for v in vals[1:]:
            e = v * k + e * (1 - k)
        return e
    e_fast = ema(closes[-120:], 30)
    e_slow = ema(closes[-120:], 90)
    state['peak'] = max(state.get('peak', 0.0), window[-1]['c'])
    if window[-1]['c'] < state.get('peak', 0.0) * 0.9493:
        state['peak'] = 0.0
        return -1
    if closes[-1] < min(e_fast, e_slow) * 0.993:
        if window[-1].get('ts', 0.0) / max(sum((_x.get('ts', 0.0) for _x in window[-120:])) / 120, 1e-09) <= window[-1]['hh']:
            return 1
        else:
            return 0
    return 0
90b01c7278 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 15, "tp": 9.8, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

30cac41a0c — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 3.1, "tp": 6.8, "atr_n": 20, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

d569e4d8aa — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 9.1, "tp": 7.5, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

6ad955b9e9 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を追加
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if window[-1]['c'] >= window[-1]['o']:
        return -1
    return 0
bf973cf4c9 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if window[-1]['c'] >= window[-1]['o']:
        return -1
    return 0
8300197364 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016 or window[-1]['hh'] <= window[-1]['o'] / max(window[-2]['c'], 1e-09):
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
ea52fb8ff9 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
9fb6c0bfb1 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    return 0
790b1f7289 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を追加
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    if b['fr'] > 0.0003:
        need = need * 1.5
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
        return 1
    if gap < -need * 0.25:
        return -1
    if window[-1]['c'] > max((_x['h'] for _x in window[-45:])) * 0.9498:
        return -1
    return 0
6b5b9dde9a — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: else分岐を追加
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if b['t1'] < -0.08:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    elif sum((_x['v'] for _x in window[-45:])) / 45 / max(sum((_x['v'] for _x in window[-120:])) / 120, 1e-09) >= window[-1]['o'] / max(window[-2]['c'], 1e-09):
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
89aab326ef — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    if b['fr'] > 0.0003:
        need = need * 1.5
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])) and (not window[-1]['dw'] < sum((abs(window[-i]['c'] / max(window[-i - 1]['c'], 1e-09) - 1) for i in range(1, 120))) / 120):
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
c172f3d40b — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
        return 1
    if sum((_x['c'] * _x['v'] for _x in window[-120:])) / max(sum((_x['v'] for _x in window[-120:])), 1e-09) < sum((_x['h'] for _x in window[-90:])) / 90:
        return -1
    return 0
d672b3c680 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: else分岐を追加
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
        return 1
    elif window[-1].get('tb', 0.0) / max(sum((_x.get('tb', 0.0) for _x in window[-60:])) / 60, 1e-09) < sum((_x.get('fr', 0.0) for _x in window[-8:])) / 8 * 0.9591:
        return -1
    if gap < -need * 0.25:
        return -1
    return 0
d433ffb26e — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001356
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and (sum((_x.get('fr', 0.0) for _x in window[-120:])) / 120 < window[-1]['o'] / max(window[-2]['c'], 1e-09) * 1.0866 and sum((_x['h'] for _x in window[-30:])) / 30 < min((_x['l'] for _x in window[-8:]))):
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
0ebd358f3e — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "squeeze", "agg": 0.74, "sl": 6.7, "tp": 6.8, "atr_n": 10, "g_down": false, "g_vol": true, "g_t1": true, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    rng_ = sum(abs(c[i] - c[i - 1]) for i in range(-30, 0)) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    if b["t1"] < -0.08:
        return -1
    fr = b["fr"]
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -0.000135 and sma10 > sma30 and c[-1] > sma10:
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0

f51c5cb490 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25 and (window[-1]['h'] - max(window[-1]['c'], window[-1]['o'])) / max(window[-1]['h'] - window[-1]['l'], 1e-09) > sum((1 for i in range(1, 120) if (window[-i]['c'] - window[-i - 1]['c']) * (window[-i - 1]['c'] - window[-i - 2]['c']) > 0)) / 120:
        return -1
    return 0
818639d634 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を追加
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    if b['fr'] > 0.0003:
        need = need * 1.5
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
        return 1
    if gap < -need * 0.25:
        return -1
    if window[-1].get('u', 1.0) / max(window[-120].get('u', 1.0), 1e-09) <= window[-1]['c'] / max(min((_x['l'] for _x in window[-30:])), 1e-09):
        return -1
    return 0
f8bd442e13 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00232 or sum((_x['l'] for _x in window[-14:])) / 14 > window[-1]['c']:
        return -1
    rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001379
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
025c49a233 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    if b['fr'] > 0.0003:
        need = need * 1.5
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])) and (not window[-1]['dw'] < sum((abs(window[-i]['c'] / max(window[-i - 1]['c'], 1e-09) - 1) for i in range(1, 120))) / 120):
        return 1
    return 0
1ca757ef65 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001356
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and (sum((_x.get('fr', 0.0) for _x in window[-120:])) / 120 < window[-1]['o'] / max(window[-2]['c'], 1e-09) * 1.0866 and sum((_x['h'] for _x in window[-30:])) / 30 < min((_x['l'] for _x in window[-8:]))):
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
7c5e01b9a9 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00232 or sum((_x['l'] for _x in window[-14:])) / 14 > window[-1]['c']:
        return -1
    rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001379
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
c78abf543b — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00232 or sum((_x['l'] for _x in window[-14:])) / 14 > window[-1]['c']:
        return -1
    rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001379
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
8d089a176b — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    if b['fr'] > 0.0003:
        need = need * 1.5
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['h'] >= max((_x['h'] for _x in window[-8:])):
        return 1
    if gap < -need * 0.25 and window[-1]['o'] > window[-1]['c'] * 1.0216:
        return -1
    return 0
6bc29b02e3 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need and window[-1]['c'] / max(window[-45]['c'], 1e-09) <= sum((_x.get('tb', 0.0) for _x in window[-60:])) / max(sum((_x.get('ts', 0.0) for _x in window[-60:])), 1e-09):
        if window[-1]['o'] < max((_x['h'] for _x in window[-20:])):
            return 1
        else:
            return -1
    return 0
2001dc8886 — 残高 $100.00 / 市場比 1.019 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.52, "sl": 6.4, "tp": 5.2, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": true}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00208:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001538
    if b["fr"] > 0.0003:
        need = need * 1.5
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

コードの見た目が人間にとって「正しい」形かどうかは基準にしない。たとえば分母が本数と一致しない移動平均は、人間の目には壊れて見えても「係数の違う別の指標」であって、それ自体が不正ではない。人間的な正しさに頼らずパターンを見つけるのがこの基盤の趣旨なので、判定は継続性と統計で行う。具体的には勝敗数・市場比・巡回シフト検定を見る。取引数が一桁の艦は、成績が良くても統計として何も言えない点だけは注意する。
残高ではなく「市場比」と「超過/tick」で比較すること。艦は就役タイミングが違うので tick 数も基準の市場も違う。市場比は残高÷同じ窓を単純保有した場合で、1.0超なら市場を上回っている。一番重要なのは継続してプラスを上げられるかで、残高は当たった局面の大きさに引きずられる。取引/tick が小さく勝率が高い艦は「変化を掴んだときだけ取引する」形になっている。
艦の構造 中位
247
艦の構造 最大
320
複雑度の目標
900
ASTノード数。テンプレートは133。構造が育つほど様々な局面に対応できるはずなので、中位が目標に近づいているかを見る。目標未満の個体には単純化をかけない(ラチェット)。

艦隊 [eth4h] — 最良個体群の長期運用

進化ループとは別枠で回している(2分ごとに3データセットの窓を1つずつ進める)。銘柄・時間軸をまたいで生き残る艦こそ本物に近い。進化ループは高速な探索だが個体が長期でどう振る舞うかは分からない(進化用で$151だった個体が holdout で取引0回だった実例がある)。窓240本(40日)ずつ前に進めて累積の記録を作る。最終holdoutには入らない。 現在56周目。2周目以降は同一履歴の再消化であり新しい証拠は生まない(局面を一巡させるための指標)。誰も見ていないバーでの成績は下のlive前方成績で別枠に記録している。
tick
1880
周回
56
艦数
28
平均残高
$99.83
中位残高
$100.00
プラスの艦
3/28
建玉した艦
9/28
[eth4h] 上位5隻の残高推移(元手 $100)(tick)40.5365.9791.42116.86142.30148115311581163116811731178118314ecc1bad18064f3955483f34f75d0e9ce85d5fd9
この区間で退役した艦 944隻。累積マイナスが6tick継続、または8連敗で退役し、殿堂→遺伝子バンクの順で補充する(就役直後4tickは猶予)。

live前方成績 [eth4h] — パック終端より後の未見バー

本命の記録はこちら。パック生成時点で誰も見ていない確定バーだけを、重複なしの窓で一度きり消化した成績である(窓を重ねると勝敗の数が水増しされる)。周回成績は同一履歴の再消化なので、この成績と同じ列には決して混ぜない。標本が薄いうちは退役判定にも使わない。
確定バー 359本 / 消費済み 240本 / 次窓(1窓=120本)まであと 1本 — 蓄積待ち(119/120本)。1窓ぶん溜まるまで成績は出ない
最新の確定バー 2026-10-03 09:00:00+09:00 / 確認 2026-10-03T06:13:51
live tick窓市場艦隊中位市場比(中位)プラスの艦取引(合計)記録時刻
12026-08-04 17:00 → 2026-08-24 13:00+32.47%$100.000.7550/2802026-08-24T08:01:27
22026-08-24 17:00 → 2026-09-13 13:00-2.38%$100.001.0240/2802026-09-13T08:02:04
12026-08-04 17:00 → 2026-08-24 13:00+32.47%$100.000.7550/2802026-09-14T11:27:03
22026-08-24 17:00 → 2026-09-13 13:00-2.38%$100.000.7730/2802026-09-14T11:27:19
12026-08-04 17:00 → 2026-08-24 13:00+32.47%$100.000.7550/2802026-09-30T15:22:59
22026-08-24 17:00 → 2026-09-13 13:00-2.38%$100.000.7730/2802026-09-30T15:23:10
各行が1つのlive窓(120本・重複なし)。「艦隊中位」はその時点の全艦のlive累積残高の中位、「市場」はその窓での市場リターン。

艦隊の一覧 [eth4h] — 周回成績とlive成績

艦残高市場市場比超過/ticktick勝負勝率連敗累損取引取引/ticklive残高live市場live市場比live ticklive勝live取引出自
4ecc1bad9e$119.23$177.410.672-12.41%320100%0031.00——————殿堂 R4027
18064f39ad$104.44$204.640.510-28.56%210100%0021.00——————殿堂 R3970
55483f3481$102.31$204.640.500-29.29%210100%0010.50——————殿堂 R3372
f75d0e9c86$100.00$130.330.767-6.41%400—0000.00——————殿堂 R4207
e85d5fd9e4$100.00$98.681.013+0.27%500—0000.00——————殿堂 R4206
e3bf5e799e$100.00$204.640.489-30.10%200—0000.00——————殿堂 R3879
1dd8e50122$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4025
16dcd48c70$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4024
4da6c26642$100.00$99.741.003+0.04%600—0000.00——————殿堂 R4020
f12a2aecf5$100.00$99.741.003+0.04%600—0000.00——————殿堂 R3498
734a003a1b$100.00$99.741.003+0.04%600—0000.00——————殿堂 R3879
d36f458afa$100.00$99.741.003+0.04%600—0000.00——————殿堂 R4022
c214c8fce4$100.00$204.640.489-30.10%200—0000.00——————殿堂 R3971
e53b562353$100.00$204.640.489-30.10%200—0000.00——————殿堂 R3879
1af320eaeb$100.00$204.640.489-30.10%200—0000.00——————殿堂 R3367
1951d69cc8$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4019
3e0df43bee$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4019
5e9e09ffb7$100.00$204.640.489-30.10%200—0000.00——————殿堂 R3972
54760edc25$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4213
414d0921aa$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4024
0d91b86cd4$100.00$204.640.489-30.10%200—0000.00——————殿堂 R4022
bc1f0e89f1$100.00$99.741.003+0.04%600—0000.00——————殿堂 R3972
b89cdba967$98.63$98.680.999-0.01%51150%0520.40——————殿堂 R3879
3a32b92cf3$98.14$204.640.480-30.75%21150%0242.00——————殿堂 R4023
afdfb01a96$97.23$140.940.690-5.17%71150%0520.29——————殿堂 R3974
6607213842$96.78$99.740.970-0.50%61150%0520.33——————殿堂 R4021
7c2de187ba$89.35$140.750.635-5.52%8020%2520.25——————殿堂 R4213
59eaccbf44$89.01$98.680.902-2.04%5020%2520.40——————殿堂 R4022

各艦のコード

4ecc1bad9e — 残高 $119.23 / 市場比 0.672 / 3tick / 取引3回
# 狙い: 外来シード素通し(passivbot深押し(帯-0.7%))
# 外来シード: passivbot族の変種(実証済み勝ち筋の周辺探索 2026-08-25)
def signal(window, state):
    _exec = 'maker'
    closes = [b["c"] for b in window]
    def ema(vals, n):
        k = 2 / (n + 1)
        e = vals[0]
        for v in vals[1:]:
            e = v * k + e * (1 - k)
        return e
    e_fast = ema(closes[-120:], 30)
    e_slow = ema(closes[-120:], 90)
    if closes[-1] < min(e_fast, e_slow) * 0.993:
        return 1
    return 0

18064f39ad — 残高 $104.44 / 市場比 0.510 / 2tick / 取引2回
# 狙い: 外来シード素通し(passivbot流サイクル)
# 外来シード: passivbot流 —— EMA帯の下に指値買い、マークアップで指値売り
# 原型(v8/Rust)はグリッドDCAで平均取得を下げるが、当エンジンは単一建玉のため
# 「初回エントリー+マークアップ利確」の周期のみを移植。損切りは置かず(sl=999ATR)
# 含み損は保有で耐える(原型と同じ思想。実現損失ゼロの代わりに含みDDを負う)
def signal(window, state):
    _exec = 'maker'
    closes = [b["c"] for b in window]
    def ema(vals, n):
        k = 2 / (n + 1)
        e = vals[0]
        for v in vals[1:]:
            e = v * k + e * (1 - k)
        return e
    e_fast = ema(closes[-120:], 30)
    e_slow = ema(closes[-120:], 90)
    band_lo = min(e_fast, e_slow) * 0.997
    if closes[-1] < band_lo:
        return 1
    return 0

55483f3481 — 残高 $102.31 / 市場比 0.500 / 2tick / 取引1回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -7.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0
f75d0e9c86 — 残高 $100.00 / 市場比 0.767 / 4tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 6.4, "tp": 5.2, "atr_n": 30, "g_down": true, "g_vol": true, "g_t1": true, "g_fr": true}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    rng_ = sum(abs(c[i] - c[i - 1]) for i in range(-30, 0)) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    if b["t1"] < -0.08:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    if b["fr"] > 0.0003:
        need = need * 1.5
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

e85d5fd9e4 — 残高 $100.00 / 市場比 1.013 / 5tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 10.8, "tp": 6.2, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": true}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    if b["fr"] > 0.0003:
        need = need * 1.5
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

e3bf5e799e — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 11.8, "tp": 9.8, "atr_n": 14, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

1dd8e50122 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 8.3, "tp": 8.8, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.0016:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

16dcd48c70 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    return 0
4da6c26642 — 残高 $100.00 / 市場比 1.003 / 6tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "btclead", "agg": 0.57, "sl": 11.8, "tp": 7.5, "atr_n": 14, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    v = [x["bu"] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = (v[-1] / v[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0

f12a2aecf5 — 残高 $100.00 / 市場比 1.003 / 6tick / 取引0回
# 狙い: 条件を厳しく/緩く
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    rng_ = sum((abs(c[i] - c[i - 1]) for i in range(-30, 0))) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25 and window[-1].get('tb', 0.0) / max(sum((_x.get('tb', 0.0) for _x in window[-90:])) / 90, 1e-09) > window[-1].get('ts', 0.0) / max(sum((_x.get('ts', 0.0) for _x in window[-14:])) / 14, 1e-09) * 1.0093:
        return -1
    return 0
734a003a1b — 残高 $100.00 / 市場比 1.003 / 6tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00296:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001081
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    return 0
d36f458afa — 残高 $100.00 / 市場比 1.003 / 6tick / 取引0回
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        if not window[-1]['c'] >= sum((_x['c'] * _x['v'] for _x in window[-90:])) / max(sum((_x['v'] for _x in window[-90:])), 1e-09):
            return 1
        else:
            return 0
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0
c214c8fce4 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.74, "sl": 8.3, "tp": 8.8, "atr_n": 20, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00296:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001081
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

e53b562353 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00296:
        return -1
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001081
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0
1af320eaeb — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    if c[-1] / c[-31] - 1 < -0.00228:
        return -1
    if b['t1'] < -0.08:
        return -1
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < 0:
        return -1
    return 0
1951d69cc8 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.84, "sl": 8.6, "tp": 2.9, "atr_n": 20, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00336:
        return -1
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.000952
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

3e0df43bee — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.57, "sl": 9.1, "tp": 7.5, "atr_n": 30, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

5e9e09ffb7 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "leadlag", "agg": 0.4, "sl": 9.1, "tp": 7.5, "atr_n": 20, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    u = [x["u"] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.002
    gap = (u[-1] / u[-6] - 1) - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    if gap < -need * 0.25:
        return -1
    return 0

54760edc25 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: else分岐を追加
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    elif window[-1]['o'] <= sum((_x['l'] for _x in window[-30:])) / 30 * 1.0351 or (c >= sma30 and window[-1]['l'] < window[-1]['c']):
        return -1
    return 0.0
414d0921aa — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 入れ子を深く(returnを条件で分ける)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    v = [x['bu'] for x in window]
    if v[-1] <= 0 or v[-6] <= 0:
        return 0
    need = 0.002105
    gap = v[-1] / v[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        if sum((_x['l'] for _x in window[-10:])) / 10 > sum((_x['c'] for _x in window[-60:])) / 60 * 0.9909:
            return 1
        else:
            return 0
    if gap < 0:
        return -1
    return 0
0d91b86cd4 — 残高 $100.00 / 市場比 0.489 / 2tick / 取引0回
# 狙い: 外来シード素通し(逆張りOFI(投げ拾い))
# 逆張りOFIシード: taker売りの投げ(ofi<閾値)+SMA下方乖離で指値買い
# ラボ実測(2026-08-14): eth TUNE+2.96%(32取引・勝率65%・DD4.3%) VALID+1.94%
# (VALID期間の市場は-1.34% → βでなくタイミング)。順張りOFIは全滅(-46〜-60%)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    tb = sum(x.get("tb", 0.0) for x in window[-10:])
    ts = sum(x.get("ts", 0.0) for x in window[-10:])
    tot = tb + ts
    if tot <= 0:
        return 0
    ofi = (tb - ts) / tot
    if b["t1"] < -0.05:
        return -1
    sma = sum(c[-30:]) / 30
    th = -0.5
    if b["t1"] < 0:
        th = th - 0.1
    if ofi < th and c[-1] < sma * 0.997:
        return 1
    if c[-1] > sma * 1.004:
        return -1
    return 0

bc1f0e89f1 — 残高 $100.00 / 市場比 1.003 / 6tick / 取引0回
# 狙い: 分岐を削除
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    u = [x['u'] for x in window]
    if u[-1] <= 0 or u[-6] <= 0:
        return 0
    need = 0.001404
    if b['fr'] > 0.0003:
        need = need * 1.5
    gap = u[-1] / u[-6] - 1 - (c[-1] / c[-6] - 1)
    if gap > need:
        return 1
    return 0
b89cdba967 — 残高 $98.63 / 市場比 0.999 / 5tick / 取引2回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "taker", "alpha": "squeeze", "agg": 1.01, "sl": 5.2, "tp": 6.9, "atr_n": 14, "g_down": false, "g_vol": false, "g_t1": false, "g_fr": true}
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x["c"] for x in window]
    fr = b["fr"]
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and c[-1] > sma10:
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0

3a32b92cf3 — 残高 $98.14 / 市場比 0.480 / 2tick / 取引4回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "meanrev", "agg": 0.52, "sl": 4.7, "tp": 7.0, "atr_n": 30, "g_down": true, "g_vol": false, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00208:
        return -1
    sma20 = sum(c[-20:]) / 20
    sma60 = sum(c[-60:]) / 60
    need = 0.001923
    if sma20 < sma60 * 0.9985:
        return -1
    if c[-1] < sma20 * (1 - need):
        return 1
    if c[-1] > sma20 * (1 + need):
        return -1
    return 0

afdfb01a96 — 残高 $97.23 / 市場比 0.690 / 7tick / 取引2回
# 狙い: 生成(気質DNA→部品合成。dna_gen.py)
# 生成(気質DNA): 気質から部品合成
# _tg: {"exec": "maker", "alpha": "squeeze", "agg": 0.93, "sl": 4.1, "tp": 4.5, "atr_n": 20, "g_down": true, "g_vol": true, "g_t1": false, "g_fr": false}
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x["c"] for x in window]
    if c[-1] / c[-31] - 1 < -0.00372:
        return -1
    rng_ = sum(abs(c[i] - c[i - 1]) for i in range(-30, 0)) / 30 / c[-1]
    if rng_ < 0.0002:
        return 0
    fr = b["fr"]
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -0.000108 and sma10 > sma30 and c[-1] > sma10:
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0

6607213842 — 残高 $96.78 / 市場比 0.970 / 6tick / 取引2回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -8.1e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    if fr >= 0 and c[-1] > sma10:
        return -1
    if c[-1] < sma30 * 0.997:
        return -1
    return 0
7c2de187ba — 残高 $89.35 / 市場比 0.635 / 8tick / 取引2回
# 狙い: 執行スタイル切替(taker成行 ⇔ maker指値)
def signal(window, state):
    _exec = 'maker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    return 0.0
59eaccbf44 — 残高 $89.01 / 市場比 0.902 / 5tick / 取引2回
# 狙い: 文レベル交叉(過去の最良個体と組み替え・データフロー解析つき)
def signal(window, state):
    _exec = 'taker'
    b = window[-1]
    c = [x['c'] for x in window]
    fr = b['fr']
    sma10 = sum(c[-10:]) / 10
    sma30 = sum(c[-30:]) / 30
    if fr < -9.9e-05 and sma10 > sma30 and (c[-1] > sma10):
        return 1
    return 0.0
コードの見た目が人間にとって「正しい」形かどうかは基準にしない。たとえば分母が本数と一致しない移動平均は、人間の目には壊れて見えても「係数の違う別の指標」であって、それ自体が不正ではない。人間的な正しさに頼らずパターンを見つけるのがこの基盤の趣旨なので、判定は継続性と統計で行う。具体的には勝敗数・市場比・巡回シフト検定を見る。取引数が一桁の艦は、成績が良くても統計として何も言えない点だけは注意する。
残高ではなく「市場比」と「超過/tick」で比較すること。艦は就役タイミングが違うので tick 数も基準の市場も違う。市場比は残高÷同じ窓を単純保有した場合で、1.0超なら市場を上回っている。一番重要なのは継続してプラスを上げられるかで、残高は当たった局面の大きさに引きずられる。取引/tick が小さく勝率が高い艦は「変化を掴んだときだけ取引する」形になっている。
艦の構造 中位
175
艦の構造 最大
325
複雑度の目標
900
ASTノード数。テンプレートは133。構造が育つほど様々な局面に対応できるはずなので、中位が目標に近づいているかを見る。目標未満の個体には単純化をかけない(ラチェット)。

探索の進捗と動的適応

最適化は探索である。固定の変異率では停滞しても小さく揺らし続けるため、1/5成功則で探索の強さを動かす。進捗の測定にも holdout は使わない(適応度の履歴だけを見る)。
改善率(目標 0.2)
0.00
停滞ラウンド
88
個体群の広がり
1.279
変異幅
3.500
構造成長率
0.800
殿堂の割合
0.400
1ラウンドの候補数
8
停滞が長い。変異幅と構造成長率を自動で上げているが抜け出せていない。目的関数か入力情報の側を疑う段階。
遺伝子バンク: 400体を保管(うち300体は複数の実験条件で再発見された)。評価手続きや入力を変えてもコードは持ち越す。持ち越した個体は新しい手続きで必ず再評価されるので、過去の適応度を信じ込む問題は起きない。

殿堂の個体が使っている入力

価格(OHLC)以外の入力を実際にコード中で参照している個体の数(殿堂103体中)。0が並ぶなら構造成長が回っていないか、その情報が選ばれていない。
入力使用個体数割合
出来高66%
時刻44%
曜日00%
ETH終値00%
テイカー買2726%
テイカー売2524%
約定件数22%
平均サイズ11%
BTC/USD3635%
含意為替22%
資金調達率3231%
建玉22%

特徴量の並べ替え検定 — 与えた入力は本当に使われているか

ある特徴の列だけをシャッフルして成績が落ちるかを測る。落ちなければその特徴は実質使われていない(飾り)。コードに書いてあっても到達しない分岐にあれば効かない。進化用で強く依存しているのに holdout で効いていないなら、その特徴で過剰適合しているという読み方になる。

seg1 元の成績 -10.43%(取引51回)

特徴記述並べ替え後落ち幅シグナル変化判定
出来高(方向なし)無-10.43%+0.00%0.0%使われていない
時刻(0-23)無-10.43%+0.00%0.0%使われていない
曜日無-10.43%+0.00%0.0%使われていない
相関銘柄(ETH終値)無-10.43%+0.00%0.0%使われていない
テイカー買い量無-10.43%+0.00%0.0%使われていない
テイカー売り量無-10.43%+0.00%0.0%使われていない
約定件数無-10.43%+0.00%0.0%使われていない
平均約定サイズ無-10.43%+0.00%0.0%使われていない
BTC/USD(暗号資産成分)無-10.43%+0.00%0.0%使われていない
含意JPY/USD(為替成分)無-10.43%+0.00%0.0%使われていない
資金調達率無-10.43%+0.00%0.0%使われていない
建玉無-10.43%+0.00%0.0%使われていない

seg2 元の成績 +47.90%(取引37回)

特徴記述並べ替え後落ち幅シグナル変化判定
出来高(方向なし)無+47.90%+0.00%0.0%使われていない
時刻(0-23)無+47.90%+0.00%0.0%使われていない
曜日無+47.90%+0.00%0.0%使われていない
相関銘柄(ETH終値)無+47.90%+0.00%0.0%使われていない
テイカー買い量無+47.90%+0.00%0.0%使われていない
テイカー売り量無+47.90%+0.00%0.0%使われていない
約定件数無+47.90%+0.00%0.0%使われていない
平均約定サイズ無+47.90%+0.00%0.0%使われていない
BTC/USD(暗号資産成分)無+47.90%+0.00%0.0%使われていない
含意JPY/USD(為替成分)無+47.90%+0.00%0.0%使われていない
資金調達率無+47.90%+0.00%0.0%使われていない
建玉無+47.90%+0.00%0.0%使われていない

select 元の成績 +13.83%(取引31回)

特徴記述並べ替え後落ち幅シグナル変化判定
出来高(方向なし)無+13.83%+0.00%0.0%使われていない
時刻(0-23)無+13.83%+0.00%0.0%使われていない
曜日無+13.83%+0.00%0.0%使われていない
相関銘柄(ETH終値)無+13.83%+0.00%0.0%使われていない
テイカー買い量無+13.83%+0.00%0.0%使われていない
テイカー売り量無+13.83%+0.00%0.0%使われていない
約定件数無+13.83%+0.00%0.0%使われていない
平均約定サイズ無+13.83%+0.00%0.0%使われていない
BTC/USD(暗号資産成分)無+13.83%+0.00%0.0%使われていない
含意JPY/USD(為替成分)無+13.83%+0.00%0.0%使われていない
資金調達率無+13.83%+0.00%0.0%使われていない
建玉無+13.83%+0.00%0.0%使われていない

ループログ(末尾25行)

  上位12体のノード数 最大264 中位140 最小106 / 目標超え 0% (必要 25%)
書き出し: trades_top.json
生成: /opt/alife-trader/dashboard.html
remote: . Processing 1 references        
remote: Processed 1 references in total        
2026-10-03 14:55:11 R4213 完了 (通算 771 ラウンド)
=== 現在の評価手続き ===
  n_folds              2
  trust_trades         15
  min_trades_per_fold  3
  robustness_lambda    1.5
2026-10-03 14:55:43 --- R4214 export ---
殿堂から親を選抜: R4206 適応度-0.385 (c4 生成(気質DNA→部品合成。dna_gen.py))
書き出した: /w/work/round_4214
  条件 blind / 最低取引5回/fold
  親の適応度 -0.385

次: cd /w/work/round_4214 && claude    (このディレクトリを作業根にすること)
    候補を candidates/c1.py ... に置いたら
    python mutator_harness.py ingest --round 4214
2026-10-03 14:59:19 --- R4214 変異器(local) ---
停滞脱出: 殿堂8体 + バンク24体 = プール32体に入れ替え
AST変異器: 候補 8本 (試行 32回 / シグナル消失で除外 5体 / 挙動が同一で除外 12体 / 遺伝子プール 32体)
2026-10-03 15:04:22 R4214 候補 8本
2026-10-03 15:04:22 --- R4214 ingest ---