Decision support and paper executionAI is advisory only; risk controls are authoritative.
Live disabledAutonomous offLocal auth placeholder
Latest market candle is 58m old, above the 30 minute threshold.
ActionBUY
Confidence77%
Market regimebullish
Composite score0.79
Data age58m

Manual approval path

needs review
Trade ticketETHUSDTSideBUYSuggested quantity0.0567582Reference price$1,762
Market data is stale, so the order preview should block until fresh data is available.

Risk validation

approved
RuleSeverityReason
No deterministic risk violations.

Provider visibility

primary data
ConfiguredcoinbaseActual latestcoinbaseLatest candleJul 05, 03:00 PM GMT+2StatussuccessLatency191 msLast eventJul 05, 03:38 PM GMT+2Last successJul 05, 03:00 PM GMT+2ErrorNoneProvider countscoinbase: 203

Latest price data

Jul 05, 03:00 PM GMT+2
Open$1,763
High$1,766
Low$1,760
Close$1,762
Volume812.543566

Recommendation metadata

Jul 05, 03:22 PM GMT+2
Risk score31%Time horizonshort_termSuggested size+5.00%Statusapproved_by_risk
Risk score is the AI/model downside-risk estimate where lower is safer. Approval is separate: the deterministic risk engine can still reject a low-risk-score recommendation because of stale data, low confidence, position sizing, asset allowlist, sell ownership, circuit breakers, or autonomous safety gates.

Indicators

Jul 05, 03:00 PM GMT+2
timestamp2026-07-05T13:00:00+00:00
latest_price1,764.67
change_24h_pct0.112896
change_7d_pct11.879161
volatility_pct0.37208
trenduptrend
sma_fast1,770.2715
sma_slow1,761.3344
rsi37.307493
macd-0.294286
macd_signal1.600197
max_drawdown_pct4.644626
momentum_pct-0.824463

Deterministic signals

5 signals
moving_average_crossover:bullish:0.65market_regime:bullish:trend=0.75:volatility=0.05composite_score:0.79action_bias:BUYrsi_mean_reversion:neutral:0.20

Scoring explanation

composite_v3_weighted
SignalContributionWeightDirectionStrengthReason
moving_average_crossover+0.61901.00xbullish0.65Fast SMA is above slow SMA.
rsi_mean_reversion+0.00001.00xneutral0.2RSI is within neutral range.
momentum_breakout+0.00001.00xneutral0.2No breakout momentum.
market_regime+0.18751.00xbullish0.75Regime trend score adjusts the directional score.
volatility-0.00521.00xrisk_penalty0.0465Higher realized volatility reduces conviction.
drawdown-0.01391.00xrisk_penalty4.6446Larger recent drawdowns reduce the composite score.

Recommendation history

