1. Connect the Bot and keep writes behind approval
In Grok Bot, open Marketplace in the sidebar. If a NexusTrade connector is available, select Add, complete its browser authentication and attach it with @ in this task. For your existing or custom MCP connection, give the Bot the current NexusTrade endpoint below and ask it to complete OAuth discovery. This is a connection request; verify the returned tools and account before continuing.
For sign-in or two-factor authentication, open Agent Computer, take control, finish the sensitive step and return control. Browser sessions and command-line credentials are shared by your account's Bots. Keep the experiment notes in a named folder under /workspace.
Open Settings → General → Auto-review and add Ask first rules for paid research, backtests, portfolio changes and deployment. Review the exact inputs on the approval card and use Allow once for a single accepted operation. The published NexusTrade case study documents Grok Bot MCP and Python SDK use. The SDK guide provides a terminal route when the current connector cannot finish authentication; its API key is separate from MCP OAuth.
Connect this Grok Bot task to NexusTrade MCP at https://nexustrade.io/api/mcp using OAuth discovery. Complete the sign-in handoff with me, list discovered tools, then run only the account read check. Do not launch research or backtests, activate a portfolio or place orders.2. Check the account with an owned portfolio read
Ask the agent to call fetch_portfolios with the arguments below. Compare the returned portfolio names, IDs and types with your NexusTrade account. fetch_portfolios returns portfolioId; pass that exact value as portfolio_id to get_portfolio. Inspect the structured portfolio.portfolioId, portfolio.type, portfolio.isActive, portfolio.strategies, portfolio.initialValue and portfolio.deployment. For a new account, an authenticated empty list is a valid result. Public stock commentary does not establish account access.
This request excludes live books and positions, includes chat drafts and inactive paper books, and returns up to 50 records per page. Follow subsequent pages before concluding a named book is absent. If OAuth expired, reconnect and repeat this read. For a missing tool, inspect the included app, environment and action permissions. An account mismatch must be fixed before a write.
{
"include_live": false,
"include_paper": true,
"include_chat_portfolios": true,
"include_inactive": true,
"include_positions": false,
"limit": 50,
"page": 1
}3. Freeze NVDA saved-strategy review
Proposed mechanics example: one long-only NVDA stock strategy pair, $10,000 starting simulated capital and a 50-trading-day simple moving average. The historical example uses interval Day. Enter only while flat when price is above that average; buy 20% of portfolio value. Exit the entire NVDA holding when price is at or below the same average. Keep the remainder in cash; use no leverage, options or parameter search.
Have the agent show the complete condition and action objects, then call build_portfolio with that full JSON to validate and canonicalize without saving. Review valid, issues and the returned portfolio. Correct each reported issue before approving create_portfolio with the same accepted JSON. The flat-position guard prevents another purchase on every evaluation while the condition stays true. Record how the configuration handles missing prices, warmup and evaluation timing. These are proposed inputs, not a recommended allocation or a tested trading edge.
Draft exactly one new chat portfolio named "Grok Bot NVDA SMA50 review" with initialValue 10000. Use daily NVDA prices and a SimpleMovingAverage window of 50 Day bars. Entry: price > SMA50 AND held PositionValue = 0; buy 20% of portfolio value. Exit: price <= SMA50 AND held PositionValue > 0; sell 100% of that holding. No options, leverage or repeated purchases while held. Show the full condition/action configuration and the dividend policy. Call build_portfolio with the full JSON; inspect valid, issues and the canonicalized portfolio without saving. After I approve saving, call create_portfolio with the same accepted JSON, preserve portfolios[0].portfolioId and read that exact ID with get_portfolio. Do not backtest or deploy yet.4. Review the fixed historical request before submitting
Use January 1, 2021 through December 31, 2023 as the initial inspection window and NVDA buy-and-hold as the baseline. The explicit stock fee is 0.1% of transaction notional. That fee is not a promise that spreads, slippage or live fills are reproduced. Inspect the result warnings and execution assumptions; this example adds no invented slippage parameter.
Use dividend_policy=cash and record that choice for both runs. For SPY, reinvest makes the candidate dividend treatment comparable with the total-return baseline. For a single stock, check the baseline dividend conventions before treating excess return as an identical dividend comparison.
Replace the placeholder with the exact saved chat ID, then approve one backtest_portfolio call. MCP submits the operation when called; it has no separate NexusTrade approval screen. Client approval must happen before the call.
{
"portfolio_id": "<RETURNED_CHAT_PORTFOLIO_ID>",
"start_date": "2021-01-01",
"end_date": "2023-12-31",
"baseline_symbol": "NVDA",
"interval": "Day",
"initial_value": 10000,
"generate_events": false,
"fee_config": {
"Stock": {
"amount": 0.1,
"type": "percent"
}
},
"dividend_policy": "cash"
}The tool sequence
Inspect the discovered inputs before submitting a call. For a new candidate, validate and save it first; for a saved candidate, start with get_portfolio. Record the portfolio and backtest identifiers returned by the account tools.
| Validate a new candidate | build_portfolio | Canonical configuration and component issues; nothing is saved |
| Save the validated draft | create_portfolio | Use the reviewed configuration and retain the returned chat portfolio ID |
| Read the saved book | get_portfolio | Exact strategies, action sizing, and portfolio identity |
| Submit the historical test | backtest_portfolio | Explicit dates, interval, capital and benchmark |
| Poll the same operation | query_backtest_status | Terminal state and warnings; do not resubmit while running |
| Inspect the curve | query_backtest_history | Historical values for the returned backtest_id |
| Compare candidates | compare_backtests | Identical period and assumptions, with activity and risk |
No matching rows. Clear the filter to see all records.
5. Read the accepted backtest and its warnings
Save the accepted ID from the backtest response and use backtest_id in query_backtest_status. PENDING or RUNNING means keep polling that ID. ERROR needs its error and configuration reviewed. Only after the completed status should query_backtest_history supply historical time, value, cash, positionValue and comparisonValue points.
Read the result for the saved configuration and dates. Use status and analysis to inspect return, drawdown, activity and warnings. Inspect a no-trade run before calling it successful: warmup, missing data or conditions may explain it. Missing reservedCollateral on an older run means not recorded, not zero. History retention is limited; keep the report while it is available.
If submission returns no visible ID, inspect the task transcript and the existing backtest record before repeating the call. A polling failure does not establish that submission failed. Preserve the accepted operation identity across connection repair.
Poll query_backtest_status with backtest_id equal to the accepted ID. If it is completed, call query_backtest_history with the same backtest_id, page 1 and page_size 500; follow pagination for the full requested period. Return configuration, cost assumptions, benchmark, drawdown, trades and every warning. Label the output historical simulation. Do not infer missing values or launch a replacement run.6. Reserve a separate evaluation window without revising the rule
Keep the exact saved rule and cost settings. A proposed second window is January 1, 2024 through December 31, 2025, with the same capital, interval, baseline and dividend policy. Submit that second run only after separate approval and retain its own backtest ID. Compare both records, including activity and drawdown.
Those dates are already public history. They count as a held-out evaluation only if the decision-maker has not inspected that rule on them before freezing it. If the agent or reviewer already saw those results, call it retrospective validation and reserve future paper observation instead. One candidate means a budget of one; any revised threshold is a new candidate that must be disclosed.
The 2026 NVDA filing brief is useful current research, but none of its later facts may enter these earlier price-only tests. Historical returns cannot establish whether the earnings thesis will predict future prices.
Keep the saved strategy beside the Bot experiment log
Write the exact NVDA rule, original chat ID, accepted backtest IDs and warnings to /workspace/nvda-experiment. Review the saved configuration yourself. Austin's Grok Bot case study shows why human allocation review remained necessary after historical tests; its results do not substitute for this candidate's own record.
