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

Manual approval path

needs review
Trade ticketBTCUSDTSideBUYSuggested quantity0.00159615Reference price$62,651
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+2StatussuccessLatency198 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$62,692
High$62,764
Low$62,580
Close$62,651
Volume36.641398

Recommendation metadata

Jul 05, 03:22 PM GMT+2
Risk score33%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_price62,704.92
change_24h_pct0.26691
change_7d_pct4.537383
volatility_pct0.239329
trenduptrend
sma_fast62,867.8095
sma_slow62,617.4146
rsi38.3202
macd13.888482
macd_signal60.638524
max_drawdown_pct3.516108
momentum_pct-0.604773

Deterministic signals

6 signals
moving_average_crossover:bullish:0.65market_regime:bullish:trend=0.45:volatility=0.03composite_score:0.72action_bias:BUYrsi_mean_reversion:neutral:0.20momentum_breakout: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.11251.00xbullish0.45Regime trend score adjusts the directional score.
volatility-0.00341.00xrisk_penalty0.0299Higher realized volatility reduces conviction.
drawdown-0.01051.00xrisk_penalty3.5161Larger recent drawdowns reduce the composite score.

Recommendation history

25 recent decisions
CreatedActionConfidenceRiskPriceStatusSummary
Jul 05, 03:22 PM GMT+2BUY73%33%$62,684approved_by_riskModerate-confidence BUY on BTC: trend and composite signals are supportive, but neutral momentum/RSI and existing exposure justify a smaller-than-hint position with defined risk controls.
Jul 05, 02:22 PM GMT+2BUY72%34%$62,588approved_by_riskBullish trend and mean-reversion signals support a cautious BTC add, but the position should stay modest because momentum is still negative and the setup is not high-conviction enough for aggressive sizing.
Jul 05, 11:11 AM GMT+2HOLD70%42%$62,833approved_by_riskHold the existing BTC position: trend and regime are bullish, but momentum confirmation is incomplete, so adding size now is less compelling than waiting for cleaner strength.
Jul 05, 10:21 AM GMT+2BUY73%29%$62,929approved_by_riskBullish trend and positive composite score justify a cautious short-term BTC add, but neutral RSI and modest momentum call for a smaller-than-hint position with tight risk controls.
Jul 05, 09:32 AM GMT+2BUY79%31%$62,743rejected_by_riskBullish trend and strong deterministic scoring support a modest BTC add, but momentum is not fully confirmed, so sizing stays conservative.
Jul 05, 09:26 AM GMT+2BUY78%31%$62,721approved_by_riskBTC shows a strong bullish composite with an oversold RSI and positive trend structure, so a cautious short-term BUY is justified with modest sizing and defined risk controls.
Jul 05, 09:20 AM GMT+2BUY82%31%$62,678approved_by_riskBTC shows a strong bullish composite with an oversold RSI setup and a modest existing position, so a cautious short-term BUY add is justified at a conservative size.
Jul 05, 09:14 AM GMT+2BUY81%31%$62,701approved_by_riskBullish trend and oversold RSI support a cautious short-term BUY in BTC, sized below the model hint because momentum is weak and the portfolio already holds a small BTC position.
Jul 05, 09:08 AM GMT+2BUY82%31%$62,716approved_by_riskBuy BTC cautiously on strong bullish composite signals and an oversold RSI, using a smaller-than-hint position because you already hold some BTC and recent momentum is still mixed.
Jul 05, 09:02 AM GMT+2BUY81%31%$62,742approved_by_riskBullish BTC setup with a strong composite score and supportive trend/RSI structure; recommend a conservative BUY add of 5% with defined risk controls.
Jul 05, 08:57 AM GMT+2HOLD70%34%$62,738rejected_by_riskHold the existing BTC position: trend remains bullish, but momentum is mixed and the setup does not justify adding risk right now.
Jul 05, 08:51 AM GMT+2HOLD74%34%$62,718rejected_by_riskBullish structure supports continuing to hold the current BTC position, but mixed momentum argues against adding aggressively right now.
Jul 05, 08:45 AM GMT+2HOLD71%34%$62,704rejected_by_riskBTC remains in a mildly bullish structure, but momentum is not strong enough to justify adding size; maintain the existing position and wait for either stronger confirmation or a clearer reversal.
Jul 05, 08:39 AM GMT+2BUY74%31%$62,706rejected_by_riskModest BUY on BTC: trend and composite score are supportive, but momentum is not strong enough for aggressive sizing, so keep the position small with defined risk.
Jul 05, 08:33 AM GMT+2BUY74%28%$62,725rejected_by_riskSmall BUY on BTC is justified by a bullish moving-average trend and positive composite score, but the add should stay conservative because momentum is muted and volatility is non-trivial.
Jul 05, 08:27 AM GMT+2HOLD68%34%$62,721approved_by_riskHold the existing BTC position: the regime is bullish and the composite score supports upside, but mixed momentum signals and existing exposure make adding less attractive right now.
Jul 05, 08:21 AM GMT+2HOLD74%34%$62,725approved_by_riskKeep the existing BTC position unchanged: the trend is still bullish, but momentum and MACD are not strong enough to justify adding size right now.
Jul 05, 08:15 AM GMT+2BUY74%28%$62,660approved_by_riskBullish trend and a strong composite score support a cautious BTC add. Size modestly due to mixed momentum and the existing position, with defined stop and take-profit levels.
Jul 05, 08:09 AM GMT+2BUY76%28%$62,647approved_by_riskBullish trend structure and a strong composite score support a cautious BTC add; size is kept modest due to existing exposure and only moderate conviction.
Jul 05, 08:03 AM GMT+2HOLD73%38%$62,645approved_by_riskBTC remains in a bullish regime with a favorable composite score, but mixed momentum and existing portfolio exposure make HOLD preferable to adding risk right now.
Jul 05, 07:57 AM GMT+2BUY74%31%$62,706rejected_by_riskBullish trend and positive composite scoring support a cautious short-term BUY, sized modestly due to mixed momentum and still-moderate confidence.
Jul 05, 07:51 AM GMT+2BUY74%28%$62,657rejected_by_riskBTC shows a modest bullish setup with a positive composite score and favorable trend structure, so a cautious short-term buy is reasonable with tight risk controls.
Jul 05, 07:45 AM GMT+2HOLD71%33%$62,619rejected_by_riskHold the existing BTC position: the trend is still bullish, but near-term momentum is mixed and the signal quality is not strong enough to justify adding size right now.
Jul 05, 07:39 AM GMT+2HOLD73%34%$62,699rejected_by_riskMaintain the existing BTC position for now. Trend and composite signals are supportive, but mixed momentum and only moderate conviction argue against adding aggressively at this point.
Jul 05, 07:34 AM GMT+2BUY77%27%$62,701rejected_by_riskBTC shows a constructive bullish setup with a strong composite score and supportive moving-average trend, but momentum is not explosive, so this is a moderate-sized short-term BUY rather than an aggressive add.