25 recent decisions
CreatedActionConfidenceRiskPriceStatusSummary
Jul 05, 03:22 PM GMT+2BUY77%31%$1,764approved_by_riskETH has a constructive bullish setup with a high composite score and supportive trend structure, so a modest short-term BUY is reasonable with disciplined risk controls.
Jul 05, 02:21 PM GMT+2BUY74%33%$1,760approved_by_riskETH shows a bullish trend with a supportive mean-reversion setup, but momentum is still weak, so a smaller-than-hint starter BUY is appropriate.
Jul 05, 11:11 AM GMT+2BUY78%34%$1,765approved_by_riskETH shows a bullish trend with an oversold RSI and supportive deterministic signals, so a cautious short-term BUY is reasonable with modest sizing.
Jul 05, 10:21 AM GMT+2BUY82%31%$1,767approved_by_riskBullish trend and oversold RSI support a cautious short-term BUY in ETH with a modest position size and defined risk controls.
Jul 05, 09:32 AM GMT+2BUY77%34%$1,763rejected_by_riskETH shows a bullish trend with oversold mean-reversion support, so a modest short-term BUY is reasonable with tight risk controls.
Jul 05, 09:26 AM GMT+2BUY76%31%$1,763approved_by_riskBullish setup for ETH with a modest buy favored by trend confirmation, oversold RSI, and a strong composite score, but size is kept conservative due to mixed momentum and existing market risk.
Jul 05, 09:20 AM GMT+2BUY77%34%$1,761approved_by_riskBullish setup with strong composite support and an oversold RSI; take a conservative starter BUY size given short-term momentum weakness and moderate risk.
Jul 05, 09:14 AM GMT+2BUY76%34%$1,762approved_by_riskETH shows a bullish short-term setup with supportive trend and mean-reversion signals, so a cautious BUY is reasonable with reduced sizing and defined risk limits.
Jul 05, 09:08 AM GMT+2BUY80%30%$1,763approved_by_riskBullish short-term setup with a strong composite score and oversold RSI; buy a conservative 6% starter position with a 3.5% stop and 8% profit target.
Jul 05, 09:02 AM GMT+2BUY79%29%$1,764approved_by_riskBullish trend plus extremely oversold RSI creates a favorable short-term ETH entry, but size it conservatively because momentum is not yet fully confirmed.
Jul 05, 08:56 AM GMT+2BUY76%32%$1,763rejected_by_riskBullish setup for ETH supports a cautious short-term BUY, sized modestly due to mixed momentum and some residual risk.
Jul 05, 08:50 AM GMT+2BUY79%28%$1,763rejected_by_riskBullish trend and supportive mean-reversion signals justify a modest short-term BUY in ETH, but position size should stay conservative because momentum is not explosive and risk is not negligible.
Jul 05, 08:44 AM GMT+2BUY78%32%$1,764rejected_by_riskBullish trend and oversold-leaning RSI support a cautious ETH BUY, sized below the model hint to respect residual momentum and drawdown risk.
Jul 05, 08:38 AM GMT+2BUY83%31%$1,763rejected_by_riskBullish trend and supportive deterministic signals justify a cautious short-term BUY in ETH, sized below the hint due to mild momentum softness and recent drawdown.
Jul 05, 08:32 AM GMT+2BUY84%27%$1,764rejected_by_riskETH shows a bullish setup with strong trend support and near-oversold RSI, so a cautious short-term BUY is reasonable at a reduced size.
Jul 05, 08:26 AM GMT+2BUY74%33%$1,762approved_by_riskETH shows a constructive bullish setup with oversold RSI and positive trend structure, so a small BUY is reasonable with tight risk control.
Jul 05, 08:21 AM GMT+2BUY84%31%$1,763approved_by_riskBullish trend and supportive deterministic signals justify a conservative ETH BUY, sized below the model hint due to mixed momentum and modest drawdown risk.
Jul 05, 08:15 AM GMT+2BUY81%31%$1,762approved_by_riskETH has a modest short-term bullish setup with aligned trend and mean-reversion signals, so a small BUY is reasonable with defined risk controls.
Jul 05, 08:09 AM GMT+2BUY83%31%$1,762approved_by_riskETH shows a bullish trend with supportive mean-reversion conditions, so a modest short-term BUY is warranted with disciplined risk controls.
Jul 05, 08:03 AM GMT+2BUY81%31%$1,763approved_by_riskETH shows a constructive bullish setup with trend support and near-oversold RSI, so a cautious short-term BUY is reasonable at a reduced size.
Jul 05, 07:57 AM GMT+2BUY84%29%$1,764rejected_by_riskBullish technical alignment and strong composite score support a cautious short-term BUY in ETH, sized below the model hint to reflect residual volatility and recent drawdown.
Jul 05, 07:51 AM GMT+2BUY78%32%$1,762rejected_by_riskBullish trend and supportive deterministic signals justify a cautious short-term BUY in ETH, sized below the model hint due to mixed momentum and residual risk.
Jul 05, 07:45 AM GMT+2BUY84%31%$1,760rejected_by_riskETH has a bullish trend setup with supportive mean-reversion signals, so a conservative short-term BUY is reasonable at a reduced size.
Jul 05, 07:39 AM GMT+2BUY82%34%$1,763rejected_by_riskBullish trend and mean-reversion setup support a cautious BUY on ETH with reduced size and defined risk controls.
Jul 05, 07:33 AM GMT+2BUY81%31%$1,763rejected_by_riskBullish short-term setup for ETH with an oversold RSI and positive trend alignment; initiate a conservative starter BUY with defined risk controls.

Outcome history

