Market Research
Define a market-research question, build the research and review its findings.
Research workflow
Open Market Research, state the goal and ask a question. This is a separate research dialogue: the engine owns the research document, hypotheses, inputs and results, while the chat uses the selected model.
Check sources, instrument, period and data time boundary. A chat answer is different from confirmed experimental evidence: compare the hypothesis with saved inputs and calculation results.
Persistence and continuation
Use the research list to reopen a saved investigation and refresh its state. Record durable decisions in its goal, evidence and hypotheses: recent chat context is bounded and does not replace the saved document.
Handoff to an agent must retain the research ID, project and revision. If inputs changed, inspect the selected snapshot again before another experiment.
Investigate a Situation
Open XTester: Investigate a Situation from the Command Palette, a chart context menu, a screener row or the selected strategy. This scenario uses the existing market research: it needs no separate application or calculation engine.
- Choose or open a research. Set its name, downloaded instruments and UTC period.
- Inspect the rules and signal stage. For closed candles, bounds/cadence align with the timeframe; horizons are cadence multiples. Forming prefixes are selected explicitly and retain model provenance.
- Choose Prepare Research Plan. History has not been read yet: inspect exact rules, observation count, budgets and limitations.
- Explicitly run the reviewed plan. Follow progress, errors and partial results; cancel if needed.
- Inspect the catalog and subsequent price behavior. Open an episode's chart at its observation. For trading PnL, select a strategy and its separate passport.
- Save the definition or export the complete result. Reopen the retained version and research history next time.
Availability depends on the Studio build. If Investigate a Situation is absent, your installed release does not contain it yet. This guide does not establish that your installed application was updated.
The first version looks for observable impulse → consolidation → breakout or return conditions. It does not identify who bought an asset or prove a particular trading algorithm exists. Initial parameters are research assumptions, not a calibrated trading strategy.
The portable definition supplies executable rules. The research name is a note and does not itself change those rules. Expand Rules and Checks to inspect direction, timeframe, windows, relative volume, range, retracement, signal stage, horizons and budgets.
The result retains observed episodes, including expiry, invalidation and non-breakouts. Outcomes start at the selected observed stage with all additional filters, rather than a future successful breakout selected in advance. The default preset studies an established consolidation.
Measured price changes, medians and positive-observation fractions are not trading PnL or a trade win rate. Overlapping episodes are dependent; a matched independent background comparison is not performed. Results are not automatically pooled into laboratory PBO/DSR and do not establish independent OOS.
Missing history, unavailable target observations and horizons beyond the range remain explicitly unknown or censored. Cadence, window and source constrain observation completeness. Modeled intraminute prefixes and a synthetic book do not reconstruct the actual tape, orders or queue.
Plans and results remain available after closing the panel and restarting. Reopening does not execute. Closing a view does not cancel durable research; use explicit cancellation. An exact admitted retry returns the same job, while a changed request needs a new operation. Changed rules or assumptions require another preview.
Save a definition in the shared screener library for code or another client. JSON export retains the entire catalog of a completed or cancelled study, not only the visible page; export is capped at64MiB. Full cross-profile research-journal import is not supported in this version.
Check Strategy Robustness opens the existing passport for the selected project and requires its own plan review/submission. Link only an actual passport of the intended project with verified visibility. It is a separate comparison: a link does not prove the strategy implements the setup or turn episode prices into its PnL. Research never starts a robot or places orders on its own.
The Same Scenario Through Copilot, MCP and Code
Copilot example: Use my downloaded instruments, prepare an impulse/consolidation research plan, and show the rules and budgets before running. The agent uses the same core operations; prompt text does not replace saved rules or exact-plan admission.
MCP: read market_situation_catalog, then use the existing market_research_create and market_situation_preview. Keep researchId, planId, planSha256 and researchRevision. After review, call market_situation_run with the exact plan, current revision, stable operationId and confirm:true. Page/cancel with market_research_job and market_research_cancel; market_situation_plan restores the saved plan.
For a separate passport, first verify the intended project with get_project_info and use ordinary preview_robustness/submit_robustness/get_robustness_passport. market_situation_link_check takes the actual jobId and exact expectedProjectFolder. Selected-session, writer and job-visibility policies remain; no random project is chosen.
In C#, register MarketScreenerDefinition with Setup = new MarketSetupDefinition { SignalStage = MarketSetupStage.Consolidation } through context.Screeners().Create in OnInit. Keep its handle in a field and read Current/Calculate/At in callbacks. It is the same detector as historical research. Future strategy-clock observations are unavailable.
Python/R use create_market_screener; JS/TS/Java/C++ createMarketScreener; Go CreateMarketScreener; Rust create_market_screener; Pine xtester.screener. The portable JSON definition is shared; result rows contain setup stage/time/reason/provisional fields. Numeric features are descriptive; lastPriceExact preserves decimal text.
The scenario needs neither a built-in paid model nor an open panel. Use list_strategy_api/get_strategy_api_doc/get_tool_schema for exact SDK signatures and schemas. Unknown values are not zero, and successful execution is not confirmation of a hypothesis.
Related commands
Command Palette reference
Find these actions by name in the Command Palette; availability depends on the current project and operation state.
xtester.marketResearch.openxtester.marketResearch.refreshxtester.marketResearch.show