Outcome history

50 tracked recommendations
RecommendedActionEntryLater priceMoveResult
Jul 05, 03:22 PM GMT+2BUY$62,684PendingPendingpending
Jul 05, 02:22 PM GMT+2BUY$62,588$62,651+0.10%neutral
Jul 05, 11:11 AM GMT+2HOLD$62,833$62,651-0.29%observed
Jul 05, 10:21 AM GMT+2BUY$62,929$62,651-0.44%adverse
Jul 05, 09:32 AM GMT+2BUY$62,743$62,651-0.15%neutral
Jul 05, 09:26 AM GMT+2BUY$62,721$62,651-0.11%neutral
Jul 05, 09:20 AM GMT+2BUY$62,678$62,651-0.04%neutral
Jul 05, 09:14 AM GMT+2BUY$62,701$62,651-0.08%neutral
Jul 05, 09:08 AM GMT+2BUY$62,716$62,651-0.10%neutral
Jul 05, 09:02 AM GMT+2BUY$62,742$62,651-0.15%neutral
Jul 05, 08:57 AM GMT+2HOLD$62,738$62,651-0.14%neutral
Jul 05, 08:51 AM GMT+2HOLD$62,718$62,651-0.11%neutral
Jul 05, 08:45 AM GMT+2HOLD$62,704$62,651-0.09%neutral
Jul 05, 08:39 AM GMT+2BUY$62,706$62,651-0.09%neutral
Jul 05, 08:33 AM GMT+2BUY$62,725$62,651-0.12%neutral
Jul 05, 08:27 AM GMT+2HOLD$62,721$62,651-0.11%neutral
Jul 05, 08:21 AM GMT+2HOLD$62,725$62,651-0.12%neutral
Jul 05, 08:15 AM GMT+2BUY$62,660$62,651-0.01%neutral
Jul 05, 08:09 AM GMT+2BUY$62,647$62,651+0.01%neutral
Jul 05, 08:03 AM GMT+2HOLD$62,645$62,651+0.01%neutral
Jul 05, 07:57 AM GMT+2BUY$62,706$62,651-0.09%neutral
Jul 05, 07:51 AM GMT+2BUY$62,657$62,651-0.01%neutral
Jul 05, 07:45 AM GMT+2HOLD$62,619$62,651+0.05%neutral
Jul 05, 07:39 AM GMT+2HOLD$62,699$62,651-0.08%neutral
Jul 05, 07:34 AM GMT+2BUY$62,701$62,651-0.08%neutral
Jul 05, 07:28 AM GMT+2HOLD$62,716$62,651-0.10%neutral
Jul 05, 07:26 AM GMT+2BUY$62,696$62,651-0.07%neutral
Jul 05, 07:22 AM GMT+2HOLD$62,718$62,651-0.11%neutral
Jul 05, 07:16 AM GMT+2HOLD$62,699$62,651-0.08%neutral
Jul 05, 07:10 AM GMT+2HOLD$62,690$62,651-0.06%neutral
Jul 05, 07:04 AM GMT+2HOLD$62,712$62,651-0.10%neutral
Jul 05, 06:59 AM GMT+2HOLD$62,777$62,651-0.20%neutral
Jul 05, 06:53 AM GMT+2HOLD$62,769$62,651-0.19%neutral
Jul 05, 06:47 AM GMT+2BUY$62,804$62,651-0.24%neutral
Jul 05, 06:41 AM GMT+2BUY$62,870$62,651-0.35%adverse
Jul 05, 06:35 AM GMT+2BUY$62,862$62,651-0.34%adverse
Jul 05, 06:29 AM GMT+2BUY$62,800$62,651-0.24%neutral
Jul 05, 06:24 AM GMT+2HOLD$62,788$62,651-0.22%neutral
Jul 05, 06:18 AM GMT+2BUY$62,746$62,651-0.15%neutral
Jul 05, 06:12 AM GMT+2HOLD$62,743$62,651-0.15%neutral
Jul 05, 06:01 AM GMT+2HOLD$62,668$62,651-0.03%neutral
Jul 05, 05:55 AM GMT+2BUY$62,712$62,651-0.10%neutral
Jul 05, 05:49 AM GMT+2HOLD$62,708$62,651-0.09%neutral
Jul 05, 05:43 AM GMT+2BUY$62,690$62,651-0.06%neutral
Jul 05, 05:38 AM GMT+2HOLD$62,672$62,651-0.03%neutral
Jul 05, 05:32 AM GMT+2HOLD$62,659$62,651-0.01%neutral
Jul 05, 05:26 AM GMT+2BUY$62,638$62,651+0.02%neutral
Jul 05, 05:21 AM GMT+2HOLD$62,655$62,651-0.01%neutral
Jul 05, 05:15 AM GMT+2HOLD$62,725$62,651-0.12%neutral
Jul 05, 05:09 AM GMT+2BUY$62,711$62,651-0.10%neutral