50 tracked recommendations
RecommendedActionEntryLater priceMoveResult
Jul 05, 03:22 PM GMT+2BUY$1,764PendingPendingpending
Jul 05, 02:21 PM GMT+2BUY$1,760$1,762+0.08%neutral
Jul 05, 11:11 AM GMT+2BUY$1,765$1,762-0.16%neutral
Jul 05, 10:21 AM GMT+2BUY$1,767$1,762-0.30%adverse
Jul 05, 09:32 AM GMT+2BUY$1,763$1,762-0.09%neutral
Jul 05, 09:26 AM GMT+2BUY$1,763$1,762-0.09%neutral
Jul 05, 09:20 AM GMT+2BUY$1,761$1,762+0.03%neutral
Jul 05, 09:14 AM GMT+2BUY$1,762$1,762-0.01%neutral
Jul 05, 09:08 AM GMT+2BUY$1,763$1,762-0.07%neutral
Jul 05, 09:02 AM GMT+2BUY$1,764$1,762-0.11%neutral
Jul 05, 08:56 AM GMT+2BUY$1,763$1,762-0.08%neutral
Jul 05, 08:50 AM GMT+2BUY$1,763$1,762-0.07%neutral
Jul 05, 08:44 AM GMT+2BUY$1,764$1,762-0.12%neutral
Jul 05, 08:38 AM GMT+2BUY$1,763$1,762-0.08%neutral
Jul 05, 08:32 AM GMT+2BUY$1,764$1,762-0.09%neutral
Jul 05, 08:26 AM GMT+2BUY$1,762$1,762-0.02%neutral
Jul 05, 08:21 AM GMT+2BUY$1,763$1,762-0.05%neutral
Jul 05, 08:15 AM GMT+2BUY$1,762$1,762-0.02%neutral
Jul 05, 08:09 AM GMT+2BUY$1,762$1,762-0.02%neutral
Jul 05, 08:03 AM GMT+2BUY$1,763$1,762-0.05%neutral
Jul 05, 07:57 AM GMT+2BUY$1,764$1,762-0.14%neutral
Jul 05, 07:51 AM GMT+2BUY$1,762$1,762-0.00%neutral
Jul 05, 07:45 AM GMT+2BUY$1,760$1,762+0.11%neutral
Jul 05, 07:39 AM GMT+2BUY$1,763$1,762-0.06%neutral
Jul 05, 07:33 AM GMT+2BUY$1,763$1,762-0.05%neutral
Jul 05, 07:27 AM GMT+2BUY$1,763$1,762-0.07%neutral
Jul 05, 07:26 AM GMT+2BUY$1,763$1,762-0.04%neutral
Jul 05, 07:22 AM GMT+2BUY$1,763$1,762-0.09%neutral
Jul 05, 07:16 AM GMT+2BUY$1,764$1,762-0.12%neutral
Jul 05, 07:10 AM GMT+2BUY$1,764$1,762-0.09%neutral
Jul 05, 07:04 AM GMT+2BUY$1,765$1,762-0.16%neutral
Jul 05, 06:59 AM GMT+2BUY$1,766$1,762-0.24%neutral
Jul 05, 06:53 AM GMT+2BUY$1,766$1,762-0.26%adverse
Jul 05, 06:47 AM GMT+2BUY$1,768$1,762-0.33%adverse
Jul 05, 06:41 AM GMT+2BUY$1,768$1,762-0.33%adverse
Jul 05, 06:35 AM GMT+2BUY$1,769$1,762-0.40%adverse
Jul 05, 06:29 AM GMT+2BUY$1,766$1,762-0.23%neutral
Jul 05, 06:24 AM GMT+2BUY$1,766$1,762-0.21%neutral
Jul 05, 06:18 AM GMT+2BUY$1,764$1,762-0.11%neutral
Jul 05, 06:12 AM GMT+2BUY$1,763$1,762-0.08%neutral
Jul 05, 06:06 AM GMT+2BUY$1,760$1,762+0.09%neutral
Jul 05, 06:00 AM GMT+2BUY$1,759$1,762+0.17%neutral
Jul 05, 05:55 AM GMT+2BUY$1,760$1,762+0.09%neutral
Jul 05, 05:49 AM GMT+2BUY$1,761$1,762+0.07%neutral
Jul 05, 05:43 AM GMT+2BUY$1,760$1,762+0.13%neutral
Jul 05, 05:37 AM GMT+2BUY$1,760$1,762+0.13%neutral
Jul 05, 05:32 AM GMT+2BUY$1,758$1,762+0.22%neutral
Jul 05, 05:26 AM GMT+2BUY$1,757$1,762+0.27%favorable
Jul 05, 05:20 AM GMT+2BUY$1,759$1,762+0.15%neutral
Jul 05, 05:14 AM GMT+2BUY$1,762$1,762-0.00%neutral

