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
Confidence81%
Market regimebullish
Composite score0.98
Data age60m

Manual approval path

needs review
Trade ticketAPTUSDTSideBUYSuggested quantity161.83848519Reference price$0.6179
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+2StatussuccessLatency178 msLast eventJul 05, 03:38 PM GMT+2Last successJul 05, 03:00 PM GMT+2ErrorNoneProvider countscoinbase: 201

Latest price data

Jul 05, 03:00 PM GMT+2
Open$0.6191
High$0.6204
Low$0.6177
Close$0.6179
Volume8,781.433

Recommendation metadata

Jul 05, 11:11 AM 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_price0.6201
change_24h_pct-0.97413
change_7d_pct6.564702
volatility_pct0.566572
trenddowntrend
sma_fast0.622865
sma_slow0.626442
rsi39.655172
macd-0.002725
macd_signal-0.002557
max_drawdown_pct6.196039
momentum_pct-1.147776

Deterministic signals

6 signals
moving_average_crossover:bullish:0.65rsi_mean_reversion:bullish:0.70market_regime:bullish:trend=0.55:volatility=0.07composite_score:0.98action_bias:BUYposition_size_hint:8.00

Scoring explanation

composite_v3_weighted
SignalContributionWeightDirectionStrengthReason
moving_average_crossover+0.41941.00xbullish0.65Fast SMA is above slow SMA.
rsi_mean_reversion+0.45161.00xbullish0.7RSI is near oversold.
momentum_breakout+0.00001.00xneutral0.2No breakout momentum.
market_regime+0.13751.00xbullish0.55Regime trend score adjusts the directional score.
volatility-0.00801.00xrisk_penalty0.0709Higher realized volatility reduces conviction.
drawdown-0.01861.00xrisk_penalty6.196Larger recent drawdowns reduce the composite score.

Recommendation history

