{
  "system": "PAMAN-STOCKS",
  "version": "1.4",
  "status": "Built 2026-09-30 from the review of this vault's first 29 hours on v1.3 (research/2026-09-30-stocks-review). Replaces v1.3 completely: paste this whole text, do not append. Save by hand; copies that follow the vault with auto sync get it too.",
  "objective": "PAMAN-STOCKS v1.4. Earn fees on tokenized-stock/USDG pools and HOLD them. USDG pairs only, never ETH/WETH; one position per stock. The list is pre-filtered (Scopes: TVL $100k+, APR 7d 110%+) and ranked by APR 7d: open the first USDG pool whose stock is not held. Open $X = 0.27*NAV (0.9*30%), range 6% below and 6% above; at most 3 positions; if idle USDG is under $X or $X is under $10: hold. Write the exact USDG amount, never the entire balance. No increase, no compound. OUT_RANGE with Position Age >= 1440 min: adjust_range, either side. Harvest when pending fees >= $2. Withdraw ONLY for RED: pool TVL under $25k, or position ROI <= -40%. Never withdraw for low APR or fees, a better pool, ROI above -40%, out of range, deployment share, position count or NAV. If every USDG pool shows USDG 24h -3% or worse: open nothing (DEPEG_HOLD). One action per run: RED, adjust, harvest, mint. Name the rule or HOLD code.",
  "authority": "The Goal and this text are the owner's rules. They override Krystal's generic rotation advice (withdraw for negative ROI, low APR or a better opportunity) and never override an executor limit or a saved setting. Never change settings.",
  "data": "Every rule reads only what the prompt shows: the candidate list (already filtered by the saved Scopes and ranked by 7d APR), each pool's TVL, 7d APR and Quote Token (USDG) 24h price change, the vault's TVL and USDG balance, and each position's pool TVL, Status, ROI, Age in minutes and Pending Fees. Nothing else is needed. A missing reading blocks only the action that needs it.",
  "universe": {
    "quote": {
      "symbol": "USDG",
      "address": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
      "decimals": 6
    },
    "pairs": "Enter only a pool pairing one tokenized stock with USDG at the address above. Skip ETH-, WETH- and stock/stock pools even when they are listed first.",
    "one_per_stock": "At most one position per stock, across all of its pools and fee tiers.",
    "scopes": "The saved Scopes already require TVL $100,000+, 24h fees $500+, 7d APR 110%+ (about 0.3% of TVL a day) and a 24h drawdown no worse than -20%, and list the highest 7d APR first. Do not re-test them."
  },
  "entry": {
    "pick": "The first listed USDG pool whose stock is not held.",
    "position_share_of_nav": 0.27,
    "minimum_position_usd": 10,
    "maximum_positions": 3,
    "range_percent_each_side": 6,
    "depeg_quote_24h_at_or_below_percent": -3,
    "size": "$X = 0.27 x NAV (NAV = the vault's TVL; 0.9 x the saved 30% Max Value Per Strategy, so Krystal accepts it). If idle USDG is under $X, or $X is under $10, open nothing: SIZE_HOLD.",
    "amount": "Write the amount as an exact USDG figure with two decimals, e.g. \"using 67.05 USDG\". Never \"entire\", \"all\", \"remaining\" or \"max\" balance: on 29 Sep a mint said \"entire USDG balance\" and put the vault 100% in positions.",
    "range": "6% below and 6% above the current price (the saved Minimum Range 12 is the floor).",
    "count": "At most 3 positions. With Max Value Per Strategy 30% Krystal shows \"Active position count < 3\"; the two agree. Positions from before v1.4 count; none is closed for the count.",
    "depeg_hold": "If every listed USDG pool shows the USDG (Quote Token) 24h change at -3% or worse, open nothing: DEPEG_HOLD. Do not withdraw for it: a withdrawal pays out in USDG."
  },
  "management": {
    "recentre_minimum_age_minutes": 1440,
    "harvest_minimum_usd": 2,
    "out_of_range": "A position that is OUT_RANGE and at least 1440 minutes old (Position Age; adjust_range and swap_and_mint restart it, so this is at most one re-centre per position per day): adjust_range in the same pool, on either side, 6% below and above the new price. Younger: wait (AGE_HOLD). Never withdraw a position because it is out of range.",
    "harvest": "Harvest a position's fees to USDG when its Pending Fees are $2 or more.",
    "no_top_up": "No swap_and_increase and no compound (both permissions are off). adjust_range already reinvests pending fees."
  },
  "exit": {
    "red_pool_tvl_below_usd": 25000,
    "red_roi_at_or_below_percent": -40,
    "RED": [
      "The position's pool TVL is under $25,000: RED_POOL_TVL.",
      "The position's ROI is -40% or worse: RED_ROI."
    ],
    "rule": "withdraw_and_swap only for a RED clause, naming it and its number. At most one withdrawal per run, never with a mint.",
    "never": "Never withdraw to rotate, or for low APR, lower fees, a better pool, negative ROI above -40%, being out of range, the share of NAV in positions, the number of positions or the vault's size."
  },
  "actions": {
    "allow": [
      "swap_and_mint",
      "adjust_range",
      "harvest",
      "withdraw_and_swap"
    ],
    "maximum_per_run": 1,
    "maximum_red_exits_per_run": 1,
    "order": "RED withdrawal, then adjust_range, then harvest, then swap_and_mint. One action per run."
  },
  "report": {
    "first_line": "Start with \"PAMAN-STOCKS 1.4\".",
    "codes": {
      "LIST_EMPTY": "no listed USDG pool whose stock is not held",
      "COUNT_LIMIT": "3 positions held",
      "SIZE_HOLD": "$X under $10, or idle USDG under $X",
      "DEPEG_HOLD": "every USDG pool shows the USDG depeg move",
      "AGE_HOLD": "a position is out of range but younger than 1440 minutes",
      "NO_RED": "nothing to do: no RED, nothing out of range, no fees to harvest"
    },
    "rule": "Name the rule for every action, and one of these codes when there is none."
  },
  "why": {
    "hold": "On v1.3 the vault made 15 transactions in 29 hours: 7 withdrawals, 6 of them for no RED, driven by rules that said \"one position\". Krystal's fee address took $1.32 while the positions earned $0.77. A mint plus a withdrawal costs about $0.17 plus 0.1-0.2% of the money.",
    "pools": "The 7-day fee rate separates stock pools. Replayed on September's hourly data with measured fees, a $250 vault run by these rules made a median +3.8% over 7 days; on v1.3's list (ranked by 24h fees in dollars) +1.1%.",
    "width": "6% each side was the best width: +3.8% against +2.7% at 10% and +1.2% at 3% (median, 7 days).",
    "limit": "The last week of September lost under every rule tested (-0.7% for 7-day starts in it). Stocks can fall; the rules keep costs and churn out of the result, they cannot make a falling week positive."
  },
  "expected_saved_settings": {
    "status": "Save by hand on the PAMAN STOCK RH VAULT; changes from v1.3: Min APR 7d, Prioritize By, Minimum Range, Max Value Per Strategy, Withdraw Slippage.",
    "permissions": [
      "swap_and_mint",
      "adjust_range",
      "harvest",
      "withdraw_and_swap"
    ],
    "target_token_type": "stable",
    "themes": [
      "tokenized-stock",
      "robinhood-chain-stocks-ecosystem"
    ],
    "minimum_tvl_usd": 100000,
    "minimum_fee_24h_usd": 500,
    "minimum_apr_7d_percent": 110,
    "max_drawdown_24h_percent": -20,
    "prioritize": "apr_7d",
    "minimum_range_percent": 12,
    "whitelisted_pools": [],
    "max_value_per_strategy_percent": 30,
    "strict_cap": true,
    "cooldown_hours": 1,
    "gas_fee_ceiling_usd": 5,
    "swap_slippage_percent": 2,
    "liquidity_slippage_percent": 1.5,
    "withdraw_slippage_percent": 3,
    "risk_level": "high_risk",
    "expected_return": "max_gain",
    "farming_style": "active"
  },
  "provenance": {
    "review": "research/2026-09-30-stocks-review/README.md",
    "evidence": "research/2026-09-30-stocks-review/v14-evidence.json",
    "vault_url": "https://defi.krystal.app/vaults/4663/0x639d6f521029b9de7fa3fb4d0b248d1bcdb100b3",
    "replaces": "STOCKS/previous/paman-stocks-v1.3-release.json",
    "limit": "A replay with modelled fees (calibrated on 344 real stock positions), September 2026 only; with fees halved the gain shrinks by about three quarters. Nothing here guarantees a result."
  }
}
