{
  "app": {
    "version": "v0.1.10"
  },
  "charts": {
    "noPriceData": "No price data",
    "noCorrelationData": "No correlation data",
    "noEquityData": "No equity data"
  },
  "layout": {
    "home": "Home",
    "agent": "Agent",
    "runtime": "Runtime",
    "reports": "Reports",
    "alphaZoo": "Alpha Zoo",
    "settings": "Settings",
    "correlation": "Correlation Matrix",
    "sessions": "Sessions",
    "newChat": "New Chat",
    "noSessions": "No sessions yet",
    "confirm": "Confirm",
    "cancel": "Cancel",
    "rename": "Rename",
    "delete": "Delete",
    "light": "Light",
    "dark": "Dark",
    "collapse": "Collapse",
    "expand": "Expand"
  },
  "runtime": {
    "monitorBadge": "Runtime Monitor",
    "title": "Live / Paper Runtime Status",
    "subtitlePre": "Read-only status from",
    "subtitlePost": ". This page does not authorize connectors, start runners, stop runners, submit orders, cancel orders, or change mandates.",
    "refresh": "Refresh",
    "unavailableTitle": "Runtime status unavailable",
    "unavailableHint": "Treat connector runtime as unavailable until the backend provides a current status snapshot.",
    "statusUnavailable": "Runtime status unavailable.",
    "globalHalt": "Global Halt",
    "halted": "Halted",
    "clear": "Clear",
    "brokers": "Brokers",
    "authorized": "Authorized",
    "runners": "Runners",
    "running": "{{count}} running",
    "noProfilesTitle": "No runtime profiles reported",
    "noProfilesBody": "The backend did not return any recognized live or paper broker profiles.",
    "authPresent": "auth present",
    "authMissing": "auth missing",
    "runnerAlive": "runner alive",
    "runnerStopped": "runner stopped",
    "haltedPill": "halted",
    "recognizedProfile": "Recognized connector profile",
    "unknownProfile": "Unknown connector profile",
    "lastTick": "Last tick",
    "authorization": "Authorization",
    "oauthToken": "OAuth token",
    "present": "present",
    "missing": "missing",
    "profileType": "Profile type",
    "recognized": "recognized",
    "unknown": "unknown",
    "mandate": "Mandate",
    "account": "Account",
    "unrecorded": "unrecorded",
    "expiry": "Expiry",
    "expired": "expired",
    "limits": "Limits",
    "noMandate": "No active mandate reported.",
    "riskStateTitle": "Runtime Risk State",
    "riskHalted": "risk halted",
    "riskHaltedDesc": "The kill switch is tripped for this profile. Treat connector runtime as stopped until status clears.",
    "riskActive": "runtime active",
    "riskActiveDesc": "Runner is alive and an unexpired mandate is present. This page is still read-only status only.",
    "riskIdle": "ready but idle",
    "riskIdleDesc": "Authorization and mandate are present, but the runner is not alive.",
    "riskDormant": "dormant",
    "riskDormantDesc": "Connector runtime is not ready for autonomous operation because authorization, mandate, or runner liveness is missing.",
    "limitsUnavailable": "limits unavailable",
    "perOrder": "/order",
    "exposure": "exposure",
    "perDay": "/day",
    "leverageSuffix": "x leverage",
    "never": "never",
    "ago": "ago"
  },
  "reports": {
    "badge": "Reports",
    "title": "Backtest Report Library",
    "subtitle": "Browse historical backtest reports, metrics, and run details from one place.",
    "refresh": "Refresh",
    "searchPlaceholder": "Search run id, prompt, symbol, status...",
    "allStatuses": "All statuses",
    "startDate": "Start date",
    "endDate": "End date",
    "sort": "Sort",
    "sortNewest": "Newest first",
    "sortOldest": "Oldest first",
    "sortReturn": "Return high to low",
    "sortSharpe": "Sharpe high to low",
    "count": "{{shown}} of {{total}} reports",
    "unavailable": "Report library unavailable",
    "loadError": "Unable to load reports.",
    "emptyTitle": "No reports yet",
    "emptyBody": "Create a backtest from Agent, then return here to review it.",
    "noMatchesTitle": "No matching reports",
    "noMatchesBody": "Adjust your search query, status filter, or date range.",
    "noPrompt": "No prompt recorded.",
    "to": "to",
    "return": "Return",
    "sharpe": "Sharpe",
    "fullReport": "Full Report",
    "compare": "Compare"
  },
  "connection": {
    "reconnecting": "Connection lost, reconnecting (attempt {{attempt}})…",
    "disconnected": "Connection lost"
  },
  "welcome": {
    "title": "Vibe-Trading",
    "subtitle": "vibe trading with your professional financial agent team",
    "describePrompt": "Describe a trading strategy to get started.",
    "tryExample": "Try an example:",
    "categories": {
      "multiMarketBacktest": "A-Share Backtest",
      "researchAnalysis": "Research & Analysis",
      "swarmTeams": "Swarm Teams",
      "docWebResearch": "Document & Web Research",
      "tradeJournal": "Trade Journal",
      "tradingConnectors": "Trading Connectors",
      "shadowAccount": "Shadow Account"
    },
    "examples": {
      "crossMarketPortfolio": "A-Share Portfolio Optimization",
      "crossMarketPortfolioDesc": "A-shares portfolio optimization with risk-parity optimizer",
      "crossMarketPortfolioPrompt": "Build a risk-parity portfolio with 000001.SZ, 600519.SH, 000858.SZ, backtest for the full year of 2024, and compare with equal-weighted benchmark",
      "btcMacd": "A-Share MACD Strategy",
      "btcMacdDesc": "Minute-level A-share MACD strategy backtest",
      "btcMacdPrompt": "Backtest MACD strategy on 000001.SZ 5-minute bars: fast=12, slow=26, signal=9, last 30 days",
      "usTechMaxDiv": "Blue-Chip Max Diversification",
      "usTechMaxDivDesc": "Blue-chip max diversification portfolio",
      "usTechMaxDivPrompt": "Backtest the maximum diversification portfolio for 600519.SH, 000858.SZ, 601318.SH, 000001.SZ, 600036.SH for the full year of 2024",
      "multiFactorAlpha": "Multi-Factor Alpha Model",
      "multiFactorAlphaDesc": "IC-weighted factor synthesis across 300 stocks",
      "multiFactorAlphaPrompt": "Build a multi-factor alpha model using momentum, reversal, volatility, and turnover on CSI 300 constituents with IC-weighted factor synthesis, backtest 2023-2024",
      "optionsGreeks": "Options Greeks Analysis",
      "optionsGreeksDesc": "Black-Scholes pricing with Delta/Gamma/Theta/Vega",
      "optionsGreeksPrompt": "Calculate option Greeks using Black-Scholes: spot=100, strike=105, risk-free rate=3%, vol=25%, expiry=90 days, analyze Delta/Gamma/Theta/Vega",
      "investmentCommittee": "Investment Committee Review",
      "investmentCommitteeDesc": "Multi-agent debate: long vs short, risk review, PM decision",
      "investmentCommitteePrompt": "[Swarm Team Mode] Use the investment_committee preset to evaluate whether to go long or short on 600519.SH given current market conditions",
      "quantStrategyDesk": "Quant Strategy Desk",
      "quantStrategyDeskDesc": "Screening → factor research → backtest → risk audit pipeline",
      "quantStrategyDeskPrompt": "[Swarm Team Mode] Use the quant_strategy_desk preset to find and backtest the best momentum strategy on CSI 300 constituents",
      "earningsReport": "Analyze an Earnings Report PDF",
      "earningsReportDesc": "Upload a PDF and ask questions about the financials",
      "earningsReportPrompt": "Summarize the key financial metrics, risks, and outlook from the uploaded earnings report",
      "macroResearch": "Web Research: Macro Outlook",
      "macroResearchDesc": "Macro analysis and A-share market outlook",
      "macroResearchPrompt": "Read the latest central bank monetary policy report and summarize its impact on the A-share market",
      "analyzeBrokerExport": "Analyze My Broker Export",
      "analyzeBrokerExportDesc": "Parse 同花顺/东财/富途/generic CSV — holding days, win rate, PnL ratio, hourly distribution",
      "analyzeBrokerExportPrompt": "Analyze the trade journal I just uploaded — full profile with holding stats, win rate, top symbols, and hourly distribution",
      "diagnoseBehavior": "Diagnose My Behavior Biases",
      "diagnoseBehaviorDesc": "Disposition effect, overtrading, chasing momentum, anchoring — severity + numeric evidence",
      "diagnoseBehaviorPrompt": "Run the 4 behavior diagnostics on my trade journal (disposition, overtrading, chasing, anchoring) and tell me which bias hurts my PnL most",
      "checkConnector": "Check Selected Connector",
      "checkConnectorDesc": "List connector profiles and verify the selected one",
      "checkConnectorPrompt": "List my trading connector profiles, show which one is selected, then check that selected connector. If it is not ready, tell me exactly what setup step is missing. Do not place or modify orders.",
      "analyzePortfolio": "Analyze Connector Portfolio",
      "analyzePortfolioDesc": "Read account summary and positions from the selected connector",
      "analyzePortfolioPrompt": "Use the selected trading connector profile to summarize my account, positions, concentration, cash, and portfolio risk. Do not place or modify orders.",
      "quoteTrend": "Quote & Trend",
      "quoteTrendDesc": "Fetch a quote plus recent daily bars through the selected connector",
      "quoteTrendPrompt": "Use the selected trading connector to fetch a 600519.SH quote and 30 daily bars, then summarize the current quote versus the recent trend. Keep it read-only.",
      "trainShadow": "Train My Shadow from Journal",
      "trainShadowDesc": "Extract your strategy rules from a broker CSV and persist a Shadow profile",
      "trainShadowPrompt": "Train my shadow account from the trading journal I just uploaded — show the extracted rules and confirm they look like my behavior",
      "shadowDelta": "How Much Am I Leaving on the Table?",
      "shadowDeltaDesc": "Backtest your shadow strategy and attribute delta vs. your actual PnL",
      "shadowDeltaPrompt": "Run a shadow backtest for the last 90 days and break down where my PnL diverged from the shadow (rule violations, early exits, missed signals)",
      "shadowReport": "Generate Shadow Report",
      "shadowReportDesc": "8-section HTML/PDF — equity curve, per-market Sharpe, attribution waterfall",
      "shadowReportPrompt": "Render the shadow report and give me the URL — lead with the you-vs-shadow delta"
    },
    "capabilities": {
      "financeSkills": "Finance Skills Library",
      "swarmTeams": "Swarm Agent Teams",
      "autoTools": "Auto-Discovered Tools",
      "markets": "A-Share · Multi-Factor · Quantitative",
      "connectors": "Trading Connector Profiles",
      "timeframes": "Minute to Daily Timeframes",
      "optimizers": "4 Portfolio Optimizers",
      "riskMetrics": "15+ Risk Metrics",
      "options": "Options & Derivatives",
      "pdfWeb": "PDF & Web Research",
      "factorML": "Factor Analysis & ML",
      "journalAnalyzer": "Trade Journal Analyzer",
      "shadowBacktest": "Shadow Account Backtest",
      "memory": "Persistent Memory",
      "sessionSearch": "Session Search"
    }
  },
  "settings": {
    "title": "Settings",
    "authRequired": "Authentication Required",
    "authDesc": "Enter the API auth key to unlock settings.",
    "dataSources": "Data Sources",
    "llmBackend": "LLM Backend",
    "save": "Save",
    "saving": "Saving…",
    "saved": "Settings saved",
    "saveFailed": "Failed to save",
    "provider": "Provider",
    "refresh": "Refresh",
    "modelName": "Model Name",
    "baseUrl": "Base URL",
    "apiAuthKey": "API Auth Key",
    "loading": "Loading…",
    "temperature": "Temperature",
    "timeoutSeconds": "Timeout (seconds)",
    "maxRetries": "Max Retries",
    "reasoningEffort": "Reasoning Effort",
    "off": "Off",
    "reasoningEffortLow": "Low",
    "reasoningEffortMedium": "Medium",
    "reasoningEffortHigh": "High",
    "reasoningEffortMax": "Max",
    "reasoningEffortDesc": "How hard the model thinks before answering. Higher is more thorough but slower; leave Off for fastest replies.",
    "useDefaultModel": "Use default model",
    "useDefaultUrl": "Use default URL",
    "dataSourcesDesc": "Configure external data sources for the backtesting engine.",
    "tushareDesc": "China A-share historical data (requires TUSHARE_TOKEN env var).",
    "baostockDesc": "Alternative A-share data via TCP protocol (no API key needed).",
    "status": "Status",
    "installed": "Installed",
    "notInstalled": "Not installed",
    "token": "Token",
    "tokenConfigured": "Token configured",
    "tokenNotSet": "TUSHARE_TOKEN env var not set",
    "apiTimeout": "API request timeout",
    "loaderAvailable": "Loader available",
    "noProjectLoader": "No project loader",
    "pythonPackageInstalled": "Python package installed",
    "pythonPackageNotInstalled": "Python package not installed",
    "localApiAccess": "Local API access",
    "localApiAccessDesc": "For remote or private Web UI deployments, enter the server API key once in this browser. Localhost use can stay blank.",
    "serverApiKey": "Server API key",
    "storedInBrowser": "Stored only in this browser. Leave blank to clear it.",
    "localApiKeySaved": "Local API key saved",
    "subtitle": "Configure model credentials and market data source tokens for this local project.",
    "unavailable": "Settings are unavailable",
    "llmSettings": "LLM Settings",
    "llmSettingsDesc": "Choose the model used by the agent and save it to the project-local agent/.env file.",
    "connection": "Connection",
    "model": "Model",
    "useProviderDefaults": "Use provider defaults",
    "modelIdHint": "Use the exact model id required by your provider.",
    "clearApiKey": "Clear saved API key",
    "generation": "Generation",
    "dataSourceSettings": "Data Source Settings",
    "dataSourceSettingsDesc": "Configure optional market data credentials used by backtests and research agents.",
    "tushareToken": "Tushare token",
    "clearTushareToken": "Clear saved Tushare token",
    "saveDataSourceSettings": "Save data source settings",
    "baostock": "BaoStock",
    "loadLlmSettingsFailed": "Failed to load LLM settings: {{message}}",
    "loadDataSourceSettingsFailed": "Failed to load data source settings: {{message}}",
    "llmSettingsSaved": "LLM settings saved",
    "saveLlmSettingsFailed": "Failed to save LLM settings: {{message}}",
    "dataSourceSettingsSaved": "Data source settings saved",
    "saveDataSourceSettingsFailed": "Failed to save data source settings: {{message}}",
    "configured": "Configured",
    "keepCurrentKey": "Leave blank to keep the current key",
    "providerUsesOauth": "This provider uses OAuth. Run: {{command}}",
    "noApiKeyRequired": "This provider does not require an API key.",
    "keepCurrentToken": "Leave blank to keep the current token",
    "iwencaiApiKey": "iWenCai API Key",
    "fredApiKey": "FRED API Key",
    "iwencaiDesc": "Used for semantic stock screening via iWenCai (问财). Free access key required.",
    "clearSavedKey": "Clear saved key",
    "fredDesc": "Used for FRED macroeconomic data (CPI, GDP, unemployment, etc.). Free key from fred.stlouisfed.org.",
    "featureFlags": "Feature Flags",
    "featureFlagsDesc": "Runtime feature flags detected from environment variables.",
    "shellTools": "Shell Tools",
    "scheduler": "Scheduler",
    "sessionRuntime": "Session Runtime",
    "flagsReadFrom": "Flags are read from {{env1}}, {{env2}}, and {{env3}} in {{env_path}}."
  },
  "agent": {
    "connectionLostReconnect": "Connection lost, reconnecting…",
    "connectionRestored": "Connection restored",
    "agentWorking": "Agent is working…",
    "reasoning": "Reasoning…",
    "running": "running",
    "newMessages": "New messages",
    "newResearchGoal": "New Research Goal",
    "goal": "Goal",
    "criteria": "Criteria",
    "evidence": "Evidence",
    "recentEvidence": "Recent Evidence",
    "continue": "Continue",
    "edit": "Edit",
    "cancel": "Cancel",
    "save": "Save",
    "cancelGoal": "Cancel goal",
    "describeGoal": "Describe the research goal to attach to this session",
    "placeholder": "e.g. Create a dual MA crossover strategy for 000001.SZ, backtest 2024",
    "exportChat": "Export chat",
    "stopGeneration": "Stop generation",
    "runSwarmTeam": "Run swarm team",
    "uploadFile": "Upload file",
    "checkConnector": "Check connector",
    "analyzePortfolio": "Analyze connector portfolio",
    "executionTimedOut": "Execution timed out, automatically stopped",
    "researchGoalAttached": "Research goal attached",
    "failedToStartGoal": "Failed to start goal.",
    "researchGoalCancelled": "Research goal cancelled",
    "failedToCancelGoal": "Failed to cancel goal.",
    "researchGoalUpdated": "Research goal updated",
    "failedToUpdateGoal": "Failed to update goal.",
    "failedToLoadGoal": "Failed to load goal.",
    "cancelRequestSent": "Cancel request sent",
    "cancelFailed": "Cancel failed",
    "connectorHalted": "Connector runtime halted",
    "failedToHaltConnector": "Failed to halt connector runtime.",
    "cancelledFromUI": "Cancelled from Web UI.",
    "executablesNotAllowed": "Executables and archives are not allowed",
    "fileSizeExceeds": "File size exceeds 50 MB limit",
    "uploaded": "Uploaded: {{filename}}",
    "uploadFailed": "Upload failed: {{error}}",
    "failedToSend": "Failed to send message, please retry.",
    "failedToContinue": "Failed to continue goal, please retry.",
    "runtimeBadge": "RUNTIME",
    "activeResearchGoal": "Active research goal",
    "evidenceCollectedTitle": "Evidence collected toward this research goal",
    "evidenceCount": "{{count}} evidence",
    "uploading": "Uploading...",
    "haltConnectorTitle": "Instantly halt connector runtime activity",
    "haltConnector": "Halt connector runtime",
    "moreOptions": "More options",
    "uploadPdf": "Upload PDF document",
    "researchGoal": "Research Goal",
    "agentSwarm": "Agent Swarm"
  },
  "runDetail": {
    "title": "Run Detail",
    "runNotFound": "Run not found",
    "runNotFoundDesc": "The run directory may have been removed, or your browser may not have API access configured. Check that the API authentication key is set in Settings if accessing remotely.",
    "goBack": "Go back",
    "chart": "Chart",
    "trades": "Trades",
    "validation": "Validation",
    "runCard": "Run Card",
    "code": "Code",
    "downloadTradesCsv": "Download Trades CSV",
    "downloadMetricsCsv": "Download Metrics CSV",
    "noChartData": "No chart data available",
    "noChartDataDesc": "The backtest engine may not have generated price data. Check the artifacts/ directory.",
    "symbol": "Symbol",
    "showOnly": "Show only",
    "addSymbol": "Add symbol",
    "loadAll": "Load all",
    "cancelLoad": "Cancel",
    "loadingCharts": "Loading chart data",
    "loadingSelectedChart": "Loading selected chart...",
    "pickSymbolToLoad": "Pick a symbol to load chart data.",
    "equityDrawdown": "Equity & Drawdown",
    "noTrades": "No trades recorded.",
    "time": "Time",
    "code2": "Code",
    "side": "Side",
    "price": "Price",
    "qty": "Qty",
    "reason": "Reason",
    "schema": "Schema",
    "generated": "Generated",
    "dataSources": "Data sources",
    "warnings": "Warnings",
    "backtestSummary": "Backtest Summary",
    "reproducibility": "Reproducibility",
    "metrics": "Metrics",
    "validationPayload": "Validation",
    "artifactChecksums": "Artifact Checksums",
    "path": "Path",
    "size": "Size",
    "sha256": "SHA-256",
    "noBacktestSummary": "No backtest summary recorded.",
    "noReproducibilityHashes": "No reproducibility hashes recorded.",
    "noScalarMetrics": "No scalar metrics recorded.",
    "noValidationPayload": "No validation payload recorded.",
    "noArtifactChecksums": "No artifact checksums recorded.",
    "noCodeFiles": "No code files.",
    "fullReport": "Full Report →"
  },
  "compare": {
    "title": "Strategy Comparison",
    "baseline": "Baseline",
    "compare": "Compare",
    "select": "-- Select --",
    "equityDrawdown": "Equity & Drawdown",
    "metric": "Metric",
    "baselineCol": "Baseline",
    "compareCol": "Compare",
    "delta": "Delta",
    "selectTwoRuns": "Select two runs to compare their metrics.",
    "totalReturn": "Total Return",
    "annualizedReturn": "Annualized Return",
    "sharpeRatio": "Sharpe Ratio",
    "calmarRatio": "Calmar Ratio",
    "sortinoRatio": "Sortino Ratio",
    "maxDrawdown": "Max Drawdown",
    "volatility": "Volatility",
    "winRate": "Win Rate",
    "profitFactor": "Profit Factor",
    "avgWin": "Avg Win",
    "avgLoss": "Avg Loss",
    "trades": "Trades",
    "maxConsecLosses": "Max Consec. Losses",
    "exposureTime": "Exposure Time",
    "avgHoldingPeriod": "Avg Holding Period"
  },
  "correlation": {
    "title": "Correlation Matrix",
    "assetCodes": "Asset codes",
    "assetCodesHint": "Comma-separated ticker symbols, e.g. 000001.SZ,600519.SH,000858.SZ",
    "windowDays": "Window (days)",
    "method": "Method",
    "method_pearson": "Pearson",
    "method_spearman": "Spearman",
    "compute": "Compute",
    "loading": "Computing...",
    "failedToCompute": "Failed to compute correlation"
  },
  "alphaZoo": {
    "title": "Alpha Zoo",
    "prebuiltAlpha": "{{count}} pre-built quant alphas across 4 zoos",
    "prebuiltAlphaLoading": "Pre-built quant alphas across 4 zoos",
    "browseDesc": "Browse formula-driven cross-sectional signals from Qlib, the Kakushadze 101 set, GTJA 191, and the academic anomaly literature. Click any alpha to read its formula and source code, or run a bench to score the whole zoo on a universe and period.",
    "search": "Search",
    "searchPlaceholder": "Filter by id or nickname…",
    "zoo": "Zoo",
    "allZoos": "All zoos",
    "theme": "Theme",
    "allThemes": "All themes",
    "universe": "Universe",
    "allUniverses": "All universes",
    "compare": "Compare",
    "runBenchmark": "Run benchmark",
    "decayDays": "Decay (days)",
    "selectForCompare": "Select for compare",
    "loadingAlphas": "Loading alphas…",
    "noAlphasMatch": "No alphas match the current filters.",
    "showingOf": "Showing {{visible}} of {{total}}",
    "loadMore": "Load more",
    "backToAlphaZoo": "Back to Alpha Zoo",
    "couldNotLoad": "Could not load alpha",
    "unknownError": "Unknown error",
    "formula": "Formula",
    "noFormula": "(no formula provided)",
    "metadata": "Metadata",
    "themeKey": "Theme",
    "frequency": "Frequency",
    "decayHorizon": "Decay horizon",
    "minWarmupBars": "Min warm-up bars",
    "requiresSector": "Requires sector",
    "modulePath": "Module path",
    "notes": "Notes",
    "sourceCode": "Source code",
    "viewSource": "View source ({{lines}} lines)",
    "noSource": "(no source available)",
    "benchRunner": "Benchmark runner",
    "scoreZoo": "Score a zoo on a universe",
    "scoreDesc": "Computes IC / IR for every alpha in the selected zoo over the chosen universe and period, then bucketizes them as alive / reversed / dead.",
    "period": "Period",
    "top": "Top",
    "running": "Running…",
    "submitting": "Submitting…",
    "computing": "Computing: {{id}}",
    "alive": "Alive",
    "reversed": "Reversed",
    "dead": "Dead",
    "skipped": "Skipped",
    "topByIr": "Top 5 by IR",
    "mostReversed": "Most reversed",
    "byTheme": "By theme",
    "noRows": "No rows.",
    "meanIc": "Mean IC",
    "ir": "IR",
    "category": "Category",
    "headToHeadCompare": "Head-to-head compare",
    "compareAlphas": "Compare alphas side by side",
    "compareDesc": "Benches just the alphas you pick on a universe and period, then ranks them by IC / IR with the gap to the leader — far faster than benching a whole zoo when you only care about a shortlist.",
    "alphaIds": "Alpha ids",
    "selected": "{{count}} selected",
    "alphaIdsHint": "Separate ids with commas or spaces. Tip: tick alphas in the catalogue and hit \"Compare\" to prefill this.",
    "rankBy": "Rank by",
    "pickAtLeast2": "Pick at least 2 alphas.",
    "enterAtLeast2": "Enter at least 2 distinct alpha ids to compare.",
    "winner": "Winner",
    "compared": "compared",
    "rankedBy": "ranked by",
    "icMean": "IC mean",
    "icStd": "IC std",
    "icPositive": "IC>0",
    "icPositiveTitle": "Share of periods with positive IC",
    "sampleCount": "n",
    "sampleCountTitle": "IC sample count",
    "noBenchmarkMatch": "No benchmark match",
    "alphaCatalogue": "Alpha catalogue",
    "predictiveHalfLifeTitle": "Predictive half-life: trading days before the signal's edge decays",
    "id": "ID",
    "icSampleCount": "IC sample count",
    "alpha": "Alpha",
    "alphaComparisonRanking": "Alpha comparison ranking",
    "skippedPre": "Skipped:",
    "zooCardTitle": {
      "qlib158": "Qlib 158",
      "alpha101": "Kakushadze 101 Formulaic Alphas",
      "gtja191": "GTJA 191",
      "academic": "Academic Anomalies"
    },
    "zooCardDesc": {
      "qlib158": "Microsoft Qlib's full 158-feature library covering momentum, volatility, volume and rolling statistical signals.",
      "alpha101": "The 101 formulaic alphas from Kakushadze (2015); short-horizon cross-sectional signals.",
      "gtja191": "Guotai Junan Securities' 191 alphas; technical and microstructure signals tuned to China A-share markets.",
      "academic": "Curated long-horizon anomalies from the academic literature (value, momentum, quality, low-vol, etc.)."
    },
    "universeOption": {
      "csi300": "CSI 300 (China A)",
      "sp500": "S&P 500 (US)",
      "btc-usdt": "BTC-USDT (Crypto)",
      "equity_cn": "China A-Shares",
      "equity_us": "US Equities",
      "equity_hk": "HK Equities",
      "crypto": "Crypto",
      "futures": "Futures"
    },
    "themes": {
      "momentum": "Momentum",
      "reversal": "Reversal",
      "volume": "Volume",
      "volatility": "Volatility",
      "quality": "Quality",
      "value": "Value",
      "liquidity": "Liquidity",
      "microstructure": "Microstructure",
      "sentiment": "Sentiment",
      "growth": "Growth",
      "leverage": "Leverage"
    },
    "compareTooltip": "Tick 2+ alphas below, then compare them head-to-head",
    "loadingAlpha": "Loading {{id}}…",
    "comparedRankedBy": "{{count}} compared · ranked by {{sort}} · {{universe}} · {{period}}",
    "skippedCount": "{{count}} skipped",
    "gapTitle": "Gap to the leader on {{sort}}",
    "sortOption": {
      "ir": "IR (information ratio)",
      "icMean": "IC mean",
      "icPositiveRatio": "IC > 0 ratio",
      "icCount": "Sample count"
    }
  },
  "validation": {
    "noData": "No validation data available.",
    "monteCarlo": "Monte Carlo Permutation Test",
    "significant": "Significant",
    "notSignificant": "Not Significant",
    "monteCarloDesc": "Shuffled trade order {{n}} times to test if Sharpe is better than random.",
    "actualSharpe": "Actual Sharpe",
    "pValueSharpe": "p-value (Sharpe)",
    "simulatedMean": "Simulated Mean",
    "simulatedRange": "Simulated 90% Range",
    "bootstrap": "Bootstrap Sharpe CI",
    "ciAbove0": "CI > 0",
    "ciIncludes0": "CI includes 0",
    "bootstrapDesc": "Resampled daily returns {{n}} times to estimate {{pct}} confidence interval.",
    "observedSharpe": "Observed Sharpe",
    "ci": "{{pct}} CI",
    "medianSharpe": "Median Sharpe",
    "probSharpePositive": "P(Sharpe > 0)",
    "walkForward": "Walk-Forward Analysis",
    "profitable": "{{profitable}}/{{total}} profitable",
    "walkForwardDesc": "Split into {{n}} sequential windows to check performance consistency.",
    "consistency": "Consistency",
    "avgReturn": "Avg Return",
    "avgSharpe": "Avg Sharpe",
    "windows": "Windows",
    "period2": "Period",
    "return": "Return",
    "maxDd": "Max DD",
    "winRate": "Win Rate"
  },
  "thinking": {
    "processing": "Processing",
    "running": "Running",
    "done": "Done",
    "steps": "{{count}} steps"
  },
  "runnerStatus": {
    "connectorRuntime": "Connector runtime",
    "connected": "{{count}} connected",
    "noConnector": "no connector connected",
    "running": "running",
    "halted": "halted",
    "authorized": "Authorized",
    "notConnected": "Not connected",
    "connectProfile": "Connect this profile to enable connector runtime",
    "authorizeNote": "The connector channel stays read-only until OAuth succeeds and a mandate is committed.",
    "runner": "Runner",
    "runnerRunning": "Running",
    "runnerStopped": "Stopped",
    "lastTick": "Last tick",
    "activeMandate": "Active mandate",
    "expiresIn": "expires in {{time}}",
    "expired": "expired",
    "limitsUnavailable": "limits unavailable",
    "noActiveMandate": "No active mandate. Ask the agent to propose one, then commit it before starting the connector runtime.",
    "haltedControlsDisabled": "Halted — runner controls disabled",
    "runtimeActive": "Runtime active inside mandate",
    "idle": "Idle",
    "stopRunner": "Stop runner",
    "startRunner": "Start runner",
    "never": "never",
    "unknown": "unknown",
    "justNow": "just now",
    "loadingInstructions": "Loading connector authorization instructions..."
  },
  "swarmStatus": {
    "agents": "{{done}}/{{total}} agents",
    "layer": "Layer {{current}}/{{total}}",
    "agent": "Agent",
    "status": "Status",
    "tool": "Tool",
    "time": "Time",
    "iters": "Iters",
    "output": "Output",
    "waitingForEvents": "Waiting for agent events..."
  },
  "mandate": {
    "runtimeMandate": "Connector runtime mandate",
    "reauthMandate": "Re-authorize connector mandate",
    "universe": "Universe",
    "maxOrder": "Max order",
    "dailyCap": "Daily cap",
    "leverage": "Leverage",
    "instruments": "Instruments",
    "adjust": "Adjust",
    "committing": "Committing…",
    "commit": "Commit \"{{label}}\"",
    "cancel": "Cancel",
    "sendAdjustment": "Send adjustment",
    "mandateActive": "Mandate {{id}} active",
    "fundedBy": "funded by",
    "noBroker": "Cannot commit mandate: connector broker is missing. Ask the agent to regenerate the proposal.",
    "failedToCommit": "Failed to commit mandate.",
    "noLeverage": "no leverage",
    "leverageValue": "{{value}}× leverage",
    "tradesPerDay": "{{count}} trades/day",
    "adjustTitle": "Adjust this mandate",
    "adjustPlaceholder": "e.g. keep this but raise the daily cap to 10"
  },
  "messageBubble": {
    "copied": "Copied",
    "copy": "Copy",
    "timeoutHint": "Execution timed out. Try simplifying the strategy or reducing the number of assets.",
    "apiFailedHint": "API call failed. Please retry later.",
    "executionFailedHint": "Execution failed. Click to retry."
  },
  "pineViewer": {
    "pineScript": "Pine Script v6",
    "copied": "Copied",
    "copy": "Copy",
    "docs": "Docs",
    "footer": "TradingView Pine Editor → New blank indicator → Paste code → Add to Chart"
  },
  "runComplete": {
    "fullReport": "Full Report →",
    "pineScript": "Pine Script",
    "shadowReport": "Shadow Report"
  },
  "home": {
    "title": "AI-Powered Quant Strategy Research",
    "subtitle": "Describe a trading strategy in natural language. The agent generates code, runs backtests, and optimizes — all in real time.",
    "startResearch": "Start Research",
    "featureAgent": "AI Agent",
    "featureAgentDesc": "Natural language strategy generation with ReAct reasoning",
    "featureBacktest": "Built-in Backtest",
    "featureBacktestDesc": "Multiple data sources covering A-shares quantitative analysis",
    "featureStreaming": "Real-time Streaming",
    "featureStreamingDesc": "Watch the agent think, call tools, and iterate",
    "featureReplay": "Strategy Replay",
    "featureReplayDesc": "Trade journal analyzer + Shadow Account — extract your rules, backtest them, attribute PnL delta"
  },
  "errorBoundary": {
    "somethingWrong": "Something went wrong"
  }
}