25 recent decisions
CreatedActionConfidenceRiskPriceStatusSummary
Jul 05, 11:11 AM GMT+2BUY81%31%$0.6212approved_by_riskAPT has a bullish trend/mean-reversion setup with strong composite support, so a modest short-term BUY is reasonable, but sizing should stay conservative because momentum is still negative and recent drawdown remains non-trivial.
Jul 05, 10:21 AM GMT+2BUY76%41%$0.6208approved_by_riskAPT shows a strong bullish composite with oversold RSI support, so a cautious short-term BUY is justified with reduced sizing and defined risk controls.
Jul 05, 09:32 AM GMT+2WAIT58%57%$0.6175rejected_by_riskMixed technicals and only moderate composite strength justify waiting rather than opening a new APT position right now.
Jul 05, 09:26 AM GMT+2BUY68%31%$0.6168approved_by_riskSmall speculative BUY: bullish trend and oversold RSI outweigh negative short-term momentum, so a conservative starter position is justified with tight risk controls.
Jul 05, 09:20 AM GMT+2WAIT54%56%$0.6165approved_by_riskAPT has some bullish reversal features, but the evidence is still mixed and not strong enough to justify a new position; waiting for confirmation is the cautious choice.
Jul 05, 09:02 AM GMT+2BUY76%34%$0.6167rejected_by_riskAPT shows a favorable short-term buy setup with bullish trend structure and oversold RSI support, but the position should stay modest because momentum confirmation is still mixed.
Jul 05, 08:56 AM GMT+2BUY78%33%$0.6171rejected_by_riskAPT shows a bullish-but-pulled-back setup: strong composite signals and bullish trend structure support a cautious starter BUY with moderate size and defined risk controls.
Jul 05, 08:50 AM GMT+2BUY74%34%$0.6166rejected_by_riskAPT shows a short-term bullish setup with oversold mean-reversion support and a bullish moving-average crossover, so a cautious small BUY is reasonable.
Jul 05, 08:45 AM GMT+2BUY78%39%$0.6167rejected_by_riskBullish short-term setup with oversold RSI and supportive moving averages, but momentum is still weak, so a smaller-than-hint BUY is appropriate.
Jul 05, 08:38 AM GMT+2BUY81%38%$0.6161rejected_by_riskBullish setup with oversold mean-reversion support and positive trend alignment; take a small starter BUY with defined risk controls.
Jul 05, 08:33 AM GMT+2BUY75%41%$0.6162rejected_by_riskBuy APT cautiously with a reduced 4% position: the setup is bullish and oversold, but short-term momentum and MACD weakness warrant conservative sizing.
Jul 05, 08:27 AM GMT+2BUY76%43%$0.6152approved_by_riskAPT shows a bullish short-term setup with oversold RSI and a positive composite score, but the weak momentum and modest drawdown justify a smaller-than-hint BUY.
Jul 05, 08:15 AM GMT+2BUY74%34%$0.6153approved_by_riskBUY APT with a smaller-than-hint starter position: bullish trend and oversold RSI support a short-term mean-reversion entry, but recent negative momentum justifies conservative sizing.
Jul 05, 07:22 AM GMT+2BUY78%34%$0.618approved_by_riskBullish trend and oversold RSI support a cautious short-term BUY in APT, but the position should be smaller than the model hint because momentum is still weak and recent downside persists.
Jul 05, 06:58 AM GMT+2BUY79%34%$0.6175rejected_by_riskAPT has a bullish composite setup with supportive trend and mean-reversion signals, but short-term momentum is still weak, so a cautious small BUY is appropriate.
Jul 05, 06:53 AM GMT+2BUY79%32%$0.6173rejected_by_riskAPT shows a bullish-but-not-urgent setup: strong composite signals and mean-reversion support justify a modest short-term BUY with controlled risk.
Jul 05, 06:47 AM GMT+2BUY71%34%$0.6187rejected_by_riskAPT shows a modest bullish setup with supportive trend and composite scoring, but recent short-term momentum is mixed, so a conservative starter BUY is appropriate.
Jul 05, 06:41 AM GMT+2BUY76%39%$0.6179rejected_by_riskAPT has a strong bullish composite setup with a reasonable short-term mean-reversion and trend case, but negative MACD and short-term momentum argue for a cautious, smaller-sized BUY.
Jul 05, 06:35 AM GMT+2BUY82%32%$0.6175rejected_by_riskAPT shows a bullish but not low-risk setup: trend and mean-reversion signals support a modest short-term BUY, sized conservatively.
Jul 05, 06:29 AM GMT+2BUY82%33%$0.617approved_by_riskBullish setup with a favorable composite score and mean-reversion support, but short-term momentum is still mixed, so use a conservative starter BUY size.
Jul 05, 06:23 AM GMT+2BUY76%34%$0.6164approved_by_riskAPT shows a bullish setup with a mild oversold pullback and positive trend structure, so a conservative starter BUY is reasonable.
Jul 05, 06:18 AM GMT+2BUY76%34%$0.6169approved_by_riskAPT shows a bullish but not low-risk setup: trend and mean-reversion signals support a small BUY, so a modest starter allocation is reasonable with tight risk controls.
Jul 05, 06:12 AM GMT+2BUY74%34%$0.6162approved_by_riskBullish short-term setup with oversold RSI and a positive moving-average structure, so a cautious small BUY is reasonable.
Jul 05, 06:06 AM GMT+2BUY74%34%$0.6157approved_by_riskAPT shows a bullish setup with a short-term oversold pullback inside an uptrend, so a cautious starter BUY is reasonable at a reduced size.
Jul 05, 06:01 AM GMT+2BUY71%34%$0.6161rejected_by_riskAPT shows a modest bullish setup with supportive trend and composite scoring, so a cautious BUY is justified with reduced sizing and defined exits.

Outcome history

