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