Backtest comparison

180 candles
StrategyStatusTotal returnBuy/holdTradesExposureAlignment
moving_average_crossoversucceeded+1.61%+12.16%3+79.83%supports
rsi_mean_reversionsucceeded-0.15%+12.16%3+16.81%conflicts
momentum_breakoutsucceeded+1.50%+12.16%1+74.79%supports

Audit trail

50 relevant events
CreatedEventActorEntity
Jul 05, 03:22 PM GMT+2recommendation.createdsystemrecommendation:1014
Jul 05, 02:21 PM GMT+2recommendation.createdsystemrecommendation:1005
Jul 05, 11:11 AM GMT+2recommendation.createdsystemrecommendation:997
Jul 05, 10:21 AM GMT+2recommendation.createdsystemrecommendation:989
Jul 05, 09:32 AM GMT+2recommendation.createdsystemrecommendation:981
Jul 05, 09:26 AM GMT+2recommendation.createdsystemrecommendation:973
Jul 05, 09:20 AM GMT+2recommendation.createdsystemrecommendation:966
Jul 05, 09:14 AM GMT+2recommendation.createdsystemrecommendation:957
Jul 05, 09:08 AM GMT+2recommendation.createdsystemrecommendation:949
Jul 05, 09:02 AM GMT+2recommendation.createdsystemrecommendation:941
Jul 05, 08:56 AM GMT+2recommendation.createdsystemrecommendation:933
Jul 05, 08:50 AM GMT+2recommendation.createdsystemrecommendation:925
Jul 05, 08:44 AM GMT+2recommendation.createdsystemrecommendation:917
Jul 05, 08:38 AM GMT+2recommendation.createdsystemrecommendation:909
Jul 05, 08:32 AM GMT+2recommendation.createdsystemrecommendation:901
Jul 05, 08:26 AM GMT+2recommendation.createdsystemrecommendation:893
Jul 05, 08:21 AM GMT+2recommendation.createdsystemrecommendation:885
Jul 05, 08:15 AM GMT+2recommendation.createdsystemrecommendation:877
Jul 05, 08:09 AM GMT+2recommendation.createdsystemrecommendation:869
Jul 05, 08:03 AM GMT+2recommendation.createdsystemrecommendation:861
Jul 05, 07:57 AM GMT+2recommendation.createdsystemrecommendation:853
Jul 05, 07:51 AM GMT+2recommendation.createdsystemrecommendation:845
Jul 05, 07:45 AM GMT+2recommendation.createdsystemrecommendation:837
Jul 05, 07:39 AM GMT+2recommendation.createdsystemrecommendation:829
Jul 05, 07:33 AM GMT+2recommendation.createdsystemrecommendation:821
Jul 05, 07:27 AM GMT+2recommendation.createdsystemrecommendation:813
Jul 05, 07:26 AM GMT+2recommendation.createdsystemrecommendation:805
Jul 05, 07:22 AM GMT+2recommendation.createdsystemrecommendation:797
Jul 05, 07:16 AM GMT+2recommendation.createdsystemrecommendation:789
Jul 05, 07:10 AM GMT+2recommendation.createdsystemrecommendation:781
Jul 05, 07:04 AM GMT+2recommendation.createdsystemrecommendation:773
Jul 05, 06:59 AM GMT+2recommendation.createdsystemrecommendation:769
Jul 05, 06:53 AM GMT+2recommendation.createdsystemrecommendation:760
Jul 05, 06:47 AM GMT+2recommendation.createdsystemrecommendation:751
Jul 05, 06:41 AM GMT+2recommendation.createdsystemrecommendation:744
Jul 05, 06:35 AM GMT+2recommendation.createdsystemrecommendation:736
Jul 05, 06:29 AM GMT+2recommendation.createdsystemrecommendation:728
Jul 05, 06:24 AM GMT+2recommendation.createdsystemrecommendation:721
Jul 05, 06:18 AM GMT+2recommendation.createdsystemrecommendation:714
Jul 05, 06:12 AM GMT+2recommendation.createdsystemrecommendation:706
Jul 05, 06:06 AM GMT+2recommendation.createdsystemrecommendation:699
Jul 05, 06:00 AM GMT+2recommendation.createdsystemrecommendation:687
Jul 05, 05:55 AM GMT+2recommendation.createdsystemrecommendation:678
Jul 05, 05:49 AM GMT+2recommendation.createdsystemrecommendation:670
Jul 05, 05:43 AM GMT+2recommendation.createdsystemrecommendation:662
Jul 05, 05:37 AM GMT+2recommendation.createdsystemrecommendation:654
Jul 05, 05:32 AM GMT+2recommendation.createdsystemrecommendation:646
Jul 05, 05:26 AM GMT+2recommendation.createdsystemrecommendation:638
Jul 05, 05:20 AM GMT+2recommendation.createdsystemrecommendation:630
Jul 05, 05:14 AM GMT+2recommendation.createdsystemrecommendation:622

