Aggregate and rank signals from multiple edge-finding skills (edge-candidate-agent, theme-detector, sector-analyst, institutional-flow-tracker) into a prioritized conviction dashboard with weighted scoring, deduplication, and contradiction detection.
npx skills add https://github.com/BaggaT236/AI-Trading-Skills --skill edge-signal-aggregator
Combine outputs from multiple upstream edge-finding skills into a single weighted conviction dashboard. This skill applies configurable signal weights, deduplicates overlapping themes, flags contradictions between skills, and ranks composite edge ideas by aggregate confidence score. The result is a prioritized edge shortlist with provenance links to each contributing skill.
pyyaml (standard in most environments)Collect output files from the upstream skills you want to aggregate:
reports/edge_candidate_*.json from edge-candidate-agentreports/edge_concepts_*.yaml from edge-concept-synthesizerreports/theme_detector_*.json from theme-detectorreports/sector_analyst_*.json from sector-analystreports/institutional_flow_*.json from institutional-flow-trackerreports/edge_hints_*.yaml from edge-hint-extractorExecute the aggregator script with paths to upstream outputs:
python3 skills/edge-signal-aggregator/scripts/aggregate_signals.py \
--edge-candidates reports/edge_candidate_agent_*.json \
--edge-concepts reports/edge_concepts_*.yaml \
--themes reports/theme_detector_*.json \
--sectors reports/sector_analyst_*.json \
--institutional reports/institutional_flow_*.json \
--hints reports/edge_hints_*.yaml \
--output-dir reports/
Optional: Use a custom weights configuration:
python3 skills/edge-signal-aggregator/scripts/aggregate_signals.py \
--edge-candidates reports/edge_candidate_agent_*.json \
--weights-config skills/edge-signal-aggregator/assets/custom_weights.yaml \
--output-dir reports/
Open the generated report to review:
Filter the shortlist by minimum conviction threshold:
python3 skills/edge-signal-aggregator/scripts/aggregate_signals.py \
--edge-candidates reports/edge_candidate_agent_*.json \
--min-conviction 0.7 \
--output-dir reports/
{
"schema_version": "1.0",
"generated_at": "2026-03-02T07:00:00Z",
"config": {
"weights": {
"edge_candidate_agent": 0.25,
"edge_concept_synthesizer": 0.20,
"theme_detector": 0.15,
"sector_analyst": 0.15,
"institutional_flow_tracker": 0.15,
"edge_hint_extractor": 0.10
},
"min_conviction": 0.5,
"dedup_similarity_threshold": 0.8
},
"summary": {
"total_input_signals": 42,
"unique_signals_after_dedup": 28,
"contradictions_found": 3,
"signals_above_threshold": 12
},
"ranked_signals": [
{
"rank": 1,
"signal_id": "sig_001",
"title": "AI Infrastructure Capex Acceleration",
"composite_score": 0.87,
"contributing_skills": [
{
"skill": "edge_candidate_agent",
"signal_ref": "ticket_2026-03-01_001",
"raw_score": 0.92,
"weighted_contribution": 0.23
},
{
"skill": "theme_detector",
"signal_ref": "theme_ai_infra",
"raw_score": 0.85,
"weighted_contribution": 0.13
}
],
"tickers": ["NVDA", "AMD", "AVGO"],
"direction": "LONG",
"time_horizon": "3-6 months",
"confidence_breakdown": {
"multi_skill_agreement": 0.30,
"signal_strength": 0.35,
"recency": 0.22
}
}
],
"contradictions": [
{
"contradiction_id": "contra_001",
"description": "Conflicting sector view on Energy",
"skill_a": {
"skill": "sector_analyst",
"signal": "Energy sector bearish rotation",
"direction": "SHORT"
},
"skill_b": {
"skill": "institutional_flow_tracker",
"signal": "Heavy institutional buying in XLE",
"direction": "LONG"
},
"resolution_hint": "Check timeframe mismatch (short-term vs long-term)"
}
],
"deduplication_log": [
{
"merged_into": "sig_001",
"duplicates_removed": ["theme_detector:ai_compute", "edge_hints:datacenter_demand"],
"similarity_score": 0.92
}
]
}
The markdown report provides a human-readable dashboard:
# Edge Signal Aggregator Dashboard
**Generated:** 2026-03-02 07:00 UTC
## Summary
- Total Input Signals: 42
- Unique After Dedup: 28
- Contradictions: 3
- High Conviction (>0.7): 12
## Top 10 Edge Ideas by Conviction
### 1. AI Infrastructure Capex Acceleration (Score: 0.87)
- **Tickers:** NVDA, AMD, AVGO
- **Direction:** LONG | **Horizon:** 3-6 months
- **Contributing Skills:**
- edge-candidate-agent: 0.92 (ticket_2026-03-01_001)
- theme-detector: 0.85 (theme_ai_infra)
- **Confidence Breakdown:** Agreement 0.30 | Strength 0.35 | Recency 0.22
...
## Contradictions Requiring Review
### Energy Sector Conflict
- **sector-analyst:** Bearish rotation (SHORT)
- **institutional-flow-tracker:** Heavy buying XLE (LONG)
- **Hint:** Check timeframe mismatch
## Deduplication Summary
- 14 signals merged into 8 unique themes
- Average similarity of merged signals: 0.89
Reports are saved to reports/ with filenames:
edge_signal_aggregator_YYYY-MM-DD_HHMMSS.jsonedge_signal_aggregator_YYYY-MM-DD_HHMMSS.mdscripts/aggregate_signals.py -- Main aggregation script with CLI interfacereferences/signal-weighting-framework.md -- Rationale for default weights and scoring methodologyassets/default_weights.yaml -- Default skill weights configurationStatistical visualization with pandas integration. Use for quick exploration of distributions, relationships, and categorical comparisons with attractive defaults. Best for box plots, violin plots, pair plots, heatmaps. Built on matplotlib. For interactive plots use plotly; for publication styling use scientific-visualization.
Populates investment banking pitch deck templates with data from source files. Use when: user provides a PowerPoint template to fill in, user has source data (Excel/CSV) to populate into slides, user mentions populating or filling a pitch deck template, or user needs to transfer data into existing slide layouts. Not for creating presentations from scratch.
Statistical visualization with pandas integration. Use for quick exploration of distributions, relationships, and categorical comparisons with attractive defaults. Best for box plots, violin plots, pair plots, heatmaps. Built on matplotlib. For interactive plots use plotly; for publication styling use scientific-visualization.
Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick exploration use seaborn or plotly directly.
Statistical visualization with pandas integration. Use for quick exploration of distributions, relationships, and categorical comparisons with attractive defaults. Best for box plots, violin plots, pair plots, heatmaps. Built on matplotlib. For interactive plots use plotly; for publication styling use scientific-visualization.
Transform text-heavy slides into visual storytelling. Suggest layout improvements, icon usage, and data visualization.
Optimize Core Web Vitals (LCP, INP, CLS) for better page experience and search ranking. Use when asked to "improve Core Web Vitals", "fix LCP", "reduce CLS", "optimize INP", "page experience optimization", or "fix layout shifts". Focuses specifically on the three Core Web Vitals metrics. Do NOT use for general web performance (use perf-web-optimization), Lighthouse audits (use perf-lighthouse), or Astro-specific optimization (use perf-astro).
Required reading whenever any chart_* tool is available. Teaches the one-tool embedding contract (call chart_render → live chart appears in chat AND a downloadable PNG lands in the queen session dir), the ECharts (data viz) vs Mermaid (structural diagrams) decision, the BI/financial-grade aesthetic baseline (no chartjunk, restrained palette, proper typography, single message per chart), and the canonical spec patterns for the 12 most-common chart types. Skipping this leads to 1990s-Excel charts, missing downloads, and the agent writing markdown image links by hand instead of letting chart_render drive the UI.
Take baggat236/edge-signal-aggregator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.