50 tracked recommendations
RecommendedActionEntryLater priceMoveResult
Jul 05, 11:11 AM GMT+2BUY$0.6212$0.6179-0.53%adverse
Jul 05, 10:21 AM GMT+2BUY$0.6208$0.6179-0.47%adverse
Jul 05, 09:32 AM GMT+2WAIT$0.6175$0.6179+0.06%neutral
Jul 05, 09:26 AM GMT+2BUY$0.6168$0.6179+0.18%neutral
Jul 05, 09:20 AM GMT+2WAIT$0.6165$0.6179+0.23%neutral
Jul 05, 09:02 AM GMT+2BUY$0.6167$0.6179+0.19%neutral
Jul 05, 08:56 AM GMT+2BUY$0.6171$0.6179+0.13%neutral
Jul 05, 08:50 AM GMT+2BUY$0.6166$0.6179+0.21%neutral
Jul 05, 08:45 AM GMT+2BUY$0.6167$0.6179+0.19%neutral
Jul 05, 08:38 AM GMT+2BUY$0.6161$0.6179+0.29%favorable
Jul 05, 08:33 AM GMT+2BUY$0.6162$0.6179+0.28%favorable
Jul 05, 08:27 AM GMT+2BUY$0.6152$0.6179+0.44%favorable
Jul 05, 08:15 AM GMT+2BUY$0.6153$0.6179+0.42%favorable
Jul 05, 07:22 AM GMT+2BUY$0.618$0.6179-0.02%neutral
Jul 05, 06:58 AM GMT+2BUY$0.6175$0.6179+0.06%neutral
Jul 05, 06:53 AM GMT+2BUY$0.6173$0.6179+0.10%neutral
Jul 05, 06:47 AM GMT+2BUY$0.6187$0.6179-0.13%neutral
Jul 05, 06:41 AM GMT+2BUY$0.6179$0.6179+0.00%neutral
Jul 05, 06:35 AM GMT+2BUY$0.6175$0.6179+0.06%neutral
Jul 05, 06:29 AM GMT+2BUY$0.617$0.6179+0.15%neutral
Jul 05, 06:23 AM GMT+2BUY$0.6164$0.6179+0.24%neutral
Jul 05, 06:18 AM GMT+2BUY$0.6169$0.6179+0.16%neutral
Jul 05, 06:12 AM GMT+2BUY$0.6162$0.6179+0.28%favorable
Jul 05, 06:06 AM GMT+2BUY$0.6157$0.6179+0.36%favorable
Jul 05, 06:01 AM GMT+2BUY$0.6161$0.6179+0.29%favorable
Jul 05, 05:55 AM GMT+2BUY$0.6165$0.6179+0.23%neutral
Jul 05, 05:49 AM GMT+2BUY$0.6164$0.6179+0.24%neutral
Jul 05, 05:43 AM GMT+2BUY$0.616$0.6179+0.31%favorable
Jul 05, 05:38 AM GMT+2BUY$0.616$0.6179+0.31%favorable
Jul 05, 05:32 AM GMT+2BUY$0.6155$0.6179+0.39%favorable
Jul 05, 05:26 AM GMT+2BUY$0.6163$0.6179+0.26%favorable
Jul 05, 05:20 AM GMT+2BUY$0.617$0.6179+0.15%neutral
Jul 05, 05:15 AM GMT+2BUY$0.6169$0.6179+0.16%neutral
Jul 05, 05:09 AM GMT+2BUY$0.6169$0.6179+0.16%neutral
Jul 05, 05:03 AM GMT+2BUY$0.6155$0.6179+0.39%favorable
Jul 05, 04:58 AM GMT+2BUY$0.6151$0.6179+0.46%favorable
Jul 05, 04:52 AM GMT+2BUY$0.6158$0.6179+0.34%favorable
Jul 05, 04:46 AM GMT+2BUY$0.6141$0.6179+0.62%favorable
Jul 05, 04:41 AM GMT+2BUY$0.616$0.6179+0.31%favorable
Jul 05, 04:35 AM GMT+2BUY$0.6168$0.6179+0.18%neutral
Jul 05, 04:29 AM GMT+2BUY$0.6151$0.6179+0.46%favorable
Jul 05, 04:23 AM GMT+2BUY$0.6171$0.6179+0.13%neutral
Jul 05, 04:18 AM GMT+2BUY$0.6138$0.6179+0.67%favorable
Jul 05, 04:12 AM GMT+2BUY$0.6159$0.6179+0.32%favorable
Jul 05, 04:06 AM GMT+2BUY$0.6206$0.6179-0.44%adverse
Jul 05, 04:01 AM GMT+2BUY$0.6209$0.6179-0.48%adverse
Jul 05, 03:55 AM GMT+2BUY$0.6206$0.6179-0.44%adverse
Jul 05, 03:49 AM GMT+2BUY$0.6203$0.6179-0.39%adverse
Jul 05, 03:44 AM GMT+2BUY$0.6211$0.6179-0.52%adverse
Jul 05, 03:38 AM GMT+2BUY$0.6216$0.6179-0.60%adverse

