TS-Debate: Multimodal Collaborative Debate for Zero-Shot Time Series Reasoning
This skill enables Claude to reason over time series data by orchestrating a structured multi-agent debate across three modalities: textual context, visual patterns, and numerical signals. Instead of collapsing all information into a single prompt (which causes modality interference and numeric hallucinations), the TS-Debate protocol isolates each modality into a dedicated analyst role, runs a collaborative debate with explicit verification, and synthesizes a calibrated final answer. This approach achieves strong zero-shot performance on classification, regression, forecasting, anomaly detection, and temporal QA tasks without any fine-tuning.
When to Use
- When the user provides time series data (CSV, DataFrame, or numeric arrays) and asks to classify, forecast, or detect anomalies
- When the user supplies both a chart/plot and raw numbers and wants reasoning that accounts for both
- When a question requires combining domain context (e.g., "this is ECG data" or "these are stock prices") with quantitative analysis
- When the user asks to answer questions about temporal patterns, trends, seasonality, or correlations
- When the user wants to avoid numeric hallucinations in LLM-based time series analysis
- When multiple signals or modalities (text descriptions, images, tables) describe the same temporal phenomenon and need cross-validated reasoning
Key Technique
Modality isolation prevents interference. Standard approaches either serialize all modalities into one long text prompt (causing token overflow and numeric drift) or fuse them implicitly in a single model pass (enabling undetected cross-modal contamination). TS-Debate instead assigns three specialist agents -- a Text Analyst, a Visual Analyst, and a Numerical Analyst -- each receiving only their modality-specific representation. Disagreements between agents therefore reflect genuine evidence differences rather than prompt artifacts.
Domain knowledge elicitation creates a shared contract. Before any data analysis, the system elicits task-specific priors: what domain is this (finance, health, energy)? What constraints apply? What patterns matter? What failure modes are common? Which modalities are most informative? This "shared analysis contract" anchors all subsequent reasoning to domain-appropriate methodology, preventing analysts from drifting into generic pattern-matching.
Verification-Conflict-Calibration (VCC) replaces voting. Reviewer agents evaluate each analyst's claims by assigning verification status (VERIFIED / UNVERIFIED / CONTRADICTED), checking domain consistency, and scoring inference quality, observation specificity, and intellectual honesty on a 0-100 scale. Conflicts are explicitly modeled as NO_CONFLICT, DETECTED, or RESOLVED. A final synthesizer prioritizes answers backed by verified, domain-consistent evidence rather than counting votes -- so a single well-verified numerical claim can outweigh two vague visual impressions.
Step-by-Step Workflow
Elicit domain knowledge. Given the user's query and any metadata, generate a domain knowledge brief: characterize the task domain, list expected temporal patterns (seasonality, trends, regime changes), identify which modalities are most informative, note common failure modes (e.g., confusing noise for signal in ECG, overfitting to recent trend in finance), and specify recommended analysis procedures.
Separate input modalities. Partition the available data into three channels:
- Text: domain descriptions, metadata, column headers, units, any narrative context the user provides.
- Visual: time-domain plots, frequency spectra, heatmaps, or any chart. If none exist, generate a matplotlib plot from the raw data.
- Numerical: the raw numeric values, summary statistics (mean, std, min, max, percentiles), and derived features (autocorrelation, first differences, rolling averages).
Run Text Analyst (Round 1). Analyze only the textual context and domain knowledge. Produce structured evidence: (a) Understanding -- restate the task, (b) Observations -- specific checkable claims grounded in text, (c) Inferences -- conclusions drawn from observations, (d) Limits -- what cannot be determined from text alone.
Run Visual Analyst (Round 1). Analyze only the chart(s) and domain knowledge. Identify global structure: overall trend direction, visible seasonality/periodicity, anomalous regions, regime changes, distribution shape. Produce the same structured evidence format. Do not reference specific numeric values -- describe patterns qualitatively.
Run Numerical Analyst (Round 1). Analyze only the raw numbers and domain knowledge. Compute precise statistics, apply programmatic checks (write and execute short Python snippets for aggregations, correlations, statistical tests). Produce checkable numeric claims with exact values. Flag any values that seem inconsistent or suspicious.
Cross-modal debate (Round 2). Each analyst receives the other two analysts' Round 1 evidence. Each analyst refines their position: confirm, strengthen, or revise claims in light of cross-modal evidence. Analysts retain principled disagreements when their modality-specific evidence supports it -- do not force consensus.
Reviewer verification (VCC). For each analyst's final claims, assign verification status:
- VERIFIED: claim is directly supported by at least one other modality or programmatic check.
- UNVERIFIED: insufficient cross-modal evidence to confirm or deny.
- CONTRADICTED: claim is directly refuted by another modality's verified evidence.
Score each analyst on inference quality, observation specificity, and acknowledged limitations (0-100 each). Classify conflicts as NO_CONFLICT, DETECTED, or RESOLVED.
Programmatic spot-checks. For any numeric claim marked UNVERIFIED or CONTRADICTED, write and execute a short Python snippet to verify or refute it directly. Update verification status based on execution results.
Synthesize final answer. Prioritize conclusions backed by VERIFIED, domain-consistent evidence. Weight numerical precision over visual impression when they conflict on quantities. Weight visual pattern over numerical noise when assessing global structure. Produce a calibrated answer that states confidence level and flags any unresolved conflicts.
Present result with audit trail. Return the final answer to the user along with a concise summary of which modalities agreed, where conflicts arose, and how they were resolved.
Concrete Examples
Example 1: Stock Price Trend Classification
User: Here's 30 days of AAPL closing prices [provides CSV]. Is the overall
trend bullish, bearish, or sideways? I also have this candlestick chart
[attaches image].
Approach:
1. Domain knowledge: Finance/equities. Key patterns: support/resistance,
moving average crossovers, volume confirmation. Failure mode: recency
bias (weighting last few days over the full 30-day window).
2. Text Analyst: "The user asks about 30-day trend for AAPL. No earnings
or macro events mentioned. The time horizon suggests a swing-trading
perspective."
3. Visual Analyst: "The candlestick chart shows a series of higher lows
from day 1-20, followed by a consolidation with smaller bodies from
day 20-30. No clear breakdown visible. Overall structure: bullish
with recent deceleration."
4. Numerical Analyst (executes Python):
- 30-day return: +4.2%
- Linear regression slope: +0.31/day (p < 0.01)
- 10-day MA crossed above 20-day MA on day 12, still above
- Last 10 days: range-bound, daily returns std = 0.4%
Conclusion: "Statistically bullish trend with reduced momentum in
the final third."
5. Round 2: Visual and Numerical analysts agree on bullish-with-deceleration.
Text analyst notes no contradicting context.
6. VCC: All three claims VERIFIED, NO_CONFLICT.
Output:
The 30-day trend is **bullish with recent deceleration**.
- Supported by: +4.2% total return, positive regression slope (p<0.01),
bullish MA crossover on day 12 (Numerical, VERIFIED)
- Confirmed by: higher-low pattern with consolidation in final 10 days
(Visual, VERIFIED)
- No contradicting textual context
- Confidence: High. Unresolved: whether consolidation is a pause or
reversal -- monitor for breakdown below 20-day MA.
Example 2: ECG Anomaly Detection
User: I have a 10-second ECG recording at 250Hz [provides array of 2500
values]. Are there any anomalies? The patient is a 55-year-old male with
no known cardiac history.
Approach:
1. Domain knowledge: Cardiology/ECG. Normal sinus rhythm has regular R-R
intervals, consistent P-QRS-T morphology. Anomalies: PVCs (premature
ventricular contractions), ST elevation/depression, atrial fibrillation
(irregular R-R). Failure mode: confusing baseline wander artifacts
with true ST changes.
2. Text Analyst: "55-year-old male, no known history. Age is a risk
factor for cardiac events but no prior diagnosis. No medications
mentioned that could alter ECG morphology."
3. Visual Analyst (from generated plot): "Regular rhythm visible for most
of the trace. One complex near t=6.2s appears wider and morphologically
different from surrounding beats. No obvious ST segment deviation.
Baseline is stable."
4. Numerical Analyst (executes Python):
- Detected 14 R-peaks via scipy.signal.find_peaks
- R-R intervals: [0.72, 0.71, 0.73, 0.72, 0.71, 0.58, 0.85, 0.72,
0.71, 0.73, 0.72, 0.71, 0.72] seconds
- Beat 6 (at ~6.1s): R-R shortened to 0.58s, followed by compensatory
pause of 0.85s
- QRS width of beat 6: ~140ms vs normal ~90ms for other beats
Conclusion: "Beat 6 is a premature ventricular contraction (PVC).
Single isolated PVC in a 10s strip."
5. Round 2: Visual analyst confirms the wider complex at t=6.2s matches
the numerically identified PVC. Text analyst notes PVCs can be benign
but age warrants follow-up.
6. VCC: PVC identification VERIFIED by both visual and numerical.
Compensatory pause VERIFIED by R-R interval calculation.
Output:
**One anomaly detected: isolated premature ventricular contraction (PVC)
at approximately t=6.1s.**
- Evidence: shortened R-R interval (0.58s vs 0.72s baseline), widened
QRS (~140ms vs ~90ms), followed by compensatory pause (0.85s)
(Numerical, VERIFIED; Visual, VERIFIED)
- Clinical note: isolated PVCs can be benign, but given patient age (55),
clinical correlation is recommended
- Confidence: High for PVC identification. No other anomalies detected.
Example 3: Energy Consumption Forecasting QA
User: Given this building's hourly energy consumption for the past week
[provides 168 values], what do you expect consumption to be during
business hours (9am-5pm) next Monday? The building is an office in
a temperate climate zone.
Approach:
1. Domain knowledge: Building energy/HVAC. Strong daily periodicity
(high during business hours, low overnight). Weekly cycle (weekday
vs weekend). Temperature sensitivity exists but climate is temperate.
Failure mode: not accounting for Monday potentially differing from
mid-week patterns.
2. Text Analyst: "Office building, temperate climate. Business hours
9am-5pm. Expect HVAC ramp-up around 7-8am, peak mid-afternoon,
decline after 5pm. Monday may show a 'cold start' effect -- slightly
higher than mid-week as HVAC compensates for weekend setback."
3. Visual Analyst (from plot): "Clear daily sawtooth pattern on weekdays
with peaks around 2-3pm. Weekend consumption is ~40% of weekday peak.
All five weekdays appear similar in shape and magnitude."
4. Numerical Analyst (executes Python):
- Weekday 9am-5pm averages: Mon=245, Tue=238, Wed=241, Thu=239, Fri=236 kWh/hr
- Weekend 9am-5pm average: 98 kWh/hr
- Monday average is 2.6% higher than other weekdays (cold start effect)
- Hour-by-hour Monday profile: ramps from 180 (9am) to 290 (2pm),
declines to 220 (5pm)
Forecast: "Next Monday 9am-5pm total: ~1,960 kWh (245 kWh/hr x 8 hrs)"
5. Round 2: Visual confirms weekday consistency. Text analyst's cold
start hypothesis is VERIFIED by Monday's slightly elevated average.
6. VCC: Forecast VERIFIED. Monday cold-start VERIFIED numerically.
Output:
**Expected next Monday 9am-5pm: ~1,960 kWh total (~245 kWh/hr average)**
- Based on this week's Monday profile: ramp from ~180 kWh/hr (9am) to
~290 kWh/hr peak (2pm), declining to ~220 kWh/hr (5pm)
- Monday runs ~2.6% above Tue-Fri average (cold-start effect confirmed
in historical data)
- Confidence: Moderate-High. Assumes no significant weather change or
occupancy deviation. Temperature sensitivity not assessable from one
week of data.
Best Practices
- Do: Keep modalities strictly separated in Round 1. The whole point is that each analyst reasons from their own evidence first. Premature mixing defeats the purpose.
- Do: Write and execute actual Python code for numeric verification. A 3-line pandas snippet catches hallucinations that verbal reasoning misses.
- Do: Preserve principled disagreements. If the visual pattern says "uptrend" but the numbers say "statistically flat," report both with verification status rather than forcing agreement.
- Do: Tailor domain knowledge elicitation to the specific domain. ECG analysis needs different priors than stock price analysis or weather forecasting.
- Avoid: Letting the numerical analyst make qualitative claims ("looks seasonal") without quantitative backing (autocorrelation at lag 24 = 0.87).
- Avoid: Treating the final synthesis as a majority vote. One VERIFIED numerical claim outweighs two UNVERIFIED visual impressions.
- Avoid: Skipping the domain knowledge step. Without it, analysts default to generic pattern matching and miss domain-specific failure modes (e.g., baseline wander in ECG, stock splits in finance).
Error Handling
- Missing modality: If no chart/image is available, generate one from raw data using matplotlib. If no raw numbers are available (only a chart), the Numerical Analyst should note this limitation and the Visual Analyst takes priority.
- Conflicting verified claims: When two modalities produce VERIFIED but contradictory conclusions, escalate: run additional programmatic checks, examine the data at finer granularity, and report the conflict explicitly with both pieces of evidence.
- Code execution failure: If a Python verification snippet fails (import error, data format issue), mark the claim UNVERIFIED rather than CONTRADICTED. Attempt a simpler computation as fallback.
- Ambiguous domain: If the domain isn't clear from context, ask the user. Domain knowledge elicitation is foundational -- guessing the wrong domain (e.g., treating seismic data as financial data) corrupts the entire analysis.
- Insufficient data: For very short time series (<10 points), note that statistical tests and frequency analysis are unreliable. Lean on domain knowledge and qualitative visual assessment, flagging low confidence.
Limitations
- Not a replacement for trained models. On large-scale forecasting tasks where specialized models (N-BEATS, PatchTST, TimesFM) are available and trained, TS-Debate will underperform. Its strength is zero-shot reasoning when no trained model exists for the specific task.
- Cost scales with debate rounds. The full protocol (3 analysts x 2 rounds + 3 reviewers + synthesizer) requires multiple LLM calls. For batch processing thousands of time series, this is expensive (~$0.03/sample with gpt-4.1-mini).
- Image understanding limits. Visual analysis depends on chart quality. Cluttered plots, unlabeled axes, or very dense time series produce weaker visual evidence.
- Numerical precision ceiling. LLM-based numerical analysis, even with code execution, is bounded by the precision of the data provided. Floating-point artifacts in user data propagate through analysis.
- Single-series focus. The protocol handles one time series (or a small set of related series) per invocation. Large multivariate panel analysis with dozens of correlated series requires adaptation.
Reference
1---2name: ts-debate-multimodal-collaborative-debate3description: Zero-shot time series reasoning via modality-specialized multi-agent debate. Assigns dedicated text, visual, and numerical analyst agents to reason over temporal data, coordinated by structured debate and reviewer verification. Use when: 'analyze this time series data', 'classify this sensor signal', 'forecast this trend from context and charts', 'detect anomalies in this dataset', 'answer questions about this temporal data', 'reason over these multiple modalities together'.4---56# TS-Debate: Multimodal Collaborative Debate for Zero-Shot Time Series Reasoning78This skill enables Claude to reason over time series data by orchestrating a structured multi-agent debate across three modalities: textual context, visual patterns, and numerical signals. Instead of collapsing all information into a single prompt (which causes modality interference and numeric hallucinations), the TS-Debate protocol isolates each modality into a dedicated analyst role, runs a collaborative debate with explicit verification, and synthesizes a calibrated final answer. This approach achieves strong zero-shot performance on classification, regression, forecasting, anomaly detection, and temporal QA tasks without any fine-tuning.910## When to Use1112- When the user provides time series data (CSV, DataFrame, or numeric arrays) and asks to classify, forecast, or detect anomalies13- When the user supplies both a chart/plot and raw numbers and wants reasoning that accounts for both14- When a question requires combining domain context (e.g., "this is ECG data" or "these are stock prices") with quantitative analysis15- When the user asks to answer questions about temporal patterns, trends, seasonality, or correlations16- When the user wants to avoid numeric hallucinations in LLM-based time series analysis17- When multiple signals or modalities (text descriptions, images, tables) describe the same temporal phenomenon and need cross-validated reasoning1819## Key Technique2021**Modality isolation prevents interference.** Standard approaches either serialize all modalities into one long text prompt (causing token overflow and numeric drift) or fuse them implicitly in a single model pass (enabling undetected cross-modal contamination). TS-Debate instead assigns three specialist agents -- a Text Analyst, a Visual Analyst, and a Numerical Analyst -- each receiving only their modality-specific representation. Disagreements between agents therefore reflect genuine evidence differences rather than prompt artifacts.2223**Domain knowledge elicitation creates a shared contract.** Before any data analysis, the system elicits task-specific priors: what domain is this (finance, health, energy)? What constraints apply? What patterns matter? What failure modes are common? Which modalities are most informative? This "shared analysis contract" anchors all subsequent reasoning to domain-appropriate methodology, preventing analysts from drifting into generic pattern-matching.2425**Verification-Conflict-Calibration (VCC) replaces voting.** Reviewer agents evaluate each analyst's claims by assigning verification status (VERIFIED / UNVERIFIED / CONTRADICTED), checking domain consistency, and scoring inference quality, observation specificity, and intellectual honesty on a 0-100 scale. Conflicts are explicitly modeled as NO_CONFLICT, DETECTED, or RESOLVED. A final synthesizer prioritizes answers backed by verified, domain-consistent evidence rather than counting votes -- so a single well-verified numerical claim can outweigh two vague visual impressions.2627## Step-by-Step Workflow28291. **Elicit domain knowledge.** Given the user's query and any metadata, generate a domain knowledge brief: characterize the task domain, list expected temporal patterns (seasonality, trends, regime changes), identify which modalities are most informative, note common failure modes (e.g., confusing noise for signal in ECG, overfitting to recent trend in finance), and specify recommended analysis procedures.30312. **Separate input modalities.** Partition the available data into three channels:32 - **Text**: domain descriptions, metadata, column headers, units, any narrative context the user provides.33 - **Visual**: time-domain plots, frequency spectra, heatmaps, or any chart. If none exist, generate a matplotlib plot from the raw data.34 - **Numerical**: the raw numeric values, summary statistics (mean, std, min, max, percentiles), and derived features (autocorrelation, first differences, rolling averages).35363. **Run Text Analyst (Round 1).** Analyze only the textual context and domain knowledge. Produce structured evidence: (a) Understanding -- restate the task, (b) Observations -- specific checkable claims grounded in text, (c) Inferences -- conclusions drawn from observations, (d) Limits -- what cannot be determined from text alone.37384. **Run Visual Analyst (Round 1).** Analyze only the chart(s) and domain knowledge. Identify global structure: overall trend direction, visible seasonality/periodicity, anomalous regions, regime changes, distribution shape. Produce the same structured evidence format. Do not reference specific numeric values -- describe patterns qualitatively.39405. **Run Numerical Analyst (Round 1).** Analyze only the raw numbers and domain knowledge. Compute precise statistics, apply programmatic checks (write and execute short Python snippets for aggregations, correlations, statistical tests). Produce checkable numeric claims with exact values. Flag any values that seem inconsistent or suspicious.41426. **Cross-modal debate (Round 2).** Each analyst receives the other two analysts' Round 1 evidence. Each analyst refines their position: confirm, strengthen, or revise claims in light of cross-modal evidence. Analysts retain principled disagreements when their modality-specific evidence supports it -- do not force consensus.43447. **Reviewer verification (VCC).** For each analyst's final claims, assign verification status:45 - **VERIFIED**: claim is directly supported by at least one other modality or programmatic check.46 - **UNVERIFIED**: insufficient cross-modal evidence to confirm or deny.47 - **CONTRADICTED**: claim is directly refuted by another modality's verified evidence.48 Score each analyst on inference quality, observation specificity, and acknowledged limitations (0-100 each). Classify conflicts as NO_CONFLICT, DETECTED, or RESOLVED.49508. **Programmatic spot-checks.** For any numeric claim marked UNVERIFIED or CONTRADICTED, write and execute a short Python snippet to verify or refute it directly. Update verification status based on execution results.51529. **Synthesize final answer.** Prioritize conclusions backed by VERIFIED, domain-consistent evidence. Weight numerical precision over visual impression when they conflict on quantities. Weight visual pattern over numerical noise when assessing global structure. Produce a calibrated answer that states confidence level and flags any unresolved conflicts.535410. **Present result with audit trail.** Return the final answer to the user along with a concise summary of which modalities agreed, where conflicts arose, and how they were resolved.5556## Concrete Examples5758**Example 1: Stock Price Trend Classification**5960```61User: Here's 30 days of AAPL closing prices [provides CSV]. Is the overall62trend bullish, bearish, or sideways? I also have this candlestick chart63[attaches image].6465Approach:661. Domain knowledge: Finance/equities. Key patterns: support/resistance,67 moving average crossovers, volume confirmation. Failure mode: recency68 bias (weighting last few days over the full 30-day window).69702. Text Analyst: "The user asks about 30-day trend for AAPL. No earnings71 or macro events mentioned. The time horizon suggests a swing-trading72 perspective."73743. Visual Analyst: "The candlestick chart shows a series of higher lows75 from day 1-20, followed by a consolidation with smaller bodies from76 day 20-30. No clear breakdown visible. Overall structure: bullish77 with recent deceleration."78794. Numerical Analyst (executes Python):80 - 30-day return: +4.2%81 - Linear regression slope: +0.31/day (p < 0.01)82 - 10-day MA crossed above 20-day MA on day 12, still above83 - Last 10 days: range-bound, daily returns std = 0.4%84 Conclusion: "Statistically bullish trend with reduced momentum in85 the final third."86875. Round 2: Visual and Numerical analysts agree on bullish-with-deceleration.88 Text analyst notes no contradicting context.89906. VCC: All three claims VERIFIED, NO_CONFLICT.9192Output:93The 30-day trend is **bullish with recent deceleration**.94- Supported by: +4.2% total return, positive regression slope (p<0.01),95 bullish MA crossover on day 12 (Numerical, VERIFIED)96- Confirmed by: higher-low pattern with consolidation in final 10 days97 (Visual, VERIFIED)98- No contradicting textual context99- Confidence: High. Unresolved: whether consolidation is a pause or100 reversal -- monitor for breakdown below 20-day MA.101```102103**Example 2: ECG Anomaly Detection**104105```106User: I have a 10-second ECG recording at 250Hz [provides array of 2500107values]. Are there any anomalies? The patient is a 55-year-old male with108no known cardiac history.109110Approach:1111. Domain knowledge: Cardiology/ECG. Normal sinus rhythm has regular R-R112 intervals, consistent P-QRS-T morphology. Anomalies: PVCs (premature113 ventricular contractions), ST elevation/depression, atrial fibrillation114 (irregular R-R). Failure mode: confusing baseline wander artifacts115 with true ST changes.1161172. Text Analyst: "55-year-old male, no known history. Age is a risk118 factor for cardiac events but no prior diagnosis. No medications119 mentioned that could alter ECG morphology."1201213. Visual Analyst (from generated plot): "Regular rhythm visible for most122 of the trace. One complex near t=6.2s appears wider and morphologically123 different from surrounding beats. No obvious ST segment deviation.124 Baseline is stable."1251264. Numerical Analyst (executes Python):127 - Detected 14 R-peaks via scipy.signal.find_peaks128 - R-R intervals: [0.72, 0.71, 0.73, 0.72, 0.71, 0.58, 0.85, 0.72,129 0.71, 0.73, 0.72, 0.71, 0.72] seconds130 - Beat 6 (at ~6.1s): R-R shortened to 0.58s, followed by compensatory131 pause of 0.85s132 - QRS width of beat 6: ~140ms vs normal ~90ms for other beats133 Conclusion: "Beat 6 is a premature ventricular contraction (PVC).134 Single isolated PVC in a 10s strip."1351365. Round 2: Visual analyst confirms the wider complex at t=6.2s matches137 the numerically identified PVC. Text analyst notes PVCs can be benign138 but age warrants follow-up.1391406. VCC: PVC identification VERIFIED by both visual and numerical.141 Compensatory pause VERIFIED by R-R interval calculation.142143Output:144**One anomaly detected: isolated premature ventricular contraction (PVC)145at approximately t=6.1s.**146- Evidence: shortened R-R interval (0.58s vs 0.72s baseline), widened147 QRS (~140ms vs ~90ms), followed by compensatory pause (0.85s)148 (Numerical, VERIFIED; Visual, VERIFIED)149- Clinical note: isolated PVCs can be benign, but given patient age (55),150 clinical correlation is recommended151- Confidence: High for PVC identification. No other anomalies detected.152```153154**Example 3: Energy Consumption Forecasting QA**155156```157User: Given this building's hourly energy consumption for the past week158[provides 168 values], what do you expect consumption to be during159business hours (9am-5pm) next Monday? The building is an office in160a temperate climate zone.161162Approach:1631. Domain knowledge: Building energy/HVAC. Strong daily periodicity164 (high during business hours, low overnight). Weekly cycle (weekday165 vs weekend). Temperature sensitivity exists but climate is temperate.166 Failure mode: not accounting for Monday potentially differing from167 mid-week patterns.1681692. Text Analyst: "Office building, temperate climate. Business hours170 9am-5pm. Expect HVAC ramp-up around 7-8am, peak mid-afternoon,171 decline after 5pm. Monday may show a 'cold start' effect -- slightly172 higher than mid-week as HVAC compensates for weekend setback."1731743. Visual Analyst (from plot): "Clear daily sawtooth pattern on weekdays175 with peaks around 2-3pm. Weekend consumption is ~40% of weekday peak.176 All five weekdays appear similar in shape and magnitude."1771784. Numerical Analyst (executes Python):179 - Weekday 9am-5pm averages: Mon=245, Tue=238, Wed=241, Thu=239, Fri=236 kWh/hr180 - Weekend 9am-5pm average: 98 kWh/hr181 - Monday average is 2.6% higher than other weekdays (cold start effect)182 - Hour-by-hour Monday profile: ramps from 180 (9am) to 290 (2pm),183 declines to 220 (5pm)184 Forecast: "Next Monday 9am-5pm total: ~1,960 kWh (245 kWh/hr x 8 hrs)"1851865. Round 2: Visual confirms weekday consistency. Text analyst's cold187 start hypothesis is VERIFIED by Monday's slightly elevated average.1881896. VCC: Forecast VERIFIED. Monday cold-start VERIFIED numerically.190191Output:192**Expected next Monday 9am-5pm: ~1,960 kWh total (~245 kWh/hr average)**193- Based on this week's Monday profile: ramp from ~180 kWh/hr (9am) to194 ~290 kWh/hr peak (2pm), declining to ~220 kWh/hr (5pm)195- Monday runs ~2.6% above Tue-Fri average (cold-start effect confirmed196 in historical data)197- Confidence: Moderate-High. Assumes no significant weather change or198 occupancy deviation. Temperature sensitivity not assessable from one199 week of data.200```201202## Best Practices203204- **Do:** Keep modalities strictly separated in Round 1. The whole point is that each analyst reasons from their own evidence first. Premature mixing defeats the purpose.205- **Do:** Write and execute actual Python code for numeric verification. A 3-line pandas snippet catches hallucinations that verbal reasoning misses.206- **Do:** Preserve principled disagreements. If the visual pattern says "uptrend" but the numbers say "statistically flat," report both with verification status rather than forcing agreement.207- **Do:** Tailor domain knowledge elicitation to the specific domain. ECG analysis needs different priors than stock price analysis or weather forecasting.208- **Avoid:** Letting the numerical analyst make qualitative claims ("looks seasonal") without quantitative backing (autocorrelation at lag 24 = 0.87).209- **Avoid:** Treating the final synthesis as a majority vote. One VERIFIED numerical claim outweighs two UNVERIFIED visual impressions.210- **Avoid:** Skipping the domain knowledge step. Without it, analysts default to generic pattern matching and miss domain-specific failure modes (e.g., baseline wander in ECG, stock splits in finance).211212## Error Handling213214- **Missing modality**: If no chart/image is available, generate one from raw data using matplotlib. If no raw numbers are available (only a chart), the Numerical Analyst should note this limitation and the Visual Analyst takes priority.215- **Conflicting verified claims**: When two modalities produce VERIFIED but contradictory conclusions, escalate: run additional programmatic checks, examine the data at finer granularity, and report the conflict explicitly with both pieces of evidence.216- **Code execution failure**: If a Python verification snippet fails (import error, data format issue), mark the claim UNVERIFIED rather than CONTRADICTED. Attempt a simpler computation as fallback.217- **Ambiguous domain**: If the domain isn't clear from context, ask the user. Domain knowledge elicitation is foundational -- guessing the wrong domain (e.g., treating seismic data as financial data) corrupts the entire analysis.218- **Insufficient data**: For very short time series (<10 points), note that statistical tests and frequency analysis are unreliable. Lean on domain knowledge and qualitative visual assessment, flagging low confidence.219220## Limitations221222- **Not a replacement for trained models.** On large-scale forecasting tasks where specialized models (N-BEATS, PatchTST, TimesFM) are available and trained, TS-Debate will underperform. Its strength is zero-shot reasoning when no trained model exists for the specific task.223- **Cost scales with debate rounds.** The full protocol (3 analysts x 2 rounds + 3 reviewers + synthesizer) requires multiple LLM calls. For batch processing thousands of time series, this is expensive (~$0.03/sample with gpt-4.1-mini).224- **Image understanding limits.** Visual analysis depends on chart quality. Cluttered plots, unlabeled axes, or very dense time series produce weaker visual evidence.225- **Numerical precision ceiling.** LLM-based numerical analysis, even with code execution, is bounded by the precision of the data provided. Floating-point artifacts in user data propagate through analysis.226- **Single-series focus.** The protocol handles one time series (or a small set of related series) per invocation. Large multivariate panel analysis with dozens of correlated series requires adaptation.227228## Reference229230- **Paper**: [TS-Debate: Multimodal Collaborative Debate for Zero-Shot Time Series Reasoning](https://arxiv.org/abs/2601.19151v1) (Trirat et al., 2026)231- **Key insight**: Modality-specialized agents that debate and verify claims through structured VCC protocol outperform standard multimodal fusion by +25.65% on classification and 36.92% lower MAE on regression tasks across 20 time series benchmarks.232- **Code**: https://github.com/DeepAuto-AI/TS-Debate