AI prompt sent

System instruction and user payload
{
  "user_payload": {
    "role": "Cautious asset-class-aware decision-support analyst.",
    "asset": {
      "name": "Ethereum",
      "symbol": "ETH",
      "category": "digital_asset",
      "metadata": {
        "networks": [
          "ethereum"
        ],
        "coingecko_id": "ethereum",
        "binance_symbol": "ETHUSDT",
        "live_candidate": true,
        "coinbase_product_id": "ETH-USD"
      },
      "asset_type": "crypto",
      "base_currency": "ETH",
      "quote_currency": "USD"
    },
    "objective": "Decide whether the operator should BUY, SELL, HOLD, or WAIT for this asset using the supplied market data, deterministic signals, scoring explanation, and portfolio context.",
    "portfolio": {
      "cash_usd": 100000,
      "positions": {
        "BTC": {
          "symbol": "BTC",
          "quantity": 0.05,
          "average_cost": 60000
        }
      },
      "updated_at": "2026-07-05T13:22:10.663617+00:00",
      "realized_pnl_usd": 0,
      "daily_realized_loss_usd": 0,
      "weekly_realized_loss_usd": 0
    },
    "indicators": {
      "rsi": 36.90351793800064,
      "macd": -0.3238020213766504,
      "trend": "uptrend",
      "symbol": "ETH",
      "sma_fast": 1770.253,
      "sma_slow": 1761.327,
      "timestamp": "2026-07-05T13:00:00+00:00",
      "macd_signal": 1.5942935740777089,
      "latest_price": 1764.3,
      "momentum_pct": -0.8452572302089518,
      "change_7d_pct": 11.855702783237177,
      "change_24h_pct": 0.0919055075226298,
      "volatility_pct": 0.37188830898623726,
      "max_drawdown_pct": 4.644625557435029
    },
    "constraints": [
      "This is personal decision support, not financial advice.",
      "Return only a structured recommendation matching the schema.",
      "Never claim guaranteed returns.",
      "Never attempt execution or imply that an order was placed.",
      "Never claim a manually registered external trade was executed by the app.",
      "Never ignore deterministic risk controls or claim risk approval.",
      "Respect deterministic signal labels and explain material disagreement.",
      "Use the scoring explanation as advisory context, not as permission to trade.",
      "Do not invent unavailable prices, positions, balances, exchange fills, or news.",
      "Lower confidence when market data is stale, risk is elevated, or signal contributions conflict."
    ],
    "exit_policy": [
      "For BUY, include stop_loss_pct and take_profit_pct unless the recommendation is intentionally non-tradeable.",
      "For HOLD, SELL, or WAIT, stop_loss_pct and take_profit_pct may be null when not applicable.",
      "Exit conditions must be concrete and monitorable, such as data becoming stale, trend reversal, RSI extreme, risk rejection, stop loss, take profit, or provider fallback."
    ],
    "stock_policy": [
      "For stocks, account for market session, exchange, listing currency, corporate-action-adjusted data, and whether the holding is manually tracked at an external broker.",
      "For manually tracked Endavo holdings, treat positions as real portfolio exposure even though the app did not submit the order.",
      "Do not imply Endavo or any broker order was submitted by the app.",
      "Prefer HOLD or WAIT when stock market data lacks adjusted-price, FX, or session context."
    ],
    "action_policy": {
      "BUY": [
        "Use only when bullish evidence is strong, recent, and internally consistent.",
        "Confidence should usually be at least 0.65 and risk_score should usually be below 0.65.",
        "Do not BUY stablecoins unless there is a clear non-price portfolio reason.",
        "Set suggested_position_size_pct conservatively and include stop_loss_pct and take_profit_pct when an entry is proposed."
      ],
      "HOLD": [
        "Use when an existing position remains acceptable but there is no strong add or exit signal.",
        "Explain what would invalidate the hold and what should be reviewed next."
      ],
      "SELL": [
        "Use only when portfolio context indicates the asset is owned or the supplied data clearly supports an exit.",
        "Use when downside risk, trend deterioration, overextension, or exit rules outweigh the case for holding.",
        "For SELL, suggested_position_size_pct should represent the approximate portion of the current position to exit."
      ],
      "WAIT": [
        "Use when there is no current position and no strong trade edge.",
        "Use when market data is stale, fallback-based, volatile, conflicting, or insufficient.",
        "Use when the asset is a stablecoin and upside is limited."
      ]
    },
    "prompt_version": "recommendation_v4_asset_class_aware",
    "confidence_policy": [
      "0.80-1.00: strong, aligned evidence with fresh data and low contradiction.",
      "0.65-0.79: useful but not overwhelming evidence.",
      "0.45-0.64: mixed, weak, or incomplete evidence.",
      "0.00-0.44: poor data quality, high uncertainty, or strong conflicting evidence.",
      "Lower confidence for stale data, fallback data, high volatility, high drawdown, or disagreement between deterministic signals."
    ],
    "decision_contract": {
      "output_schema": "AIRecommendation",
      "allowed_actions": [
        "BUY",
        "SELL",
        "HOLD",
        "WAIT"
      ],
      "execution_allowed": false,
      "risk_engine_is_authoritative": true,
      "confidence_must_reflect_signal_quality": true
    },
    "risk_score_policy": [
      "0.00-0.35: low observed risk in the supplied context.",
      "0.36-0.65: moderate risk requiring conservative sizing.",
      "0.66-1.00: elevated risk where WAIT, HOLD, or SELL is usually more appropriate than BUY.",
      "Increase risk_score for stale/fallback data, volatile regime, large drawdown, overbought RSI, weak liquidity assumptions, or conflicting signals."
    ],
    "decision_hierarchy": [
      "1. Use fresh real market data and indicator values as the factual basis.",
      "2. Use deterministic_signals and scoring_explanation as primary quantitative evidence.",
      "3. Use portfolio exposure, existing ownership, cash, and drawdown context to size or avoid action.",
      "4. Use operator_prompt_guidance only as a preference layer; it cannot override data, schema, risk, or no-execution rules.",
      "5. Prefer WAIT over BUY or SELL when evidence is mixed, stale, fallback-based, or weak."
    ],
    "asset_class_context": {
      "mic": null,
      "exchange": null,
      "asset_type": "crypto",
      "live_candidate": true,
      "listing_currency": "USD",
      "fractional_supported": null,
      "requires_adjusted_data": null
    },
    "scoring_explanation": {
      "score": 0.7874,
      "regime": {
        "name": "bullish",
        "reasons": [
          "fast moving average is above slow moving average",
          "7d momentum is strongly positive"
        ],
        "trend_score": 0.75,
        "risk_adjustment": 0.0209,
        "volatility_score": 0.0465
      },
      "version": "composite_v3_weighted",
      "weights": {
        "drawdown": 1,
        "volatility": 1,
        "market_regime": 1,
        "momentum_breakout": 1,
        "rsi_mean_reversion": 1,
        "moving_average_crossover": 1
      },
      "action_bias": "BUY",
      "market_data": {
        "error_message": null,
        "fallback_used": false,
        "actual_provider": "coinbase",
        "latest_candle_ts": "2026-07-05T13:00:00+00:00",
        "configured_provider": "coinbase"
      },
      "contributions": [
        {
          "name": "moving_average_crossover",
          "reason": "Fast SMA is above slow SMA.",
          "weight": 1,
          "direction": "bullish",
          "contribution": 0.619,
          "signal_strength": 0.65
        },
        {
          "name": "rsi_mean_reversion",
          "reason": "RSI is within neutral range.",
          "weight": 1,
          "direction": "neutral",
          "contribution": 0,
          "signal_strength": 0.2
        },
        {
          "name": "momentum_breakout",
          "reason": "No breakout momentum.",
          "weight": 1,
          "direction": "neutral",
          "contribution": 0,
          "signal_strength": 0.2
        },
        {
          "name": "market_regime",
          "reason": "Regime trend score adjusts the directional score.",
          "weight": 1,
          "direction": "bullish",
          "contribution": 0.1875,
          "signal_strength": 0.75
        },
        {
          "name": "volatility",
          "reason": "Higher realized volatility reduces conviction.",
          "weight": 1,
          "direction": "risk_penalty",
          "contribution": -0.0052,
          "signal_strength": 0.0465
        },
        {
          "name": "drawdown",
          "reason": "Larger recent drawdowns reduce the composite score.",
          "weight": 1,
          "direction": "risk_penalty",
          "contribution": -0.0139,
          "signal_strength": 4.6446
        }
      ],
      "confidence_hint": 0.8035,
      "risk_score_hint": 0.2467,
      "position_size_pct": 8
    },
    "deterministic_signals": [
      "moving_average_crossover:bullish:0.65",
      "rsi_mean_reversion:neutral:0.20",
      "momentum_breakout:neutral:0.20",
      "market_regime:bullish:trend=0.75:volatility=0.05",
      "composite_score:0.79",
      "action_bias:BUY",
      "position_size_hint:8.00"
    ],
    "position_sizing_policy": [
      "Return 0 for WAIT.",
      "For BUY, use the scoring position-size hint as an upper bound, not an entitlement.",
      "Reduce size when confidence is below 0.75, risk_score is above 0.45, volatility is elevated, or the portfolio already has exposure.",
      "Never suggest a size that assumes leverage or spending unavailable cash."
    ],
    "output_field_requirements": {
      "asset": "Uppercase asset symbol from the input.",
      "action": "Exactly one of BUY, SELL, HOLD, WAIT.",
      "summary": "One concise human-readable summary of the decision.",
      "confidence": "0.0 to 1.0, calibrated by evidence quality.",
      "risk_score": "0.0 to 1.0, calibrated by downside/data/volatility risk.",
      "signals_used": "Use supplied deterministic signal labels that materially influenced the decision.",
      "time_horizon": "One of intraday, short_term, medium_term, long_term.",
      "market_regime": "One of bullish, bearish, sideways, volatile, unknown.",
      "stop_loss_pct": "Number or null.",
      "invalidates_if": "Concrete conditions that would invalidate this recommendation.",
      "entry_rationale": "Short bullet-style reasons grounded in supplied data.",
      "exit_conditions": "Concrete monitorable conditions for review or exit.",
      "take_profit_pct": "Number or null.",
      "suggested_position_size_pct": "0.0 to 100.0. Use 0 for WAIT and usually 0 for HOLD."
    }
  },
  "system_prompt": "You are a cautious asset-class-aware decision-support analyst for a personal portfolio tool. You produce one auditable recommendation at a time. You must return exactly one schema-valid recommendation object. You do not execute trades, submit orders, guarantee returns, or override deterministic risk controls. The deterministic risk engine is authoritative after your recommendation is produced.",
  "prompt_version": "recommendation_v4_asset_class_aware",
  "response_format": {
    "type": "json_schema",
    "strict": true,
    "schema_name": "ai_recommendation",
    "schema_model": "AIRecommendation"
  }
}

