feat: seed kindergarten — initial population with OG + first evolution champion
seeds/optimizer_v3.push3 — hand-written original (8.26e21) seeds/evo_run004_champion.push3 — first evolution winner (2.31e24, gen 3) seeds/manifest.jsonl — fitness + provenance tracking Note: champion fitness inflated by token value (#670). Strategy is 'always bull' — wide positions, max anchor share. Pending ETH-only metric fix to validate.
This commit is contained in:
parent
f1b64a448f
commit
c7196aa2b0
3 changed files with 242 additions and 0 deletions
1
tools/push3-evolution/seeds/evo_run004_champion.push3
Normal file
1
tools/push3-evolution/seeds/evo_run004_champion.push3
Normal file
|
|
@ -0,0 +1 @@
|
|||
( PERCENTAGESTAKED DYADIC.DEFINE TAXRATE DYADIC.DEFINE DYADIC.POP DYADIC.POP DYADIC.POP DYADIC.POP DYADIC.POP DYADIC.POP PERCENTAGESTAKED 100 DYADIC.* 1000000000000000000 DYADIC./ STAKED DYADIC.DEFINE STAKED 80 EXEC.IF ( 100 STAKED DYADIC.- DELTAS DYADIC.DEFINE TAXRATE 206185567010309 DYADIC.<= EXEC.IF 0 ( TAXRATE 412371134020618 DYADIC.<= EXEC.IF 1 ( TAXRATE 618556701030927 DYADIC.<= EXEC.IF 2 ( TAXRATE 1030927835051546 DYADIC.<= EXEC.IF 3 ( TAXRATE 1546391752577319 DYADIC.<= EXEC.IF 4 ( TAXRATE 2164948453608247 DYADIC.<= EXEC.IF 5 ( TAXRATE 2783505154639175 DYADIC.<= EXEC.IF 6 ( TAXRATE 3608247422680412 DYADIC.<= EXEC.IF 7 ( TAXRATE 4639175257731958 DYADIC.<= EXEC.IF 8 ( TAXRATE 5670103092783505 DYADIC.>= EXEC.IF 9 ( TAXRATE 7216494845360824 DYADIC.<= EXEC.IF 10 ( TAXRATE 9278350515463917 DYADIC.<= EXEC.IF 11 ( TAXRATE 11855670103092783 DYADIC.<= EXEC.IF 12 ( TAXRATE 15979381443298969 DYADIC.<= EXEC.IF 13 ( TAXRATE 22164948453608247 DYADIC.<= EXEC.IF 14 ( TAXRATE 29381443298969072 DYADIC.<= EXEC.IF 15 ( TAXRATE 38144329896907216 EXEC.IF 16 ( TAXRATE 49484536082474226 DYADIC.<= EXEC.IF 17 ( TAXRATE 63917525773195876 DYADIC.<= EXEC.IF 18 ( TAXRATE 83505154639175257 DYADIC.<= EXEC.IF 19 ( TAXRATE 109278350515463917 DYADIC.<= EXEC.IF 20 ( TAXRATE 144329896907216494 DYADIC.<= EXEC.IF 21 ( TAXRATE 185567010309278350 DYADIC.<= EXEC.IF 22 ( TAXRATE 237113402061855670 DYADIC.<= EXEC.IF 23 ( TAXRATE 309278350515463917 DYADIC.<= EXEC.IF 24 ( TAXRATE 402061855670103092 DYADIC.<= EXEC.IF 25 ( TAXRATE 520618556701030927 DYADIC.<= EXEC.IF 26 ( TAXRATE 680412371134020618 DYADIC.<= EXEC.IF 27 ( TAXRATE 886597938144329896 DYADIC.<= EXEC.IF 28 29 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) DYADIC.DUP 14 DYADIC.>= EXEC.IF ( 1 DYADIC.+ DYADIC.DUP 29 DYADIC.> EXEC.IF ( DYADIC.POP 29 ) ( ) ) ( ) EFFIDX DYADIC.DEFINE DELTAS DELTAS DYADIC.* DELTAS DYADIC.* EFFIDX DYADIC.* 20 DYADIC./ 30 DYADIC.< EXEC.IF ( 1000000000000000000 20 1000000000000000000 0 ) ( 300000000000000000 100 300000000000000000 0 ) ) ( 300000000000000000 100 300000000000000000 0 ) )
|
||||
2
tools/push3-evolution/seeds/manifest.jsonl
Normal file
2
tools/push3-evolution/seeds/manifest.jsonl
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
{"file":"optimizer_v3.push3","fitness":8259844243839650390792,"origin":"hand-written","run":null,"generation":null,"date":"2026-03-10","note":"Original seed optimizer"}
|
||||
{"file":"evo_run004_champion.push3","fitness":2307549972110081697617459,"origin":"evolved","run":"004","generation":3,"date":"2026-03-13","note":"First evolution champion. Fitness inflated by token value (#670). Always-bull strategy."}
|
||||
239
tools/push3-evolution/seeds/optimizer_v3.push3
Normal file
239
tools/push3-evolution/seeds/optimizer_v3.push3
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
;; OptimizerV3 in Push3 — 8-input / 4-output redesign
|
||||
;;
|
||||
;; Inputs on DYADIC stack (slot 0 on top, slot 7 at bottom):
|
||||
;; [0] percentageStaked (0 to 1e18, where 1e18 = 100%)
|
||||
;; [1] averageTaxRate (0 to 1e18, normalized from Stake contract)
|
||||
;; [2] vwapX96 (future; 0 if unavailable)
|
||||
;; [3] currentTick (future; 0 if unavailable)
|
||||
;; [4] recentVolume (future; 0 if unavailable)
|
||||
;; [5] timeSinceLastRecenter (future; 0 if unavailable)
|
||||
;; [6] movingAveragePrice (future; 0 if unavailable)
|
||||
;; [7] reserved 0
|
||||
;;
|
||||
;; Outputs on DYADIC stack at termination (top to bottom):
|
||||
;; top: capitalInefficiency (0..1e18)
|
||||
;; anchorShare (0..1e18)
|
||||
;; anchorWidth (tick units)
|
||||
;; bot: discoveryDepth (0..1e18)
|
||||
;;
|
||||
;; Logic: binary bear/bull from slots 0 and 1
|
||||
;; stakedPct = percentageStaked * 100 / 1e18 (0-100)
|
||||
;; if stakedPct <= 91 → BEAR
|
||||
;; deltaS = 100 - stakedPct
|
||||
;; effIdx = _taxRateToEffectiveIndex(averageTaxRate) (0-29, with +1 shift at >=14)
|
||||
;; penalty = deltaS^3 * effIdx / 20
|
||||
;; if penalty < 50 → BULL, else → BEAR
|
||||
;;
|
||||
;; BULL params: CI=0, AS=1e18, AW=20, DD=1e18
|
||||
;; BEAR params: CI=0, AS=0.3e18, AW=100, DD=0.3e18
|
||||
|
||||
(
|
||||
;; Step 1: Bind slot 0 (top) to PERCENTAGESTAKED, slot 1 to TAXRATE.
|
||||
PERCENTAGESTAKED DYADIC.DEFINE
|
||||
;; Stack: [slot7(bot), slot6, slot5, slot4, slot3, slot2, slot1(top)]
|
||||
TAXRATE DYADIC.DEFINE
|
||||
;; Stack: [slot7(bot), slot6, slot5, slot4, slot3, slot2(top)]
|
||||
|
||||
;; Step 2: Discard unused inputs (slots 2-7) — 6 pops.
|
||||
DYADIC.POP
|
||||
DYADIC.POP
|
||||
DYADIC.POP
|
||||
DYADIC.POP
|
||||
DYADIC.POP
|
||||
DYADIC.POP
|
||||
;; Stack: []
|
||||
|
||||
;; Step 3: Compute stakedPct = percentageStaked * 100 / 1e18 (integer 0..100)
|
||||
PERCENTAGESTAKED
|
||||
100 DYADIC.*
|
||||
1000000000000000000 DYADIC./
|
||||
;; Stack: [stakedPct]
|
||||
STAKED DYADIC.DEFINE
|
||||
;; Stack: []
|
||||
|
||||
;; Step 4: Main conditional — stakedPct > 91?
|
||||
STAKED 91 DYADIC.>
|
||||
;; bool_stack: [stakedPct > 91]
|
||||
|
||||
EXEC.IF
|
||||
|
||||
;; TRUE branch: stakedPct > 91 — compute penalty
|
||||
(
|
||||
;; deltaS = 100 - stakedPct
|
||||
100 STAKED DYADIC.-
|
||||
;; Stack: [deltaS]
|
||||
DELTAS DYADIC.DEFINE
|
||||
;; Stack: []
|
||||
|
||||
;; Compute raw tax index via 30-way threshold lookup.
|
||||
;; Each level: if TAXRATE <= threshold then push index, else go deeper.
|
||||
TAXRATE 206185567010309 DYADIC.<=
|
||||
EXEC.IF
|
||||
0
|
||||
( TAXRATE 412371134020618 DYADIC.<=
|
||||
EXEC.IF
|
||||
1
|
||||
( TAXRATE 618556701030927 DYADIC.<=
|
||||
EXEC.IF
|
||||
2
|
||||
( TAXRATE 1030927835051546 DYADIC.<=
|
||||
EXEC.IF
|
||||
3
|
||||
( TAXRATE 1546391752577319 DYADIC.<=
|
||||
EXEC.IF
|
||||
4
|
||||
( TAXRATE 2164948453608247 DYADIC.<=
|
||||
EXEC.IF
|
||||
5
|
||||
( TAXRATE 2783505154639175 DYADIC.<=
|
||||
EXEC.IF
|
||||
6
|
||||
( TAXRATE 3608247422680412 DYADIC.<=
|
||||
EXEC.IF
|
||||
7
|
||||
( TAXRATE 4639175257731958 DYADIC.<=
|
||||
EXEC.IF
|
||||
8
|
||||
( TAXRATE 5670103092783505 DYADIC.<=
|
||||
EXEC.IF
|
||||
9
|
||||
( TAXRATE 7216494845360824 DYADIC.<=
|
||||
EXEC.IF
|
||||
10
|
||||
( TAXRATE 9278350515463917 DYADIC.<=
|
||||
EXEC.IF
|
||||
11
|
||||
( TAXRATE 11855670103092783 DYADIC.<=
|
||||
EXEC.IF
|
||||
12
|
||||
( TAXRATE 15979381443298969 DYADIC.<=
|
||||
EXEC.IF
|
||||
13
|
||||
( TAXRATE 22164948453608247 DYADIC.<=
|
||||
EXEC.IF
|
||||
14
|
||||
( TAXRATE 29381443298969072 DYADIC.<=
|
||||
EXEC.IF
|
||||
15
|
||||
( TAXRATE 38144329896907216 DYADIC.<=
|
||||
EXEC.IF
|
||||
16
|
||||
( TAXRATE 49484536082474226 DYADIC.<=
|
||||
EXEC.IF
|
||||
17
|
||||
( TAXRATE 63917525773195876 DYADIC.<=
|
||||
EXEC.IF
|
||||
18
|
||||
( TAXRATE 83505154639175257 DYADIC.<=
|
||||
EXEC.IF
|
||||
19
|
||||
( TAXRATE 109278350515463917 DYADIC.<=
|
||||
EXEC.IF
|
||||
20
|
||||
( TAXRATE 144329896907216494 DYADIC.<=
|
||||
EXEC.IF
|
||||
21
|
||||
( TAXRATE 185567010309278350 DYADIC.<=
|
||||
EXEC.IF
|
||||
22
|
||||
( TAXRATE 237113402061855670 DYADIC.<=
|
||||
EXEC.IF
|
||||
23
|
||||
( TAXRATE 309278350515463917 DYADIC.<=
|
||||
EXEC.IF
|
||||
24
|
||||
( TAXRATE 402061855670103092 DYADIC.<=
|
||||
EXEC.IF
|
||||
25
|
||||
( TAXRATE 520618556701030927 DYADIC.<=
|
||||
EXEC.IF
|
||||
26
|
||||
( TAXRATE 680412371134020618 DYADIC.<=
|
||||
EXEC.IF
|
||||
27
|
||||
( TAXRATE 886597938144329896 DYADIC.<=
|
||||
EXEC.IF
|
||||
28
|
||||
29
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
;; Stack: [raw_idx (0-29)]
|
||||
|
||||
;; Apply effIdx shift: if raw_idx >= 14, effIdx = min(raw_idx + 1, 29)
|
||||
DYADIC.DUP 14 DYADIC.>=
|
||||
EXEC.IF
|
||||
(
|
||||
1 DYADIC.+
|
||||
DYADIC.DUP 29 DYADIC.>
|
||||
EXEC.IF
|
||||
( DYADIC.POP 29 )
|
||||
( )
|
||||
)
|
||||
( )
|
||||
;; Stack: [effIdx (0-29)]
|
||||
|
||||
EFFIDX DYADIC.DEFINE
|
||||
;; Stack: []
|
||||
|
||||
;; Compute penalty = deltaS^3 * effIdx / 20
|
||||
DELTAS DELTAS DYADIC.*
|
||||
DELTAS DYADIC.*
|
||||
EFFIDX DYADIC.*
|
||||
20 DYADIC./
|
||||
;; Stack: [penalty]
|
||||
|
||||
;; penalty < 50 → BULL; else → BEAR
|
||||
50 DYADIC.<
|
||||
;; bool_stack: [penalty < 50]
|
||||
|
||||
EXEC.IF
|
||||
;; BULL: push 4 outputs bottom-first (discoveryDepth at bottom, ci at top)
|
||||
(
|
||||
1000000000000000000
|
||||
20
|
||||
1000000000000000000
|
||||
0
|
||||
)
|
||||
;; BEAR
|
||||
(
|
||||
300000000000000000
|
||||
100
|
||||
300000000000000000
|
||||
0
|
||||
)
|
||||
)
|
||||
|
||||
;; FALSE branch: stakedPct <= 91 — always bear
|
||||
(
|
||||
300000000000000000
|
||||
100
|
||||
300000000000000000
|
||||
0
|
||||
)
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue