{
  "report_id": "theme_power_scarcity_node_grid_delivery_services",
  "report_type": "theme_value_chain_node",
  "site_path": "themes/power-scarcity-and-grid-load/nodes/grid-delivery-services/index.html",
  "title": "Grid Delivery Services",
  "as_of": "2026-07-02",
  "generated_at": "2026-07-04T00:00:00-07:00",
  "freshness": {
    "price_data_as_of": "2026-07-02",
    "daily_ohlc_latest": "2026-07-02",
    "chart_interval": "weekly",
    "knowledge_reviewed_as_of": "2026-07-04",
    "active_common_stocks": 5274,
    "filtered_coverage_count": 5008
  },
  "revision": {
    "version": 5,
    "updated_label": "Paper-led rerank from 1GT and SemiAnalysis grid constraints research",
    "metadata_path": "themes/power-scarcity-and-grid-load/nodes/grid-delivery-services/report.json",
    "curation_source": "themes/power-scarcity-and-grid-load/nodes/node-data.json"
  },
  "node": {
    "slug": "grid-delivery-services",
    "order": 5,
    "level": "L2 core node",
    "role": "Builds transmission, distribution, substations, generation tie-ins, data-center connections, and utility-scale electrical infrastructure.",
    "description": "Grid delivery services are the contractors and specialty electrical builders that turn utility, data-center, industrial, power-generation, and interconnection demand into transmission lines, distribution upgrades, substations, generation tie-ins, electrical rooms, and site power connections after a buyer funds a defined scope. The business mechanism is backlog and RPO conversion into segment margin, DSO control, operating cash flow, and free cash flow after labor, equipment, materials, capex, and working-capital needs."
  },
  "ticker_baskets": {
    "core": [
      "PWR",
      "MYRG",
      "AGX",
      "MTZ"
    ],
    "option": [
      "EME",
      "FIX",
      "IESC",
      "STRL"
    ],
    "watch": [
      "PRIM",
      "DY"
    ]
  },
  "demand_origin_refs": [
    "MSFT",
    "AMZN",
    "GOOGL",
    "META",
    "ORCL"
  ],
  "chart_artifacts": [
    {
      "chart_id": "chart-pwr",
      "ticker": "PWR",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/PWR/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-myrg",
      "ticker": "MYRG",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/MYRG/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-agx",
      "ticker": "AGX",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/AGX/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-mtz",
      "ticker": "MTZ",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/MTZ/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-eme",
      "ticker": "EME",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/EME/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-fix",
      "ticker": "FIX",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/FIX/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-iesc",
      "ticker": "IESC",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/IESC/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-strl",
      "ticker": "STRL",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/STRL/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-prim",
      "ticker": "PRIM",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/PRIM/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    },
    {
      "chart_id": "chart-dy",
      "ticker": "DY",
      "source_table": "daily_ohlc",
      "chart_interval": "weekly",
      "aggregation": "weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "indicator_method": "20-week and 100-week exponential moving averages computed from weekly closes using full available weekly history before visible-window clipping; weekly volume bars shown with a 20-week average volume line",
      "price_data_as_of": "2026-07-02",
      "visible_years": 3,
      "visible_start_date": "2023-07-02",
      "visible_end_date": "2026-07-02",
      "rendering": "report_api_right_rail",
      "fallback_table": false,
      "api_route": "/api/securities/DY/chart?frequency=weekly&window=3y&as_of=latest",
      "static_setup_source_as_of": "no refreshed static setup row; added in paper-led rerank"
    }
  ],
  "links_out": [
    "theme_power_scarcity_and_grid_load",
    "theme_power_scarcity_node_new_power_demand",
    "theme_power_scarcity_node_utilities_grid_recovery",
    "theme_power_scarcity_node_merchant_power_capacity_markets",
    "theme_power_scarcity_node_electrical_equipment_bottlenecks",
    "theme_power_scarcity_node_power_ready_campuses",
    "theme_power_scarcity_node_fuel_inputs",
    "theme_power_scarcity_node_cooling_backup_power_quality"
  ],
  "knowledge_sources": [
    "../../../../../knowledge/wiki/concepts/themes/power-scarcity-and-grid-load.md",
    "../../../../../knowledge/wiki/lanes/sector/industrials.md",
    "../../../../../knowledge/wiki/lanes/security/pwr.md",
    "../../../../../knowledge/wiki/lanes/security/agx.md",
    "../../../../../knowledge/wiki/lanes/security/myrg.md",
    "../../../../../knowledge/wiki/lanes/security/mtz.md",
    "../../../../../knowledge/wiki/lanes/security/iesc.md",
    "../../../../../knowledge/wiki/lanes/security/prim.md",
    "../../../../../knowledge/raw/sources/security_profile__agx__autoresearch_security_profile_06212026_/output.md",
    "../../../../../knowledge/raw/sources/security_profile__agx__autoresearch_security_profile_06212026_/source.json",
    "../../../../../knowledge/raw/sources/security_research__agx__autoresearch_security_profile_06212026_/output.md",
    "../../../../../knowledge/raw/sources/security_research__agx__autoresearch_security_profile_06212026_/source.json",
    "../../../../../knowledge/wiki/lanes/security/eme.md",
    "../../../../../knowledge/wiki/lanes/security/fix.md",
    "../../../../../knowledge/wiki/lanes/security/strl.md",
    "../../../../../knowledge/wiki/lanes/security/dy.md"
  ],
  "external_sources": [
    {
      "label": "PWR Q1 2026 results release",
      "url": "https://investors.quantaservices.com/news-events/press-releases/detail/396/quanta-services-reports-first-quarter-2026-results",
      "note": "Official IR release used to cross-check Electric revenue, backlog, guidance, DSO, and large-load project detail."
    },
    {
      "label": "AGX filed security lane and paired raw outputs",
      "url": "../../../../../knowledge/wiki/lanes/security/agx.md",
      "note": "Local canonical lane and paired 2026-06-21 profile/research outputs used for FY2026 revenue, Power mix, backlog, margin, operating cash flow, cash/investments, no debt, fixed-price risk, contract-liability timing, valuation, and next evidence."
    },
    {
      "label": "MYRG Q1 2026 results exhibit",
      "url": "https://www.sec.gov/Archives/edgar/data/0000700923/000070092326000026/myrg-2026331x8kxexx991.htm",
      "note": "SEC-filed exhibit used to cross-check revenue mix, backlog, cash flow, and balance-sheet facts."
    },
    {
      "label": "MTZ Q1 2026 results release",
      "url": "https://investors.mastec.com/news-releases/news-release-details/mastec-reports-first-quarter-2026-results-and-increases-full",
      "note": "Official IR release used to cross-check revenue, segment backlog, adjusted EBITDA, guidance, DSO, and free-cash-flow gates."
    },
    {
      "label": "IESC fiscal Q2 2026 results release",
      "url": "https://investors.ies-corporate.com/news-releases/news-release-details/ies-holdings-reports-fiscal-2026-second-quarter-results",
      "note": "Official IR release used to cross-check customer-site electrical exposure, segment mix, backlog, and RPO."
    },
    {
      "label": "PRIM Q1 2026 results release",
      "url": "https://ir.prim.com/news-and-events/news-releases/2026/05-05-2026-211613921",
      "note": "Official IR release used only as a bounded stale-lane check for updated backlog mix, lowered 2026 adjusted EBITDA guidance, and PayneCrest."
    },
    {
      "label": "Barchart PWR earnings estimates",
      "url": "https://www.barchart.com/stocks/quotes/PWR/earnings-estimates",
      "note": "Checked 2026-06-13; next release shown as Jul 30, 2026 estimated."
    },
    {
      "label": "AGX late-summer FY2027 quarterly catalyst",
      "url": "../../../../../knowledge/raw/sources/security_research__agx__autoresearch_security_profile_06212026_/output.md",
      "note": "AGX next earnings window is sourced to the filed AGX research catalyst calendar; no separate external estimated earnings date was added."
    },
    {
      "label": "Barchart MYRG earnings estimates",
      "url": "https://www.barchart.com/stocks/quotes/MYRG/earnings-estimates",
      "note": "Checked 2026-06-13; next release shown as Jul 29, 2026 estimated."
    },
    {
      "label": "Barchart MTZ earnings estimates",
      "url": "https://www.barchart.com/stocks/quotes/MTZ/earnings-estimates",
      "note": "Checked 2026-06-13; next release shown as Jul 30, 2026 estimated."
    },
    {
      "label": "Barchart IESC earnings estimates",
      "url": "https://www.barchart.com/stocks/quotes/IESC/earnings-estimates",
      "note": "Checked 2026-06-13; next release shown as Aug 7, 2026 estimated."
    },
    {
      "label": "Barchart PRIM earnings estimates",
      "url": "https://www.barchart.com/stocks/quotes/PRIM/earnings-estimates",
      "note": "Checked 2026-06-13; no usable next date shown. Nasdaq and Earnings Whispers checks did not produce a confirmed date."
    },
    "../../../../papers/power-grid/article_power-grid-upgrades.md",
    "../../../../papers/power-grid/US Grid Constraints_ Towards 40GW+ of Behind-The-Meter Datacenter by 2028_.md"
  ],
  "discovery_sources": [
    {
      "kind": "discovery_cli_readonly",
      "label": "Grid Delivery Services ticker coverage status",
      "query_ref": "duckdb-readonly:daily_ohlc_coverage:PWR|MYRG|AGX|MTZ|EME|FIX|IESC|STRL|PRIM|DY:2026-07-02",
      "note": "Read-only DuckDB query showed local daily_ohlc rows through 2026-07-02 for all ten ranked tickers; AGX coverage begins 2021-05-11."
    },
    {
      "kind": "duckdb_readonly_query",
      "label": "Grid Delivery Services market-cap card metrics",
      "query_ref": "duckdb-readonly:latest_close_times_weighted_shares:PWR|MYRG|AGX|MTZ|EME|FIX|IESC|STRL|PRIM|DY:2026-07-02",
      "note": "Market caps use latest close multiplied by stored weighted shares outstanding from the local discovery store; AGX was about $10.36B using 14,019,247 weighted shares."
    },
    {
      "kind": "report_api_route",
      "label": "Grid Delivery Services selected-security charts",
      "query_ref": "/api/securities/{ticker}/chart?frequency=weekly&window=3y&as_of=latest",
      "note": "Charts render in the selected-security right rail. Weekly bars use first open, maximum high, minimum low, final close, summed volume, 20W EMA, 100W EMA when available, weekly volume, and 20W average volume."
    },
    {
      "kind": "discovery_cli_readonly",
      "label": "Grid Delivery Services daily_ohlc lineage check",
      "query_ref": "discovery:lineage-status:daily_ohlc:PWR|AGX|MYRG|MTZ|IESC|PRIM:lineage-can-lag-latest-rows",
      "note": "Lineage rows lagged the latest stored OHLC rows, so chart provenance is limited to local price and volume context until lineage is reconciled."
    }
  ],
  "known_caveats": [
    "Static setup thresholds from the 2026-05-22 node-data package are stale versus local daily_ohlc rows through 2026-06-18 and must be refreshed before trading use. No static AGX trigger or invalidation level was added.",
    "Review validation started the local report API, but a sibling curl to the PWR chart route could not connect to 127.0.0.1:8765 in this sandbox. Focused chart/security API unit tests passed, so live HTTP payload validation remains unresolved.",
    "The power-scarcity node generator scripts/build_power_scarcity_nodes.py still emits visible setup paragraphs, tabular basket and evidence sections, a body chart-setup section, and a generated chart-timing row; this static node page was updated without rerunning the stale generator.",
    "The power-scarcity node-data curation source now includes AGX in the core basket and chart list, but setup rows remain static and stale until a fresh setup package is generated.",
    "Parent metadata and sitemap were updated only for this node's counts, basket route, and AGX source references."
  ]
}