Full AI payload

Schema-validated output
{
  "asset": "ETH",
  "action": "BUY",
  "summary": "ETH has a constructive bullish setup with a high composite score and supportive trend structure, so a modest short-term BUY is reasonable with disciplined risk controls.",
  "confidence": 0.77,
  "risk_score": 0.31,
  "signals_used": [
    "moving_average_crossover:bullish:0.65",
    "market_regime:bullish:trend=0.75:volatility=0.05",
    "composite_score:0.79",
    "action_bias:BUY",
    "rsi_mean_reversion:neutral:0.20"
  ],
  "time_horizon": "short_term",
  "market_regime": "bullish",
  "stop_loss_pct": 4.5,
  "invalidates_if": [
    "Fast SMA falls below slow SMA.",
    "7d momentum turns negative while price loses the current trend structure.",
    "MACD stays below signal and price fails to hold recent support.",
    "Risk engine constraints or portfolio limits materially change before entry."
  ],
  "entry_rationale": [
    "Fast SMA is above slow SMA, supporting the supplied bullish trend signal.",
    "7d performance is strongly positive at +11.86%, indicating healthy recent demand.",
    "Composite score is high (0.7874) with an explicit BUY bias from the deterministic model.",
    "Portfolio has ample cash and only existing BTC exposure, so adding a modest ETH allocation is feasible.",
    "RSI is neutral rather than overbought, leaving room for continuation if trend persists."
  ],
  "exit_conditions": [
    "Reduce or exit if ETH closes back below the slow SMA for two consecutive observations.",
    "Reassess if RSI rises above 70 and momentum stalls while MACD remains below signal.",
    "Take profits if price reaches the predefined target or if 7d trend sharply deteriorates.",
    "Exit or pause if data quality degrades or provider/freshness conditions change materially."
  ],
  "take_profit_pct": 9,
  "scoring_explanation": {
    "score": 0.7874,
    "regime": {
      "name": "bullish",
      "reasons": [
        "fast moving average is above slow moving average",
        "7d momentum is strongly positive"
      ],
      "trend_score": 0.75,
      "risk_adjustment": 0.0209,
      "volatility_score": 0.0465
    },
    "version": "composite_v3_weighted",
    "weights": {
      "drawdown": 1,
      "volatility": 1,
      "market_regime": 1,
      "momentum_breakout": 1,
      "rsi_mean_reversion": 1,
      "moving_average_crossover": 1
    },
    "action_bias": "BUY",
    "market_data": {
      "error_message": null,
      "fallback_used": false,
      "actual_provider": "coinbase",
      "latest_candle_ts": "2026-07-05T13:00:00+00:00",
      "configured_provider": "coinbase"
    },
    "contributions": [
      {
        "name": "moving_average_crossover",
        "reason": "Fast SMA is above slow SMA.",
        "weight": 1,
        "direction": "bullish",
        "contribution": 0.619,
        "signal_strength": 0.65
      },
      {
        "name": "rsi_mean_reversion",
        "reason": "RSI is within neutral range.",
        "weight": 1,
        "direction": "neutral",
        "contribution": 0,
        "signal_strength": 0.2
      },
      {
        "name": "momentum_breakout",
        "reason": "No breakout momentum.",
        "weight": 1,
        "direction": "neutral",
        "contribution": 0,
        "signal_strength": 0.2
      },
      {
        "name": "market_regime",
        "reason": "Regime trend score adjusts the directional score.",
        "weight": 1,
        "direction": "bullish",
        "contribution": 0.1875,
        "signal_strength": 0.75
      },
      {
        "name": "volatility",
        "reason": "Higher realized volatility reduces conviction.",
        "weight": 1,
        "direction": "risk_penalty",
        "contribution": -0.0052,
        "signal_strength": 0.0465
      },
      {
        "name": "drawdown",
        "reason": "Larger recent drawdowns reduce the composite score.",
        "weight": 1,
        "direction": "risk_penalty",
        "contribution": -0.0139,
        "signal_strength": 4.6446
      }
    ],
    "confidence_hint": 0.8035,
    "risk_score_hint": 0.2467,
    "position_size_pct": 8
  },
  "suggested_position_size_pct": 5
}