Backtest comparison

180 candles
StrategyStatusTotal returnBuy/holdTradesExposureAlignment
moving_average_crossoversucceeded+0.71%+6.64%2+78.99%supports
rsi_mean_reversionsucceeded-0.22%+6.64%1+22.69%conflicts
momentum_breakoutsucceeded+0.95%+6.64%2+83.19%supports

Audit trail

50 relevant events
CreatedEventActorEntity
Jul 05, 11:11 AM GMT+2recommendation.createdsystemrecommendation:1001
Jul 05, 10:21 AM GMT+2recommendation.createdsystemrecommendation:992
Jul 05, 09:32 AM GMT+2recommendation.createdsystemrecommendation:988
Jul 05, 09:26 AM GMT+2recommendation.createdsystemrecommendation:980
Jul 05, 09:20 AM GMT+2recommendation.createdsystemrecommendation:972
Jul 05, 09:02 AM GMT+2recommendation.createdsystemrecommendation:944
Jul 05, 08:56 AM GMT+2recommendation.createdsystemrecommendation:938
Jul 05, 08:50 AM GMT+2recommendation.createdsystemrecommendation:930
Jul 05, 08:45 AM GMT+2recommendation.createdsystemrecommendation:921
Jul 05, 08:38 AM GMT+2recommendation.createdsystemrecommendation:912
Jul 05, 08:33 AM GMT+2recommendation.createdsystemrecommendation:906
Jul 05, 08:27 AM GMT+2recommendation.createdsystemrecommendation:897
Jul 05, 08:15 AM GMT+2recommendation.createdsystemrecommendation:881
Jul 05, 07:22 AM GMT+2recommendation.createdsystemrecommendation:801
Jul 05, 06:58 AM GMT+2recommendation.createdsystemrecommendation:767
Jul 05, 06:53 AM GMT+2recommendation.createdsystemrecommendation:758
Jul 05, 06:47 AM GMT+2recommendation.createdsystemrecommendation:756
Jul 05, 06:41 AM GMT+2recommendation.createdsystemrecommendation:742
Jul 05, 06:35 AM GMT+2recommendation.createdsystemrecommendation:734
Jul 05, 06:29 AM GMT+2recommendation.createdsystemrecommendation:726
Jul 05, 06:23 AM GMT+2recommendation.createdsystemrecommendation:719
Jul 05, 06:18 AM GMT+2recommendation.createdsystemrecommendation:711
Jul 05, 06:12 AM GMT+2recommendation.createdsystemrecommendation:703
Jul 05, 06:06 AM GMT+2recommendation.createdsystemrecommendation:696
Jul 05, 06:01 AM GMT+2recommendation.createdsystemrecommendation:690
Jul 05, 05:55 AM GMT+2recommendation.createdsystemrecommendation:682
Jul 05, 05:49 AM GMT+2recommendation.createdsystemrecommendation:674
Jul 05, 05:43 AM GMT+2recommendation.createdsystemrecommendation:666
Jul 05, 05:38 AM GMT+2recommendation.createdsystemrecommendation:658
Jul 05, 05:32 AM GMT+2recommendation.createdsystemrecommendation:650
Jul 05, 05:26 AM GMT+2recommendation.createdsystemrecommendation:642
Jul 05, 05:20 AM GMT+2recommendation.createdsystemrecommendation:634
Jul 05, 05:15 AM GMT+2recommendation.createdsystemrecommendation:626
Jul 05, 05:09 AM GMT+2recommendation.createdsystemrecommendation:618
Jul 05, 05:03 AM GMT+2recommendation.createdsystemrecommendation:610
Jul 05, 04:58 AM GMT+2recommendation.createdsystemrecommendation:603
Jul 05, 04:52 AM GMT+2recommendation.createdsystemrecommendation:595
Jul 05, 04:46 AM GMT+2recommendation.createdsystemrecommendation:587
Jul 05, 04:41 AM GMT+2recommendation.createdsystemrecommendation:579
Jul 05, 04:35 AM GMT+2recommendation.createdsystemrecommendation:571
Jul 05, 04:29 AM GMT+2recommendation.createdsystemrecommendation:563
Jul 05, 04:23 AM GMT+2recommendation.createdsystemrecommendation:555
Jul 05, 04:18 AM GMT+2recommendation.createdsystemrecommendation:547
Jul 05, 04:12 AM GMT+2recommendation.createdsystemrecommendation:539
Jul 05, 04:06 AM GMT+2recommendation.createdsystemrecommendation:531
Jul 05, 04:01 AM GMT+2recommendation.createdsystemrecommendation:523
Jul 05, 03:55 AM GMT+2recommendation.createdsystemrecommendation:514
Jul 05, 03:49 AM GMT+2recommendation.createdsystemrecommendation:506
Jul 05, 03:44 AM GMT+2recommendation.createdsystemrecommendation:498
Jul 05, 03:38 AM GMT+2recommendation.createdsystemrecommendation:490

