edge-signal-aggregator
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.
By tradermonty · 1,965 installs
npx skills add tradermonty/claude-trading-skills --skill edge-signal-aggregator
Source repository · Upstream listing
Edge Signal Aggregator
Overview
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.
When to Use
After running multiple edge finding skills and wanting a unified view
When consolidating signals from edge candidate agent, theme detector, sector analyst, and institutional flow tracker
Before making portfolio allocation decisions based on multiple signal sources
To identify contradictions between different analysis approaches
When prioritizing which edge ideas deserve deeper research
Prerequisites
Python 3.9+
No API keys required (processes local JSON/YAML files from other skills)
Dependencies: pyyaml (standard in most environments)
Workflow
Step 1: Gather Upstream Skill Outputs
Collect output files from the upstream skills you want to aggregate:
reports/edge candidate .json from edge candidate agent
reports/edge concepts .yaml from edge concept synthesizer
reports/theme detector .json from theme detector
reports/sector analyst .json from sector analyst
reports/institutional flow .json from institutional flow tracker
reports/edge hints .yaml from edge hint extractor
Step 2: Run Signal Aggregation
Execute the aggregator script with paths to upstream outputs:
Optional: Use a custom weights configuration:
Step 3: Review Aggregated Dashboard
Open the generated report to review:
1. Ranked Edge Ideas Sorted by composite conviction score
2. Signal Provenance Which skills contributed to each idea
3. Contradictions Conflicting signals flagged for manual review
4. Deduplication Log Merged overlapping themes
Step 4: Act on High Conviction Signals
Filter the shortlist by minimum conviction threshold:
Output Format
JSON Report
Producer contract (optional keys, schema 1.1)
Each producer item (ticket, concept, theme, sector row, flow, hint) MAY carry:
evidence id — a stable identifier for the underlying evidence. Without this key a
deterministic fallback is derived from skill, signal reference, title, tickers, and direction
(timestamps are excluded so refreshed timestamps cannot forge a new identity). Re ingesting
the same evidence (same skill + evidence id ) never adds a bonus: all copies collapse into
one. When the copies differ, the newest observation wins : the copy with the latest
timestamp, compared as parsed timezone aware datetimes (date only and naive values are read
as UTC), becomes the retained score. Equal, missing, or unparsable timestamps fall back to
the highest raw score , then a stable key ( signal ref , source file ), so ingestion order
never changes the result. Only ISO 8601 strings (or YYYY MM DD ) are ordered; epoch numbers and compact forms such as 20261010 count as missing timestamps. Remaining full ties are broken by title, direction, tickers, and a canonical dump of the signal. A copy that carries a score older than the retained one is
discarded, so a newer, lower score replaces an older, higher one. The discarded copies'
scores and timestamps are listed in deduplication log[].discarded copies . Identical
copies leave the score unchanged.
score scale — "0 1" or "0 100" , declaring the raw score's scale. Declared scales are
enforced strictly: NaN/infinity/negative/out of range values are rejected into
invalid signals , never converted into maximum confidence. A present but unparsable
declaration ( "" , "foo" ) is also rejected ( missing scale ). If the key is absent, values
in (1, 100] are divided by 100 and flagged score scale assumed: true plus a
scale assumptions report entry ( value is the original input, normalized value the
0 1 score used); values 100 are rejected.
Agreement rule (Issue 510)
Agreement bonuses fire on agreement tier = min(distinct evidence ids, distinct
event fingerprints, distinct skills) among a merged signal's contributors: tier 2 earns the
two skills bonus, tier 3+ the three plus bonus. Re ingested duplicates earn nothing; the same
event restated by another skill (identical normalized title + tickers) counts once. Known
limitation: the event fingerprint is vocabulary based, so paraphrased restatements with disjoint
word sets still earn the agreement bonus — treat cross skill paraphrases with independent
verification. Merged duplicates no longer earn a per copy bonus ( merge bonus per duplicate
is deprecated and ignored).
Markdown Report
The markdown report provides a human readable dashboard:
Reports are saved to reports/ with filenames:
edge signal aggregator YYYY MM DD HHMMSS.json
edge signal aggregator YYYY MM DD HHMMSS.md
Resources
scripts/aggregate signals.py Main aggregation script with CLI interface
references/signal weighting framework.md Rationale for default weights and scoring methodology
assets/default weights.yaml Default skill weights configuration
Key Principles
1. Provenance Tracking Every aggregated signal links back to its source skill and original reference
2. Contradiction Transparency Conflicting signals are flagged, not hidden, to enable informed decisions
3. Configurable Weights Default weights reflect typical reliability but can be customized per user
4. Deduplication Without Loss Merged signals retain references to all original sources
5. Actionable Output Ranked list with clear tickers, direction, and time horizon for each idea
6. Idempotent Aggregation Re ingesting the same evidence never inflates scores; agreement credit requires distinct skills AND distinct events
7. Strict Score Validation NaN/infinity, negative, and out of range scores are rejected and reported, never converted into maximum confidence