harb/tools/push3-evolution/seeds/llm_contrarian.push3
openhands 5f7d002e2a feat: add recovered LLM seeds (floor hugger + contrarian)
Recovered from reflog after rebase accident destroyed PRs #692, #699.
Balanced Adaptive (#688) was garbage collected — will be regenerated.
Kindergarten (#683) needs fresh implementation due to evolve.sh conflicts.

Closes #672, #675.
2026-03-14 15:43:58 +00:00

98 lines
2.7 KiB
Text

;; Contrarian Optimizer — Push3 seed
;;
;; Philosophy: "when everyone is bullish, prepare for the crash."
;;
;; 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)
;; [2-7] reserved/future (0 if unavailable)
;;
;; Outputs (top to bottom on termination):
;; ci = 0 always (contrarian on positions, not floor)
;; anchorShare (0..1e18)
;; anchorWidth (tick units)
;; discoveryDepth (0..1e18)
;;
;; Logic:
;; stakedPct = percentageStaked * 100 / 1e18 (0-100)
;; taxHigh = averageTaxRate >= 1e17 (>= 10% = expect mean reversion)
;;
;; stakedPct >= 50 (bullish crowd) → defensive:
;; taxHigh → VERY DEFENSIVE: CI=0, AS=0.15e18, AW=15, DD=0.10e18
;; else → DEFENSIVE: CI=0, AS=0.25e18, AW=25, DD=0.20e18
;;
;; stakedPct < 50 (bearish crowd) → aggressive:
;; taxHigh → VERY AGGRESSIVE: CI=0, AS=0.85e18, AW=250, DD=0.85e18
;; else → AGGRESSIVE: CI=0, AS=0.70e18, AW=150, DD=0.70e18
(
;; 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./
STAKED DYADIC.DEFINE
;; Stack: []
;; Step 4: stakedPct >= 50? (majority bullish = contrarian sell signal)
STAKED 50 DYADIC.>=
;; bool_stack: [stakedPct >= 50]
EXEC.IF
;; TRUE branch: bullish crowd → go defensive
(
;; Tax high (>= 10%) means volatile / mean-reversion expected → extra defensive
TAXRATE 100000000000000000 DYADIC.>=
EXEC.IF
;; VERY DEFENSIVE: floor-heavy, narrow anchor, minimal discovery
(
100000000000000000
15
150000000000000000
0
)
;; DEFENSIVE: modest floor bias, narrow-ish anchor
(
200000000000000000
25
250000000000000000
0
)
)
;; FALSE branch: bearish crowd → go aggressive
(
;; Tax high (>= 10%) means volatile → amplify the contrarian signal further
TAXRATE 100000000000000000 DYADIC.>=
EXEC.IF
;; VERY AGGRESSIVE: wide discovery, high anchor share
(
850000000000000000
250
850000000000000000
0
)
;; AGGRESSIVE: wide discovery, high anchor share
(
700000000000000000
150
700000000000000000
0
)
)
)