AI prompt sent

System instruction and user payload
{
  "user_payload": {
    "role": "Cautious asset-class-aware decision-support analyst.",
    "asset": {
      "name": "Aptos",
      "symbol": "APT",
      "category": "digital_asset",
      "metadata": {
        "networks": [
          "aptos"
        ],
        "coingecko_id": "aptos",
        "binance_symbol": "APTUSDT",
        "live_candidate": true,
        "coinbase_product_id": "APT-USD"
      },
      "asset_type": "crypto",
      "base_currency": "APT",
      "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-05T09:11:48.799437+00:00",
      "realized_pnl_usd": 0,
      "daily_realized_loss_usd": 0,
      "weekly_realized_loss_usd": 0
    },
    "indicators": {
      "rsi": 26.219512195121823,
      "macd": -0.0026437838279098624,
      "trend": "uptrend",
      "symbol": "APT",
      "sma_fast": 0.626795,
      "sma_slow": 0.626762,
      "timestamp": "2026-07-05T09:00:00+00:00",
      "macd_signal": -0.0018630596831027877,
      "latest_price": 0.6212,
      "momentum_pct": -2.449748743718602,
      "change_7d_pct": 6.625472021970472,
      "change_24h_pct": -0.24088646218083454,
      "volatility_pct": 0.5670562749788567,
      "max_drawdown_pct": 6.196038598273229
    },
    "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.9819,
      "regime": {
        "name": "bullish",
        "reasons": [
          "fast moving average is above slow moving average",
          "7d momentum is strongly positive",
          "short-term momentum is negative"
        ],
        "trend_score": 0.55,
        "risk_adjustment": 0.0319,
        "volatility_score": 0.0709
      },
      "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-05T09: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.4194,
          "signal_strength": 0.65
        },
        {
          "name": "rsi_mean_reversion",
          "reason": "RSI is near oversold.",
          "weight": 1,
          "direction": "bullish",
          "contribution": 0.4516,
          "signal_strength": 0.7
        },
        {
          "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.1375,
          "signal_strength": 0.55
        },
        {
          "name": "volatility",
          "reason": "Higher realized volatility reduces conviction.",
          "weight": 1,
          "direction": "risk_penalty",
          "contribution": -0.008,
          "signal_strength": 0.0709
        },
        {
          "name": "drawdown",
          "reason": "Larger recent drawdowns reduce the composite score.",
          "weight": 1,
          "direction": "risk_penalty",
          "contribution": -0.0186,
          "signal_strength": 6.196
        }
      ],
      "confidence_hint": 0.8735,
      "risk_score_hint": 0.2663,
      "position_size_pct": 8
    },
    "deterministic_signals": [
      "moving_average_crossover:bullish:0.65",
      "rsi_mean_reversion:bullish:0.70",
      "momentum_breakout:neutral:0.20",
      "market_regime:bullish:trend=0.55:volatility=0.07",
      "composite_score:0.98",
      "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": "APT",
  "action": "BUY",
  "summary": "APT has a bullish trend/mean-reversion setup with strong composite support, so a modest short-term BUY is reasonable, but sizing should stay conservative because momentum is still negative and recent drawdown remains non-trivial.",
  "confidence": 0.81,
  "risk_score": 0.31,
  "signals_used": [
    "moving_average_crossover:bullish:0.65",
    "rsi_mean_reversion:bullish:0.70",
    "market_regime:bullish:trend=0.55:volatility=0.07",
    "composite_score:0.98",
    "action_bias:BUY",
    "position_size_hint:8.00"
  ],
  "time_horizon": "short_term",
  "market_regime": "bullish",
  "stop_loss_pct": 4.5,
  "invalidates_if": [
    "Fast SMA falls below slow SMA",
    "RSI recovers above 55 without confirming price strength and the setup no longer looks like a mean-reversion entry",
    "Price breaks the stop loss level before any trend confirmation",
    "A fresh update shows materially worse momentum or a bearish regime shift"
  ],
  "entry_rationale": [
    "Fresh Coinbase data is available and internally consistent.",
    "Deterministic signals are strongly bullish overall, with a BUY bias and composite score of 0.9819.",
    "Fast SMA is slightly above slow SMA, supporting a positive trend structure.",
    "RSI at 26.2 suggests near-oversold conditions, favoring mean-reversion upside.",
    "7-day performance is positive despite very weak 24h price change, which supports a pullback-in-uptrend setup.",
    "Portfolio is mostly in cash with no existing APT exposure, so a small starter allocation is feasible."
  ],
  "exit_conditions": [
    "Exit or reassess if fast SMA drops below slow SMA on the next refresh.",
    "Reassess if RSI remains below 25 while price fails to rebound, indicating the oversold setup is not resolving.",
    "Take profits if price advances roughly 10% from entry or if momentum turns positive then fades sharply.",
    "Exit if data quality degrades, provider fallback appears, or the trend regime flips bearish."
  ],
  "take_profit_pct": 9.5,
  "scoring_explanation": {
    "score": 0.9819,
    "regime": {
      "name": "bullish",
      "reasons": [
        "fast moving average is above slow moving average",
        "7d momentum is strongly positive",
        "short-term momentum is negative"
      ],
      "trend_score": 0.55,
      "risk_adjustment": 0.0319,
      "volatility_score": 0.0709
    },
    "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-05T09: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.4194,
        "signal_strength": 0.65
      },
      {
        "name": "rsi_mean_reversion",
        "reason": "RSI is near oversold.",
        "weight": 1,
        "direction": "bullish",
        "contribution": 0.4516,
        "signal_strength": 0.7
      },
      {
        "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.1375,
        "signal_strength": 0.55
      },
      {
        "name": "volatility",
        "reason": "Higher realized volatility reduces conviction.",
        "weight": 1,
        "direction": "risk_penalty",
        "contribution": -0.008,
        "signal_strength": 0.0709
      },
      {
        "name": "drawdown",
        "reason": "Larger recent drawdowns reduce the composite score.",
        "weight": 1,
        "direction": "risk_penalty",
        "contribution": -0.0186,
        "signal_strength": 6.196
      }
    ],
    "confidence_hint": 0.8735,
    "risk_score_hint": 0.2663,
    "position_size_pct": 8
  },
  "suggested_position_size_pct": 5
}