Backtest comparison

180 candles
StrategyStatusTotal returnBuy/holdTradesExposureAlignment
moving_average_crossoversucceeded+0.75%+4.37%1+75.83%supports
rsi_mean_reversionsucceeded-0.03%+4.37%3+15.83%conflicts
momentum_breakoutsucceeded+0.51%+4.37%1+75.00%supports

Audit trail

50 relevant events
CreatedEventActorEntity
Jul 05, 03:22 PM GMT+2recommendation.createdsystemrecommendation:1016
Jul 05, 02:22 PM GMT+2recommendation.createdsystemrecommendation:1007
Jul 05, 11:11 AM GMT+2recommendation.createdsystemrecommendation:999
Jul 05, 10:21 AM GMT+2recommendation.createdsystemrecommendation:994
Jul 05, 09:32 AM GMT+2recommendation.createdsystemrecommendation:982
Jul 05, 09:26 AM GMT+2recommendation.createdsystemrecommendation:974
Jul 05, 09:20 AM GMT+2recommendation.createdsystemrecommendation:965
Jul 05, 09:14 AM GMT+2recommendation.createdsystemrecommendation:958
Jul 05, 09:08 AM GMT+2recommendation.createdsystemrecommendation:950
Jul 05, 09:02 AM GMT+2recommendation.createdsystemrecommendation:942
Jul 05, 08:57 AM GMT+2recommendation.createdsystemrecommendation:940
Jul 05, 08:51 AM GMT+2recommendation.createdsystemrecommendation:932
Jul 05, 08:45 AM GMT+2recommendation.createdsystemrecommendation:923
Jul 05, 08:39 AM GMT+2recommendation.createdsystemrecommendation:914
Jul 05, 08:33 AM GMT+2recommendation.createdsystemrecommendation:908
Jul 05, 08:27 AM GMT+2recommendation.createdsystemrecommendation:899
Jul 05, 08:21 AM GMT+2recommendation.createdsystemrecommendation:890
Jul 05, 08:15 AM GMT+2recommendation.createdsystemrecommendation:883
Jul 05, 08:09 AM GMT+2recommendation.createdsystemrecommendation:874
Jul 05, 08:03 AM GMT+2recommendation.createdsystemrecommendation:866
Jul 05, 07:57 AM GMT+2recommendation.createdsystemrecommendation:857
Jul 05, 07:51 AM GMT+2recommendation.createdsystemrecommendation:849
Jul 05, 07:45 AM GMT+2recommendation.createdsystemrecommendation:841
Jul 05, 07:39 AM GMT+2recommendation.createdsystemrecommendation:834
Jul 05, 07:34 AM GMT+2recommendation.createdsystemrecommendation:826
Jul 05, 07:28 AM GMT+2recommendation.createdsystemrecommendation:818
Jul 05, 07:26 AM GMT+2recommendation.createdsystemrecommendation:810
Jul 05, 07:22 AM GMT+2recommendation.createdsystemrecommendation:803
Jul 05, 07:16 AM GMT+2recommendation.createdsystemrecommendation:794
Jul 05, 07:10 AM GMT+2recommendation.createdsystemrecommendation:786
Jul 05, 07:04 AM GMT+2recommendation.createdsystemrecommendation:779
Jul 05, 06:59 AM GMT+2recommendation.createdsystemrecommendation:772
Jul 05, 06:53 AM GMT+2recommendation.createdsystemrecommendation:763
Jul 05, 06:47 AM GMT+2recommendation.createdsystemrecommendation:754
Jul 05, 06:41 AM GMT+2recommendation.createdsystemrecommendation:747
Jul 05, 06:35 AM GMT+2recommendation.createdsystemrecommendation:739
Jul 05, 06:29 AM GMT+2recommendation.createdsystemrecommendation:730
Jul 05, 06:24 AM GMT+2recommendation.createdsystemrecommendation:723
Jul 05, 06:18 AM GMT+2recommendation.createdsystemrecommendation:716
Jul 05, 06:12 AM GMT+2recommendation.createdsystemrecommendation:708
Jul 05, 06:01 AM GMT+2recommendation.createdsystemrecommendation:691
Jul 05, 05:55 AM GMT+2recommendation.createdsystemrecommendation:684
Jul 05, 05:49 AM GMT+2recommendation.createdsystemrecommendation:676
Jul 05, 05:43 AM GMT+2recommendation.createdsystemrecommendation:668
Jul 05, 05:38 AM GMT+2recommendation.createdsystemrecommendation:660
Jul 05, 05:32 AM GMT+2recommendation.createdsystemrecommendation:652
Jul 05, 05:26 AM GMT+2recommendation.createdsystemrecommendation:644
Jul 05, 05:21 AM GMT+2recommendation.createdsystemrecommendation:636
Jul 05, 05:15 AM GMT+2recommendation.createdsystemrecommendation:628
Jul 05, 05:09 AM GMT+2recommendation.createdsystemrecommendation:620

