{
  "date": "2026-11-02",
  "data_time": "2026-11-02T17:33:41+08:00",
  "version": "morning_data-v1.3",
  "market": {
    "twse": {
      "close": 44920.14,
      "change": -291.69,
      "change_pct": -0.65,
      "volume_billion_twd": 7895.3,
      "volume_unit": "億元",
      "date": "2026-11-02"
    },
    "tpex": {
      "close": 369.24,
      "change": -1.02,
      "change_pct": -0.28,
      "volume_billion_twd": 1548.2,
      "volume_unit": "億元",
      "date": "2026-11-02"
    }
  },
  "three_investors": {
    "twse": {
      "foreign": {
        "buy": 3307.91,
        "sell": 4043.12,
        "net": -735.21
      },
      "investment_trust": {
        "buy": 423.09,
        "sell": 61.92,
        "net": 361.17
      },
      "dealer": {
        "buy": 408.1,
        "sell": 560.98,
        "net": -152.88
      },
      "total_net": -526.92,
      "unit": "億元",
      "date": "2026-11-02"
    },
    "tpex": null
  },
  "top_foreign_movers": {
    "buy_top10": [
      {
        "code": "3481",
        "name": "群創",
        "net_shares": 26639480,
        "net_value_million": null
      },
      {
        "code": "2317",
        "name": "鴻海",
        "net_shares": 24200813,
        "net_value_million": null
      },
      {
        "code": "2610",
        "name": "華航",
        "net_shares": 18190344,
        "net_value_million": null
      },
      {
        "code": "2409",
        "name": "友達",
        "net_shares": 12372289,
        "net_value_million": null
      },
      {
        "code": "2002",
        "name": "中鋼",
        "net_shares": 6755599,
        "net_value_million": null
      },
      {
        "code": "1605",
        "name": "華新",
        "net_shares": 6531486,
        "net_value_million": null
      },
      {
        "code": "2609",
        "name": "陽明",
        "net_shares": 5782790,
        "net_value_million": null
      },
      {
        "code": "2618",
        "name": "長榮航",
        "net_shares": 5214506,
        "net_value_million": null
      },
      {
        "code": "2303",
        "name": "聯電",
        "net_shares": 5060280,
        "net_value_million": null
      },
      {
        "code": "2886",
        "name": "兆豐金",
        "net_shares": 4666855,
        "net_value_million": null
      }
    ],
    "sell_top10": [
      {
        "code": "0050",
        "name": "元大台灣50",
        "net_shares": -31077938,
        "net_value_million": null
      },
      {
        "code": "6770",
        "name": "力積電",
        "net_shares": -16392225,
        "net_value_million": null
      },
      {
        "code": "2330",
        "name": "台積電",
        "net_shares": -15005014,
        "net_value_million": null
      },
      {
        "code": "2887",
        "name": "台新新光金",
        "net_shares": -11373602,
        "net_value_million": null
      },
      {
        "code": "2890",
        "name": "永豐金",
        "net_shares": -6893068,
        "net_value_million": null
      },
      {
        "code": "2301",
        "name": "光寶科",
        "net_shares": -6694509,
        "net_value_million": null
      },
      {
        "code": "2891",
        "name": "中信金",
        "net_shares": -6587115,
        "net_value_million": null
      },
      {
        "code": "2352",
        "name": "佳世達",
        "net_shares": -5861216,
        "net_value_million": null
      },
      {
        "code": "2884",
        "name": "玉山金",
        "net_shares": -5647221,
        "net_value_million": null
      },
      {
        "code": "3711",
        "name": "日月光投控",
        "net_shares": -5192096,
        "net_value_million": null
      }
    ],
    "date": "2026-11-02"
  },
  "futures": {
    "foreign_taiwan_index_oi_net": -92241,
    "foreign_oi_long": 6528,
    "foreign_oi_short": 98769,
    "comment": "外資台指期(TX)未平倉淨多空(口數)、負值=淨空",
    "date": "2026-10-30",
    "lag_days": 1,
    "freshness": "normal",
    "month_settlement_date": "2026-11-18",
    "crosses_settlement": false
  },
  "sectors": {
    "semiconductor": {
      "close": 1491.61,
      "change_pct_d1": -1.26,
      "leading_stocks": [
        "2330",
        "2454",
        "2303"
      ]
    },
    "electronics": {
      "close": 2780.68,
      "change_pct_d1": -0.81,
      "leading_stocks": [
        "2330",
        "2317",
        "2454"
      ]
    },
    "finance": {
      "close": 3744.93,
      "change_pct_d1": -1.0,
      "leading_stocks": [
        "2882",
        "2891",
        "2885"
      ]
    },
    "electronic_components": {
      "close": 815.71,
      "change_pct_d1": 0.27,
      "leading_stocks": [
        "2308",
        "3008"
      ]
    },
    "comment": "資料來源: TWSE 類股指數 (MI_INDEX type=IND)。AI 伺服器 / 蘋概 / 傳產等概念股無對應指數、leading stocks 代表股清單見 CONCEPT_SECTOR_LEADERS、v1.x 待擴充。"
  },
  "mega_caps": {
    "stocks": {
      "2330": {
        "name": "台積電",
        "close": 2330.0,
        "change": -40.0,
        "change_pct": -1.69
      },
      "2317": {
        "name": "鴻海",
        "close": 251.0,
        "change": 5.5,
        "change_pct": 2.24
      },
      "2454": {
        "name": "聯發科",
        "close": 3970.0,
        "change": 55.0,
        "change_pct": 1.4
      },
      "2382": {
        "name": "廣達",
        "close": 318.0,
        "change": 0.0,
        "change_pct": 0.0
      },
      "2412": {
        "name": "中華電",
        "close": 159.5,
        "change": -0.5,
        "change_pct": -0.31
      },
      "2882": {
        "name": "國泰金",
        "close": 116.0,
        "change": 0.0,
        "change_pct": 0.0
      }
    },
    "data_date": "2026-11-02",
    "stale_vs_report": false,
    "missing": [],
    "comment": "權值股六檔。TWSE 官方盤後(MI_INDEX ALLBUT0999)。stale_vs_report=true 時為前一交易日值、引用需標明"
  },
  "theme_stocks": {
    "stocks": {
      "2408": {
        "name": "南亞科",
        "close": 456.5,
        "change": 2.0,
        "change_pct": 0.44
      },
      "2344": {
        "name": "華邦電",
        "close": 162.0,
        "change": -2.5,
        "change_pct": -1.52
      },
      "2337": {
        "name": "旺宏",
        "close": 96.2,
        "change": 0.8,
        "change_pct": 0.84
      },
      "6770": {
        "name": "力積電",
        "close": 65.3,
        "change": -1.3,
        "change_pct": -1.95
      }
    },
    "data_date": "2026-11-02",
    "stale_vs_report": false,
    "missing": [],
    "comment": "主題股：記憶體族群。TWSE 官方盤後(MI_INDEX ALLBUT0999)。stale_vs_report=true 時為前一交易日值、引用需標明"
  },
  "chips_dashboard": {
    "foreign": {
      "streak_days": -3,
      "streak_desc": "連3賣",
      "gap_in_series": false,
      "sum_5d": -2469.85,
      "series_5d": [
        {
          "date": "2026-10-27",
          "net": -81.04
        },
        {
          "date": "2026-10-28",
          "net": 159.22
        },
        {
          "date": "2026-10-29",
          "net": -688.15
        },
        {
          "date": "2026-10-30",
          "net": -1124.67
        },
        {
          "date": "2026-11-02",
          "net": -735.21
        }
      ]
    },
    "investment_trust": {
      "streak_days": 15,
      "streak_desc": "連15買",
      "gap_in_series": false,
      "sum_5d": 1038.37
    },
    "futures_oi": {
      "series_5d": [
        {
          "date": "2026-10-22",
          "net": -87297
        },
        {
          "date": "2026-10-27",
          "net": -86043
        },
        {
          "date": "2026-10-28",
          "net": -84917
        },
        {
          "date": "2026-10-29",
          "net": -89522
        },
        {
          "date": "2026-10-30",
          "net": -92241
        }
      ],
      "change_5d": -4944,
      "settlement_in_range": null
    },
    "unit": "法人=億元、期貨=口",
    "comment": "連N買賣以 TWSE BFI82U 日淨額連續同號計、確認休市日橋接；gap_in_series=true 表示回溯遇到未確認的資料洞、連N在該處截斷（實際可能更長）；sum_5d=近5個有資料交易日累計；futures_oi.settlement_in_range 非 null 時序列跨月結算、前後不可直接比較"
  },
  "technical_levels": {
    "taiex": {
      "ma5": 45926.42,
      "ma10": 46278.76,
      "ma20": 47575.51,
      "ma60": 46566.26,
      "ma120": 45339.78,
      "ma240": 38600.79,
      "deviation_pct": {
        "ma5": -2.19,
        "ma10": -2.94,
        "ma20": -5.58,
        "ma60": -3.54,
        "ma120": -0.93,
        "ma240": 16.37
      },
      "close": 44920.14,
      "data_date": "2026-11-02"
    },
    "tsmc_2330": {
      "ma5": 2388.0,
      "ma10": 2399.0,
      "ma20": 2462.75,
      "ma60": 2430.92,
      "ma120": 2390.0,
      "ma240": 2066.81,
      "deviation_pct": {
        "ma5": -2.43,
        "ma10": -2.88,
        "ma20": -5.39,
        "ma60": -4.15,
        "ma120": -2.51,
        "ma240": 12.73
      },
      "close": 2330.0,
      "data_date": "2026-11-02"
    },
    "comment": "六條均線以官方日收盤簡單平均（不還原除權息）；deviation_pct = (收盤-均線)/均線%；insufficient_history=true 表示該序列不足 240 日、缺的均線為 null"
  },
  "metadata": {
    "generator": "morning_data.py v1.3",
    "data_completeness": {
      "stock_quotes": true,
      "mega_caps": true,
      "theme_stocks": true,
      "twse_market": true,
      "tpex_market": true,
      "twse_three_investors": true,
      "top_foreign_movers": true,
      "foreign_futures": true,
      "sectors_twse_industries": true,
      "chips_dashboard": true,
      "technical_levels": true,
      "tpex_three_investors": false,
      "sectors_concept": false,
      "margin": false
    },
    "errors": [],
    "scan_target_date": "2026-11-02",
    "note": "TAIFEX 期貨資料常 D-1 (盤後 ~21:00 才發)、futures.date 標明對應交易日、v1.1 起 futures.lag_days>1 = stale、crosses_settlement=true 時 OI 不可與結算前比較。mega_caps.stale_vs_report=true 時為前一交易日值。chips_dashboard = 外資/投信連N買賣 + 5日累計 + 期貨OI 5日序列。tpex_three_investors / sectors_concept / margin 不收、預計 v1.x 補。",
    "generated_at": "2026-11-02T17:33:51+08:00",
    "revision": 1
  },
  "dated_urls": {
    "base": "https://stock-daily-97u.pages.dev",
    "pattern": "https://stock-daily-97u.pages.dev/morning_data_{date}.json",
    "generated_from": "2026-11-02",
    "note": "未來 30 日曆日的帶日期 URL。該日尚未產出時 Cloudflare Pages 會 SPA fallback 回首頁 HTML（HTTP 200、content-type=text/html）而非 404 —— 前端務必以 content-type=application/json 或「body 可解析為含 metadata.date 的 JSON」判斷是否當日真檔、否則視同缺檔走退路往前找最近交易日",
    "urls": [
      {
        "date": "2026-11-02",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-02.json"
      },
      {
        "date": "2026-11-03",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-03.json"
      },
      {
        "date": "2026-11-04",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-04.json"
      },
      {
        "date": "2026-11-05",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-05.json"
      },
      {
        "date": "2026-11-06",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-06.json"
      },
      {
        "date": "2026-11-07",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-07.json"
      },
      {
        "date": "2026-11-08",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-08.json"
      },
      {
        "date": "2026-11-09",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-09.json"
      },
      {
        "date": "2026-11-10",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-10.json"
      },
      {
        "date": "2026-11-11",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-11.json"
      },
      {
        "date": "2026-11-12",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-12.json"
      },
      {
        "date": "2026-11-13",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-13.json"
      },
      {
        "date": "2026-11-14",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-14.json"
      },
      {
        "date": "2026-11-15",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-15.json"
      },
      {
        "date": "2026-11-16",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-16.json"
      },
      {
        "date": "2026-11-17",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-17.json"
      },
      {
        "date": "2026-11-18",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-18.json"
      },
      {
        "date": "2026-11-19",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-19.json"
      },
      {
        "date": "2026-11-20",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-20.json"
      },
      {
        "date": "2026-11-21",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-21.json"
      },
      {
        "date": "2026-11-22",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-22.json"
      },
      {
        "date": "2026-11-23",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-23.json"
      },
      {
        "date": "2026-11-24",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-24.json"
      },
      {
        "date": "2026-11-25",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-25.json"
      },
      {
        "date": "2026-11-26",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-26.json"
      },
      {
        "date": "2026-11-27",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-27.json"
      },
      {
        "date": "2026-11-28",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-28.json"
      },
      {
        "date": "2026-11-29",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-29.json"
      },
      {
        "date": "2026-11-30",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-11-30.json"
      },
      {
        "date": "2026-12-01",
        "url": "https://stock-daily-97u.pages.dev/morning_data_2026-12-01.json"
      }
    ]
  }
}