{
  "ticker": {
    "symbol": "DACL",
    "name": "Desjardins Canadian Equity Leaders ETF",
    "exchange": "TOR"
  },
  "latest_week": "2026-07-24",
  "latest_close": 20.200001,
  "latest_open": 20.17,
  "latest_high": 20.309999,
  "latest_low": 20.030001,
  "bar_count": 4,
  "analysis_bar_count": 4,
  "reversal_percent": 5.0,
  "model": {
    "version": "ewc-2.1.0",
    "as_of": "2026-07-24",
    "price_basis": "weekly OHLCV; Elliott pivots use weekly closes",
    "wave_method": "constraint-based Elliott candidate enumeration",
    "cycle_method": "adaptive Hurst-style phasing with nominal harmonic bands, trough spacing, FLD and cyclic trend-line confirmation",
    "repainting_policy": "only the final active pivot is provisional; confirmed pivots are retained"
  },
  "pivots": [],
  "cycle": {
    "phase": "falling",
    "trend_bias": "bearish",
    "oscillator": 0.0,
    "slope": 0.0,
    "dominant_period_weeks": 40,
    "period_basis": "median confirmed trough-to-trough and crest-to-crest spacing",
    "weeks_since_turn": null,
    "estimated_weeks_to_next_turn": null,
    "series": [
      {
        "date": "2026-07-03",
        "value": null
      },
      {
        "date": "2026-07-10",
        "value": null
      },
      {
        "date": "2026-07-17",
        "value": null
      },
      {
        "date": "2026-07-24",
        "value": 0.0
      }
    ]
  },
  "hurst": {
    "status": "mixed",
    "phase": "warming",
    "alignment_score": 50,
    "risk_score": 50,
    "trough_alignment": 0,
    "crest_alignment": 0,
    "nearest_trough_window": null,
    "nearest_crest_window": null,
    "method": "adaptive Hurst-style phasing with nominal harmonic bands, trough spacing, FLD and cyclic trend-line confirmation",
    "explanation": "Nominal cycles are starting bands, not fixed clocks. Each period adapts to the strongest nearby repeat in detrended weekly prices; projected turns are future intervals and require price confirmation.",
    "cycles": [
      {
        "period": 10,
        "label": "10w",
        "estimated_period": 10,
        "period_range": [
          8,
          12
        ],
        "period_strength": 0,
        "phase": "warming",
        "value": null,
        "slope": 0.0,
        "amplitude": null,
        "weeks_since_trough": null,
        "weeks_since_crest": null,
        "projected_trough_window": null,
        "projected_crest_window": null,
        "trough_window": null,
        "crest_window": null,
        "fld": {
          "value": null,
          "state": "unconfirmed",
          "weeks_since_cross": null,
          "displacement": 5,
          "explanation": "Median price displaced forward by half the estimated wavelength; a price cross confirms a cyclic turn after it begins."
        },
        "vtl": {
          "available": false,
          "value": null,
          "state": "unavailable"
        },
        "trough_indexes": [],
        "series": [
          {
            "date": "2026-07-03",
            "value": null
          },
          {
            "date": "2026-07-10",
            "value": null
          },
          {
            "date": "2026-07-17",
            "value": null
          },
          {
            "date": "2026-07-24",
            "value": null
          }
        ]
      },
      {
        "period": 20,
        "label": "20w",
        "estimated_period": 20,
        "period_range": [
          15,
          25
        ],
        "period_strength": 0,
        "phase": "warming",
        "value": null,
        "slope": 0.0,
        "amplitude": null,
        "weeks_since_trough": null,
        "weeks_since_crest": null,
        "projected_trough_window": null,
        "projected_crest_window": null,
        "trough_window": null,
        "crest_window": null,
        "fld": {
          "value": null,
          "state": "unconfirmed",
          "weeks_since_cross": null,
          "displacement": 10,
          "explanation": "Median price displaced forward by half the estimated wavelength; a price cross confirms a cyclic turn after it begins."
        },
        "vtl": {
          "available": false,
          "value": null,
          "state": "unavailable"
        },
        "trough_indexes": [],
        "series": [
          {
            "date": "2026-07-03",
            "value": null
          },
          {
            "date": "2026-07-10",
            "value": null
          },
          {
            "date": "2026-07-17",
            "value": null
          },
          {
            "date": "2026-07-24",
            "value": null
          }
        ]
      },
      {
        "period": 40,
        "label": "40w",
        "estimated_period": 40,
        "period_range": [
          30,
          50
        ],
        "period_strength": 0,
        "phase": "warming",
        "value": null,
        "slope": 0.0,
        "amplitude": null,
        "weeks_since_trough": null,
        "weeks_since_crest": null,
        "projected_trough_window": null,
        "projected_crest_window": null,
        "trough_window": null,
        "crest_window": null,
        "fld": {
          "value": null,
          "state": "unconfirmed",
          "weeks_since_cross": null,
          "displacement": 20,
          "explanation": "Median price displaced forward by half the estimated wavelength; a price cross confirms a cyclic turn after it begins."
        },
        "vtl": {
          "available": false,
          "value": null,
          "state": "unavailable"
        },
        "trough_indexes": [],
        "series": [
          {
            "date": "2026-07-03",
            "value": null
          },
          {
            "date": "2026-07-10",
            "value": null
          },
          {
            "date": "2026-07-17",
            "value": null
          },
          {
            "date": "2026-07-24",
            "value": null
          }
        ]
      },
      {
        "period": 80,
        "label": "80w",
        "estimated_period": 80,
        "period_range": [
          61,
          99
        ],
        "period_strength": 0,
        "phase": "warming",
        "value": null,
        "slope": 0.0,
        "amplitude": null,
        "weeks_since_trough": null,
        "weeks_since_crest": null,
        "projected_trough_window": null,
        "projected_crest_window": null,
        "trough_window": null,
        "crest_window": null,
        "fld": {
          "value": null,
          "state": "unconfirmed",
          "weeks_since_cross": null,
          "displacement": 40,
          "explanation": "Median price displaced forward by half the estimated wavelength; a price cross confirms a cyclic turn after it begins."
        },
        "vtl": {
          "available": false,
          "value": null,
          "state": "unavailable"
        },
        "trough_indexes": [],
        "series": [
          {
            "date": "2026-07-03",
            "value": null
          },
          {
            "date": "2026-07-10",
            "value": null
          },
          {
            "date": "2026-07-17",
            "value": null
          },
          {
            "date": "2026-07-24",
            "value": null
          }
        ]
      }
    ],
    "composite": [
      {
        "date": "2026-07-03",
        "value": null
      },
      {
        "date": "2026-07-10",
        "value": null
      },
      {
        "date": "2026-07-17",
        "value": null
      },
      {
        "date": "2026-07-24",
        "value": null
      }
    ]
  },
  "structure": {
    "primary": null,
    "alternates": [],
    "degrees": [
      {
        "key": "strategic",
        "label": "Strategic",
        "reversal_percent": 8.0,
        "primary": null,
        "candidate_count": 0,
        "explanation": "Strategic degree uses a 8.0% weekly closing-price reversal threshold."
      },
      {
        "key": "primary",
        "label": "Primary",
        "reversal_percent": 5.0,
        "primary": null,
        "candidate_count": 0,
        "explanation": "Primary degree uses a 5.0% weekly closing-price reversal threshold."
      },
      {
        "key": "tactical",
        "label": "Tactical",
        "reversal_percent": 3.5,
        "primary": null,
        "candidate_count": 0,
        "explanation": "Tactical degree uses a 3.5% weekly closing-price reversal threshold."
      }
    ],
    "stability": {
      "score": 0,
      "changes": null,
      "observations": 0,
      "label": "Unavailable"
    },
    "method": "constraint-based Elliott candidate enumeration",
    "explanation": "Counts must pass hard Elliott geometry rules. Fibonacci relationships, alternation and cycle evidence rank admissible interpretations; evidence weights compare scenarios and are not forecast probabilities."
  },
  "scenario": {
    "setup": "warming",
    "title": "Needs more weekly history",
    "direction": "neutral",
    "confidence": 20,
    "labels": [],
    "notes": [
      "At least 65 weekly bars gives the wave and cycle model enough context."
    ],
    "metrics": {}
  },
  "detail": {
    "summary": "The closing-price swing map is classified as needs more weekly history. 0 of 3 available confirmation measures are constructive.",
    "returns": [
      {
        "weeks": 4,
        "label": "4-week return",
        "value": null
      },
      {
        "weeks": 13,
        "label": "13-week return",
        "value": null
      },
      {
        "weeks": 26,
        "label": "26-week return",
        "value": null
      },
      {
        "weeks": 52,
        "label": "52-week return",
        "value": null
      }
    ],
    "range": {
      "high_52": 20.309999,
      "low_52": 19.860001,
      "position_52": 75.55589135951699,
      "drawdown": -0.5415952999308415
    },
    "risk": {
      "annualised_volatility": null,
      "average_weekly_range": 1.2525055020918845,
      "active_drawdown": 0.0
    },
    "levels": {
      "support": null,
      "resistance": null,
      "decisive": null,
      "decisive_label": "Nearest confirmed structure level",
      "trend": null,
      "fair_value": 20.16,
      "trend_gap": null,
      "fair_value_gap": 0.1984176587301596
    },
    "active_swing": {
      "from": null,
      "to": null,
      "move_percent": null,
      "weeks": null,
      "status": "Unavailable"
    },
    "confirmation": {
      "rows": [
        {
          "label": "Trend",
          "status": "neutral",
          "value": "Unavailable",
          "explanation": "The 30-week trend line is not available."
        },
        {
          "label": "Cycle pressure",
          "status": "negative",
          "value": "Falling",
          "explanation": "The medium-term pressure curve is not rising."
        },
        {
          "label": "Cycle alignment",
          "status": "neutral",
          "value": "Mixed",
          "explanation": "Cycle lengths are not moving in one clear direction."
        },
        {
          "label": "Relative strength",
          "status": "neutral",
          "value": "Unavailable",
          "explanation": "The reading is neutral or unavailable."
        },
        {
          "label": "Market activity",
          "status": "neutral",
          "value": "Unavailable",
          "explanation": "The reading is neutral or unavailable."
        },
        {
          "label": "Market dynamics",
          "status": "neutral",
          "value": "+0.0",
          "explanation": "The reading is neutral or unavailable."
        },
        {
          "label": "30-week momentum",
          "status": "neutral",
          "value": "Unavailable",
          "explanation": "The reading is neutral or unavailable."
        }
      ],
      "positive": 0,
      "negative": 1,
      "neutral": 2,
      "observed": 3,
      "agreement": 33,
      "direction": "defensive",
      "scenario_direction": "neutral"
    },
    "evidence": {
      "score": 12,
      "history_score": 2,
      "indicator_coverage": 25,
      "structure_score": 0,
      "weekly_observations": 4,
      "confirmed_pivots": 0
    },
    "volume_ratio": null,
    "historical": {
      "available": false,
      "matches": 0,
      "horizons": [],
      "note": "At least 90 weekly observations are required."
    },
    "lifecycle": {
      "state": "observing",
      "label": "Observing",
      "now": "No rule-valid primary Elliott count is dominant.",
      "next": "Wait for a valid swing structure or a confirmed cycle turn.",
      "wrong": "No active thesis to invalidate.",
      "risk": "Forcing a wave count where the geometry does not support one."
    },
    "peer_evidence": {
      "available": true,
      "peers": 4,
      "constructive_count": 1,
      "constructive_percent": 25,
      "rising_cycle_count": 1,
      "rising_cycle_percent": 25,
      "horizons": [
        {
          "weeks": 4,
          "observations": 0,
          "positive_rate": null,
          "median_return": null,
          "average_return": null,
          "median_excess_return": null,
          "excess_observations": 0,
          "p10": null,
          "p90": null
        },
        {
          "weeks": 13,
          "observations": 0,
          "positive_rate": null,
          "median_return": null,
          "average_return": null,
          "median_excess_return": null,
          "excess_observations": 0,
          "p10": null,
          "p90": null
        },
        {
          "weeks": 26,
          "observations": 0,
          "positive_rate": null,
          "median_return": null,
          "average_return": null,
          "median_excess_return": null,
          "excess_observations": 0,
          "p10": null,
          "p90": null
        }
      ],
      "benchmark": "^GSPTSE",
      "explanation": "Breadth shows whether peers share the structure. Cohort outcomes use non-overlapping, point-in-time trend and momentum states from the same sector and report benchmark excess return when matching benchmark bars exist; they are context, not a backtest of the Elliott count."
    },
    "event_positioning": {
      "earnings_date": null,
      "earnings_weeks": null,
      "options_available": false,
      "options_direction": null,
      "options_conviction": null,
      "expected_move": null,
      "invalidation_distance": null,
      "collision": false,
      "flags": [],
      "explanation": "Event and positioning context tests whether a scheduled catalyst or the options-implied move could overwhelm the technical structure."
    },
    "downside_vulnerability": {
      "score": 29,
      "label": "Contained",
      "tone": "contained",
      "components": [
        {
          "key": "wave",
          "label": "Wave maturity",
          "score": 0,
          "maximum": 25,
          "bar_width": 0,
          "explanation": "The primary count is not presently a mature Wave 5."
        },
        {
          "key": "extension",
          "label": "Trend extension",
          "score": 0,
          "maximum": 20,
          "bar_width": 0,
          "explanation": "Price is 0.0% above the 30-week trend; large positive gaps increase snap-back vulnerability."
        },
        {
          "key": "range",
          "label": "Range position",
          "score": 0,
          "maximum": 15,
          "bar_width": 2,
          "explanation": "Price is 76% of the way through its 52-week low-to-high range."
        },
        {
          "key": "cycle",
          "label": "Cycle rollover",
          "score": 11,
          "maximum": 15,
          "bar_width": 73,
          "explanation": "Medium-term cycle pressure is falling."
        },
        {
          "key": "hurst",
          "label": "Multi-cycle risk",
          "score": 8,
          "maximum": 15,
          "bar_width": 50,
          "explanation": "Hurst risk alignment is 50/100."
        },
        {
          "key": "stability",
          "label": "Count instability",
          "score": 10,
          "maximum": 10,
          "bar_width": 100,
          "explanation": "The primary interpretation has unavailable recent stability."
        },
        {
          "key": "event",
          "label": "Event proximity",
          "score": 0,
          "maximum": 10,
          "bar_width": 0,
          "explanation": "No upcoming stored earnings date is available."
        }
      ],
      "warnings": [
        "Medium-term cycle pressure is falling.",
        "The primary interpretation has unavailable recent stability."
      ],
      "explanation": "This is a pre-emptive vulnerability checklist, not a probability of decline. It rises when mature wave structure, overextension, cycle rollover, count instability and event risk cluster before price breaks down."
    }
  },
  "chart": {
    "dates": [
      "2026-07-03",
      "2026-07-10",
      "2026-07-17",
      "2026-07-24"
    ],
    "close": [
      20.1,
      20.17,
      20.17,
      20.200001
    ],
    "trend": [
      null,
      null,
      null,
      null
    ],
    "sma30": [
      null,
      null,
      null,
      null
    ],
    "roc30": [
      null,
      null,
      null,
      null
    ],
    "drawdown": [
      0.0,
      0.0,
      0.0,
      0.0
    ],
    "volatility": [
      null,
      null,
      null,
      null
    ],
    "volumeRatio": [
      null,
      null,
      null,
      null
    ],
    "fairValue": [
      20.1,
      20.135,
      20.146667,
      20.16
    ],
    "marketActivity": [
      null,
      null,
      null,
      null
    ],
    "marketDynamics": [
      null,
      null,
      null,
      0.0
    ],
    "relativeStrength": [
      null,
      null,
      null,
      null
    ],
    "cycle": [
      {
        "date": "2026-07-03",
        "value": null
      },
      {
        "date": "2026-07-10",
        "value": null
      },
      {
        "date": "2026-07-17",
        "value": null
      },
      {
        "date": "2026-07-24",
        "value": 0.0
      }
    ],
    "hurstComposite": [
      {
        "date": "2026-07-03",
        "value": null
      },
      {
        "date": "2026-07-10",
        "value": null
      },
      {
        "date": "2026-07-17",
        "value": null
      },
      {
        "date": "2026-07-24",
        "value": null
      }
    ],
    "hurstCycles": {
      "10": [
        {
          "date": "2026-07-03",
          "value": null
        },
        {
          "date": "2026-07-10",
          "value": null
        },
        {
          "date": "2026-07-17",
          "value": null
        },
        {
          "date": "2026-07-24",
          "value": null
        }
      ],
      "20": [
        {
          "date": "2026-07-03",
          "value": null
        },
        {
          "date": "2026-07-10",
          "value": null
        },
        {
          "date": "2026-07-17",
          "value": null
        },
        {
          "date": "2026-07-24",
          "value": null
        }
      ],
      "40": [
        {
          "date": "2026-07-03",
          "value": null
        },
        {
          "date": "2026-07-10",
          "value": null
        },
        {
          "date": "2026-07-17",
          "value": null
        },
        {
          "date": "2026-07-24",
          "value": null
        }
      ],
      "80": [
        {
          "date": "2026-07-03",
          "value": null
        },
        {
          "date": "2026-07-10",
          "value": null
        },
        {
          "date": "2026-07-17",
          "value": null
        },
        {
          "date": "2026-07-24",
          "value": null
        }
      ]
    },
    "pivots": [],
    "labels": []
  }
}