AI prompt sent

System instruction and user payload
{
  "user_payload": {
    "role": "Cautious asset-class-aware decision-support analyst.",
    "asset": {
      "name": "Bitcoin",
      "symbol": "BTC",
      "category": "digital_asset",
      "metadata": {
        "networks": [
          "bitcoin"
        ],
        "coingecko_id": "bitcoin",
        "binance_symbol": "BTCUSDT",
        "live_candidate": true,
        "coinbase_product_id": "BTC-USD"
      },
      "asset_type": "crypto",
      "base_currency": "BTC",
      "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:18.050345+00:00",
      "realized_pnl_usd": 0,
      "daily_realized_loss_usd": 0,
      "weekly_realized_loss_usd": 0
    },
    "indicators": {
      "rsi": 37.64869078454719,
      "macd": 12.218852178593806,
      "trend": "uptrend",
      "symbol": "BTC",
      "sma_fast": 62866.763,
      "sma_slow": 62616.996,
      "timestamp": "2026-07-05T13:00:00+00:00",
      "macd_signal": 60.304597911240776,
      "latest_price": 62683.99,
      "momentum_pct": -0.6379499876756406,
      "change_7d_pct": 4.502490278536088,
      "change_24h_pct": 0.2334420672231251,
      "volatility_pct": 0.2393318848325467,
      "max_drawdown_pct": 3.5161080506804603
    },
    "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.7176,
      "regime": {
        "name": "bullish",
        "reasons": [
          "fast moving average is above slow moving average"
        ],
        "trend_score": 0.45,
        "risk_adjustment": 0.0135,
        "volatility_score": 0.0299
      },
      "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.1125,
          "signal_strength": 0.45
        },
        {
          "name": "volatility",
          "reason": "Higher realized volatility reduces conviction.",
          "weight": 1,
          "direction": "risk_penalty",
          "contribution": -0.0034,
          "signal_strength": 0.0299
        },
        {
          "name": "drawdown",
          "reason": "Larger recent drawdowns reduce the composite score.",
          "weight": 1,
          "direction": "risk_penalty",
          "contribution": -0.0105,
          "signal_strength": 3.5161
        }
      ],
      "confidence_hint": 0.7783,
      "risk_score_hint": 0.233,
      "position_size_pct": 7.6871
    },
    "deterministic_signals": [
      "moving_average_crossover:bullish:0.65",
      "rsi_mean_reversion:neutral:0.20",
      "momentum_breakout:neutral:0.20",
      "market_regime:bullish:trend=0.45:volatility=0.03",
      "composite_score:0.72",
      "action_bias:BUY",
      "position_size_hint:7.69"
    ],
    "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": "BTC",
  "action": "BUY",
  "summary": "Moderate-confidence BUY on BTC: trend and composite signals are supportive, but neutral momentum/RSI and existing exposure justify a smaller-than-hint position with defined risk controls.",
  "confidence": 0.73,
  "risk_score": 0.33,
  "signals_used": [
    "moving_average_crossover:bullish:0.65",
    "market_regime:bullish:trend=0.45:volatility=0.03",
    "composite_score:0.72",
    "action_bias:BUY",
    "rsi_mean_reversion:neutral:0.20",
    "momentum_breakout:neutral:0.20"
  ],
  "time_horizon": "short_term",
  "market_regime": "bullish",
  "stop_loss_pct": 3.5,
  "invalidates_if": [
    "Fast SMA drops below slow SMA.",
    "BTC loses the current uptrend structure on the next updates.",
    "A fresh update shows materially weaker composite score or a clear bearish regime shift.",
    "Volatility spikes enough to invalidate the conservative sizing assumption."
  ],
  "entry_rationale": [
    "Fast SMA remains above slow SMA, supporting the existing uptrend.",
    "Composite score is favorable (0.7176) with a BUY bias from deterministic signals.",
    "7-day performance is positive, suggesting the broader move remains intact.",
    "RSI is neutral, so the asset is not obviously overbought despite the rally.",
    "Portfolio already holds BTC, but cash is ample and the suggested size is conservative."
  ],
  "exit_conditions": [
    "Exit or reduce if price closes below the slow SMA and the crossover reverses.",
    "Reassess if RSI rises into overbought territory and momentum weakens.",
    "Reassess if the composite score falls materially below 0.60 on updated data.",
    "Reassess if volatility or drawdown expands sharply from current levels."
  ],
  "take_profit_pct": 7,
  "scoring_explanation": {
    "score": 0.7176,
    "regime": {
      "name": "bullish",
      "reasons": [
        "fast moving average is above slow moving average"
      ],
      "trend_score": 0.45,
      "risk_adjustment": 0.0135,
      "volatility_score": 0.0299
    },
    "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.1125,
        "signal_strength": 0.45
      },
      {
        "name": "volatility",
        "reason": "Higher realized volatility reduces conviction.",
        "weight": 1,
        "direction": "risk_penalty",
        "contribution": -0.0034,
        "signal_strength": 0.0299
      },
      {
        "name": "drawdown",
        "reason": "Larger recent drawdowns reduce the composite score.",
        "weight": 1,
        "direction": "risk_penalty",
        "contribution": -0.0105,
        "signal_strength": 3.5161
      }
    ],
    "confidence_hint": 0.7783,
    "risk_score_hint": 0.233,
    "position_size_pct": 7.6871
  },
  "suggested_position_size_pct": 5
}