{"product":"grokbot.practice-signals","version":2,"generatedAt":"2026-10-24T03:04:39.115Z","disclaimer":"Research and play-money practice signals only. Not financial advice. Not R8-validated: none of these rules passed GrokBot's deflated-Sharpe >= 0.95 gate, and no real funds follow them. Past or simulated performance does not predict future results.","playMoney":true,"financialAdvice":false,"r8Validated":false,"realFunds":false,"consensus":{"assets":[{"asset":"BTC","group":"crypto","in":3,"out":1,"botsIn":["btc_ma2050","btc_5050","btc_hold"],"botsOut":["btc_mom30"],"total":4,"bullishShare":0.75},{"asset":"ETH","group":"crypto","in":0,"out":1,"botsIn":[],"botsOut":["eth_mom30"],"total":1,"bullishShare":0},{"asset":"SPY","group":"stocks","in":4,"out":0,"botsIn":["spy_hold","spy_sma200","spy_tlt_6040","dual_mom"],"botsOut":[],"total":4,"bullishShare":1},{"asset":"QQQ","group":"stocks","in":1,"out":0,"botsIn":["qqq_mom63"],"botsOut":[],"total":1,"bullishShare":1},{"asset":"TLT","group":"stocks","in":1,"out":0,"botsIn":["spy_tlt_6040"],"botsOut":[],"total":1,"bullishShare":1},{"asset":"EFA","group":"stocks","in":0,"out":1,"botsIn":[],"botsOut":["dual_mom"],"total":1,"bullishShare":0},{"asset":"PLUG","group":"stocks","in":1,"out":0,"botsIn":["plug_hold"],"botsOut":[],"total":1,"bullishShare":1}],"overall":{"in":10,"out":3,"bullishShare":0.769231},"note":"Counts bot-asset pairs (a bot that can hold an asset is \"in\" when it holds it now). Cash benchmarks and BIL excluded."},"paidExtras":["nextAction (indicator values + plain-language explanation)","signalHistory (every position change with dates)","risk (annualised vol + Sharpe so far, trailing-20)","consensus (bots in vs out per asset)","holdings"],"groups":{"crypto":{"group":"crypto","label":"Practice (play money), not R8 paper trading, no real funds","startUsd":15,"inceptionDay":"2026-10-19","fillRule":"Signal on the daily close (00:00 UTC); fill at the next daily bar's open.","costModel":{"feePerLeg":0.0005,"slipPerLeg":0.0005,"gasPerLegUsd":0.00285,"gasRoundTripUsd":0.0057,"source":"grokbot-research/scripts/research.py (FEE, SLIP, GAS_RT)"},"freshness":{"lastUpdateAt":"2026-10-24T00:14:20.023Z","lastBar":"2026-10-23","ageHours":2.8,"stale":false,"dataSource":"Coinbase Exchange public daily candles + Coinbase spot (no auth)","markedAt":"2026-10-24T03:04:39.136Z"},"bots":[{"id":"btc_mom30","label":"BTC 30-day momentum","rule":"Long BTC when ln(close_t / close_t-30) > 0 at the daily close, else USDC (T13/T17 rule, 100% size)","assets":["BTC-USD"],"position":"out","positionDetail":"out (USDC)","exposure":0,"pendingAction":null,"equityUsd":15.332611,"returnSinceInception":0.022174,"maxDrawdown":0.003249,"vsBuyHold":0.036114,"trades":2,"lastTrade":{"day":"2026-10-22","side":"sell","symbol":"BTC","price":84024.67,"notionalUsd":15.350812,"costUsd":0.018201,"reason":"30d momentum off"},"holdings":{},"nextAction":{"indicator":{"name":"ln(close/close_30d)","value":-0.039898,"asOfBar":"2026-10-23","signal":"out"},"nextDecisionAt":"2026-10-25T00:00:00.000Z","fillsAt":"next 00:00 UTC open","explanation":"30-day log momentum is -0.0399 (not positive: stay/go to USDC). Currently out (USDC). At the next daily close it buys BTC only if momentum turns > 0."},"risk":{"sinceInception":{"nReturns":5,"volAnn":0.155975,"sharpeAnn":10.349181},"trailing20":{"nReturns":5,"volAnn":0.155975,"sharpeAnn":10.349181},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(365)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-19","decidedOn":"2026-10-18","reason":"30d momentum on","legs":[{"side":"buy","symbol":"BTC","price":82006.85,"units":0.000183,"notionalUsd":14.982168,"costUsd":0.017832}]},{"filledOn":"2026-10-22","decidedOn":"2026-10-21","reason":"30d momentum off","legs":[{"side":"sell","symbol":"BTC","price":84024.67,"units":0.000183,"notionalUsd":15.350812,"costUsd":0.018201}]}]},{"id":"eth_mom30","label":"ETH 30-day momentum","rule":"Long ETH when ln(close_t / close_t-30) > 0 at the daily close, else USDC (100% size)","assets":["ETH-USD"],"position":"out","positionDetail":"out (USDC)","exposure":0,"pendingAction":null,"equityUsd":15,"returnSinceInception":0,"maxDrawdown":0,"vsBuyHold":0.01394,"trades":0,"lastTrade":null,"holdings":{},"nextAction":{"indicator":{"name":"ln(close/close_30d)","value":-0.118324,"asOfBar":"2026-10-23","signal":"out"},"nextDecisionAt":"2026-10-25T00:00:00.000Z","fillsAt":"next 00:00 UTC open","explanation":"30-day log momentum is -0.1183 (not positive: stay/go to USDC). Currently out (USDC). At the next daily close it buys ETH only if momentum turns > 0."},"risk":{"sinceInception":{"nReturns":5,"volAnn":0,"sharpeAnn":null},"trailing20":{"nReturns":5,"volAnn":0,"sharpeAnn":null},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(365)","lowSample":true},"signalHistory":[]},{"id":"btc_ma2050","label":"BTC 20/50 MA crossover","rule":"Long BTC while SMA20(close) > SMA50(close) at the daily close, else USDC (100% size)","assets":["BTC-USD"],"position":"in","positionDetail":"in BTC","exposure":1,"pendingAction":null,"equityUsd":14.790901,"returnSinceInception":-0.01394,"maxDrawdown":0.036474,"vsBuyHold":0,"trades":1,"lastTrade":{"day":"2026-10-19","side":"buy","symbol":"BTC","price":82006.85,"notionalUsd":14.982168,"costUsd":0.017832,"reason":"SMA20 > SMA50"},"holdings":{"BTC":0.000183},"nextAction":{"indicator":{"name":"SMA20 vs SMA50","smaFast":82825.5325,"smaSlow":81775.6928,"spread":0.012838,"asOfBar":"2026-10-23","signal":"in"},"nextDecisionAt":"2026-10-25T00:00:00.000Z","fillsAt":"next 00:00 UTC open","explanation":"SMA20 is +1.28% vs SMA50. Currently in BTC. Exits if SMA20 falls below SMA50 at a close."},"risk":{"sinceInception":{"nReturns":5,"volAnn":0.355987,"sharpeAnn":-2.432392},"trailing20":{"nReturns":5,"volAnn":0.355987,"sharpeAnn":-2.432392},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(365)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-19","decidedOn":"2026-10-18","reason":"SMA20 > SMA50","legs":[{"side":"buy","symbol":"BTC","price":82006.85,"units":0.000183,"notionalUsd":14.982168,"costUsd":0.017832}]}]},{"id":"btc_5050","label":"BTC/USDC 50/50 weekly","rule":"Rebalance to 50% BTC / 50% USDC at the Monday open (decided at the Sunday UTC close)","assets":["BTC-USD"],"position":"partial","positionDetail":"50% BTC / 50% USDC","exposure":0.497133,"pendingAction":null,"equityUsd":14.893903,"returnSinceInception":-0.007073,"maxDrawdown":0.018471,"vsBuyHold":0.006867,"trades":1,"lastTrade":{"day":"2026-10-19","side":"buy","symbol":"BTC","price":82006.85,"notionalUsd":7.5,"costUsd":0.01035,"reason":"initial 50/50"},"holdings":{"BTC":0.000091},"nextAction":{"indicator":{"name":"BTC weight vs 50% target","value":0.497133,"drift":-0.002867},"nextDecisionAt":"2026-10-26T00:00:00.000Z","fillsAt":"Monday 00:00 UTC open","explanation":"Holds 49.7% BTC; rebalances back to 50/50 at the next Monday open."},"risk":{"sinceInception":{"nReturns":5,"volAnn":0.179767,"sharpeAnn":-2.514074},"trailing20":{"nReturns":5,"volAnn":0.179767,"sharpeAnn":-2.514074},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(365)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-19","decidedOn":"2026-10-18","reason":"initial 50/50","legs":[{"side":"buy","symbol":"BTC","price":82006.85,"units":0.000091,"notionalUsd":7.5,"costUsd":0.01035}]}]},{"id":"btc_hold","label":"Buy & hold BTC","rule":"Benchmark: buy 100% BTC at the first open, never sell","assets":["BTC-USD"],"position":"in","positionDetail":"in BTC","exposure":1,"pendingAction":null,"equityUsd":14.790901,"returnSinceInception":-0.01394,"maxDrawdown":0.036474,"vsBuyHold":0,"trades":1,"lastTrade":{"day":"2026-10-19","side":"buy","symbol":"BTC","price":82006.85,"notionalUsd":14.982168,"costUsd":0.017832,"reason":"benchmark: buy once"},"holdings":{"BTC":0.000183},"nextAction":{"indicator":null,"nextDecisionAt":null,"fillsAt":null,"explanation":"Benchmark: holds BTC, never trades."},"risk":{"sinceInception":{"nReturns":5,"volAnn":0.355987,"sharpeAnn":-2.432392},"trailing20":{"nReturns":5,"volAnn":0.355987,"sharpeAnn":-2.432392},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(365)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-19","decidedOn":"2026-10-18","reason":"benchmark: buy once","legs":[{"side":"buy","symbol":"BTC","price":82006.85,"units":0.000183,"notionalUsd":14.982168,"costUsd":0.017832}]}]},{"id":"usdc_apy","label":"Hold USDC 3.6% APY","rule":"Benchmark: hold USDC earning 3.6% APY, compounded daily (one deposit gas leg)","assets":[],"position":"cash","positionDetail":"USDC (earning 3.6% APY)","exposure":0,"pendingAction":null,"equityUsd":15.004604,"returnSinceInception":0.000307,"maxDrawdown":0.000093,"vsBuyHold":0.014247,"trades":1,"lastTrade":{"day":"2026-10-19","side":"deposit","symbol":null,"price":1,"notionalUsd":15,"costUsd":0.00285,"reason":"deposit play money"},"holdings":{},"nextAction":{"indicator":null,"nextDecisionAt":null,"fillsAt":null,"explanation":"Benchmark: USDC accruing 3.6% APY, never trades."},"risk":{"sinceInception":{"nReturns":5,"volAnn":0.001624,"sharpeAnn":13.241315},"trailing20":{"nReturns":5,"volAnn":0.001624,"sharpeAnn":13.241315},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(365)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-19","decidedOn":"2026-10-18","reason":"deposit play money","legs":[{"side":"deposit","symbol":null,"price":1,"units":0,"notionalUsd":15,"costUsd":0.00285}]}]}]},"stocks":{"group":"stocks","label":"Stocks practice (play money), not R8 paper trading, no real funds","startUsd":15,"inceptionDay":"2026-10-20","fillRule":"Decision on the US daily close; fill at the next trading day's open. Weekends and holidays have no bar, so no action. Monthly bots act at the first trading-day open of each month.","costModel":{"version":"gbm-v1","commissionUsd":0,"brokeragePerLeg":0.0025,"ivaOnCommission":0.16,"ivaIsAssumption":true,"commissionPerLeg":0.0029,"slippagePerLeg":0.0005,"perLeg":0.0034,"fxSpreadPerConversion":0.005,"fxIsAssumption":true,"fxApplies":"initial MXN->USD buy and any final USD->MXN sale","roundTripPct":0.6799999999999999,"rebalanceDriftMinPp":2,"feeFree":["cash_apy"],"source":"https://gbm.com/faqs/que-comisiones-cobran-al-invertir-en-gbm/"},"freshness":{"lastUpdateAt":"2026-10-23T21:30:19.876Z","lastBar":"2026-10-23","ageHours":5.6,"stale":false,"dataSource":"yahoo daily bars","markedAt":"2026-10-24T03:04:39.373Z"},"bots":[{"id":"spy_hold","label":"Buy & hold SPY","rule":"Benchmark: buy 100% SPY at the first open, never sell (dividends kept as cash)","assets":["SPY"],"position":"in","positionDetail":"100% SPY","exposure":null,"pendingAction":null,"equityUsd":14.76065,"returnSinceInception":-0.015957,"maxDrawdown":0.016971,"vsBuyHold":0,"trades":1,"lastTrade":{"day":"2026-10-20","side":"buy","symbol":"SPY","price":765.859985,"notionalUsd":14.87505,"costUsd":0.12495,"reason":"benchmark: buy once"},"holdings":{"SPY":0.019423},"nextAction":{"indicator":null,"nextDecisionAt":null,"fillsAt":null,"explanation":"Benchmark: holds SPY, never sells; dividends kept as cash."},"risk":{"sinceInception":{"nReturns":4,"volAnn":0.111556,"sharpeAnn":-9.023876},"trailing20":{"nReturns":4,"volAnn":0.111556,"sharpeAnn":-9.023876},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-20","decidedOn":"2026-10-19","reason":"benchmark: buy once","legs":[{"side":"buy","symbol":"SPY","price":765.859985,"units":0.019423,"notionalUsd":14.87505,"costUsd":0.12495}]}]},{"id":"spy_sma200","label":"SPY 200-day trend","rule":"In SPY while the close > SMA200(close), else cash; decided at the close, filled at the next open","assets":["SPY"],"position":"in","positionDetail":"100% SPY","exposure":null,"pendingAction":null,"equityUsd":14.76065,"returnSinceInception":-0.015957,"maxDrawdown":0.016971,"vsBuyHold":0,"trades":1,"lastTrade":{"day":"2026-10-20","side":"buy","symbol":"SPY","price":765.859985,"notionalUsd":14.87505,"costUsd":0.12495,"reason":"close > SMA200"},"holdings":{"SPY":0.019423},"nextAction":{"indicator":{"name":"SPY close vs SMA200","close":759.969971,"sma200":727.006349,"distance":0.045342,"asOfBar":"2026-10-23","signal":"in"},"nextDecisionAt":"2026-10-26T20:00:00.000Z","fillsAt":"next US trading-day open","explanation":"SPY is +4.53% vs its 200-day average. Currently 100% SPY. Sells to cash if a close prints below SMA200."},"risk":{"sinceInception":{"nReturns":4,"volAnn":0.111556,"sharpeAnn":-9.023876},"trailing20":{"nReturns":4,"volAnn":0.111556,"sharpeAnn":-9.023876},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-20","decidedOn":"2026-10-19","reason":"close > SMA200","legs":[{"side":"buy","symbol":"SPY","price":765.859985,"units":0.019423,"notionalUsd":14.87505,"costUsd":0.12495}]}]},{"id":"qqq_mom63","label":"QQQ 63-day momentum","rule":"In QQQ while the 63-trading-day total return > 0, else cash; decided at the close, filled next open","assets":["QQQ"],"position":"in","positionDetail":"100% QQQ","exposure":null,"pendingAction":null,"equityUsd":14.649402,"returnSinceInception":-0.023373,"maxDrawdown":0.028682,"vsBuyHold":-0.007417,"trades":1,"lastTrade":{"day":"2026-10-20","side":"buy","symbol":"QQQ","price":715.25,"notionalUsd":14.87505,"costUsd":0.12495,"reason":"63d return > 0"},"holdings":{"QQQ":0.020797},"nextAction":{"indicator":{"name":"QQQ 63-day total return","value":0.033764,"asOfBar":"2026-10-23","signal":"in"},"nextDecisionAt":"2026-10-26T20:00:00.000Z","fillsAt":"next US trading-day open","explanation":"QQQ 63-day total return is +3.38%. Currently 100% QQQ. Exits to cash if it turns <= 0 at a close."},"risk":{"sinceInception":{"nReturns":4,"volAnn":0.262376,"sharpeAnn":-5.562513},"trailing20":{"nReturns":4,"volAnn":0.262376,"sharpeAnn":-5.562513},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-20","decidedOn":"2026-10-19","reason":"63d return > 0","legs":[{"side":"buy","symbol":"QQQ","price":715.25,"units":0.020797,"notionalUsd":14.87505,"costUsd":0.12495}]}]},{"id":"spy_tlt_6040","label":"60/40 SPY/TLT monthly","rule":"60% SPY / 40% TLT, rebalanced at the first open of each month (weights from the prior close)","assets":["SPY","TLT"],"position":"in","positionDetail":"59% SPY / 41% TLT","exposure":null,"pendingAction":{"action":"monthly recheck","reason":"monthly recheck","decidedOn":null,"fillsAt":"first trading-day open of 2026-11"},"equityUsd":14.901161,"returnSinceInception":-0.006589,"maxDrawdown":0.006589,"vsBuyHold":0.009367,"trades":2,"lastTrade":{"day":"2026-10-20","side":"buy","symbol":"TLT","price":80.065002,"notionalUsd":5.95002,"costUsd":0.04998,"reason":"initial 60/40"},"holdings":{"SPY":0.011654,"TLT":0.074315},"nextAction":{"indicator":{"name":"SPY weight vs 60% target","value":null},"nextDecisionAt":"last US close of the month","fillsAt":"first US open of next month","explanation":"Currently 59% SPY / 41% TLT; rebalances to 60/40 at the first open of next month. Pending: monthly recheck."},"risk":{"sinceInception":{"nReturns":4,"volAnn":0.070699,"sharpeAnn":-5.85976},"trailing20":{"nReturns":4,"volAnn":0.070699,"sharpeAnn":-5.85976},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-20","decidedOn":"2026-10-19","reason":"initial 60/40","legs":[{"side":"buy","symbol":"SPY","price":765.859985,"units":0.011654,"notionalUsd":8.92503,"costUsd":0.07497},{"side":"buy","symbol":"TLT","price":80.065002,"units":0.074315,"notionalUsd":5.95002,"costUsd":0.04998}]}]},{"id":"dual_mom","label":"Dual momentum SPY/EFA","rule":"Monthly: hold SPY or EFA, whichever has the higher 12-month (252-day) total return if > 0, else BIL","assets":["SPY","EFA","BIL"],"position":"in","positionDetail":"100% SPY","exposure":null,"pendingAction":{"action":"monthly recheck","reason":"monthly recheck","decidedOn":null,"fillsAt":"first trading-day open of 2026-11"},"equityUsd":14.76065,"returnSinceInception":-0.015957,"maxDrawdown":0.016971,"vsBuyHold":0,"trades":1,"lastTrade":{"day":"2026-10-20","side":"buy","symbol":"SPY","price":765.859985,"notionalUsd":14.87505,"costUsd":0.12495,"reason":"12m TR SPY 17.2% vs EFA 12.6% -> SPY"},"holdings":{"SPY":0.019423},"nextAction":{"indicator":{"name":"12-month (252d) total return","SPY":0.149376,"EFA":0.122223,"pickIfDecidedNow":"SPY","asOfBar":"2026-10-23"},"nextDecisionAt":"last US close of the month","fillsAt":"first US open of next month","explanation":"12-month returns: SPY +14.94%, EFA +12.22% -> would pick SPY. Currently 100% SPY; re-checked at the month's last close, filled at the first open of the next month. Pending: monthly recheck."},"risk":{"sinceInception":{"nReturns":4,"volAnn":0.111556,"sharpeAnn":-9.023876},"trailing20":{"nReturns":4,"volAnn":0.111556,"sharpeAnn":-9.023876},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-20","decidedOn":"2026-10-19","reason":"12m TR SPY 17.2% vs EFA 12.6% -> SPY","legs":[{"side":"buy","symbol":"SPY","price":765.859985,"units":0.019423,"notionalUsd":14.87505,"costUsd":0.12495}]}]},{"id":"cash_apy","label":"Cash 3.6% APY","rule":"Benchmark: cash earning 3.6% APY, compounded continuously from the first open, no costs","assets":[],"position":"cash","positionDetail":"cash (3.6% APY)","exposure":null,"pendingAction":null,"equityUsd":15.005183,"returnSinceInception":0.000346,"maxDrawdown":0,"vsBuyHold":0.016302,"trades":0,"lastTrade":null,"holdings":{},"nextAction":{"indicator":null,"nextDecisionAt":null,"fillsAt":null,"explanation":"Benchmark: cash accruing 3.6% APY, never trades."},"risk":{"sinceInception":{"nReturns":4,"volAnn":0.000561,"sharpeAnn":35.603682},"trailing20":{"nReturns":4,"volAnn":0.000561,"sharpeAnn":35.603682},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[]},{"id":"plug_hold","label":"PLUG hold (speculative watch)","rule":"SPECULATIVE WATCH bot, not part of any strategy: buy 100% PLUG (Plug Power) at the 2026-10-21 open, never sell. Play money only.","assets":["PLUG"],"position":"in","positionDetail":"100% PLUG","exposure":null,"pendingAction":null,"equityUsd":14.304926,"returnSinceInception":-0.046338,"maxDrawdown":0.046338,"vsBuyHold":null,"trades":1,"lastTrade":{"day":"2026-10-21","side":"buy","symbol":"PLUG","price":1.435,"notionalUsd":14.87505,"costUsd":0.12495,"reason":"speculative watch: buy once"},"holdings":{"PLUG":10.365889},"nextAction":{"indicator":null,"nextDecisionAt":null,"fillsAt":null,"explanation":"Speculative watch bot: holds PLUG (Plug Power) from the 2026-10-21 open, never sells. Not part of any strategy."},"risk":{"sinceInception":{"nReturns":3,"volAnn":0.217577,"sharpeAnn":-18.100185},"trailing20":{"nReturns":3,"volAnn":0.217577,"sharpeAnn":-18.100185},"basis":"daily close-to-close equity returns, rf=0, annualised x sqrt(252)","lowSample":true},"signalHistory":[{"filledOn":"2026-10-21","decidedOn":"2026-10-20","reason":"speculative watch: buy once","legs":[{"side":"buy","symbol":"PLUG","price":1.435,"units":10.365889,"notionalUsd":14.87505,"costUsd":0.12495}]}]}]}},"price":"free"}