PageSourceSearch

https://www.etfinfo.tw/_nuxt/Dqg8j2Xg.js

js etfinfo.tw collected 2026-09-25 03:40:13 UTC 7,572 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Dyb1a9bz.js","./DgKpLXVQ.js","./entry.tFPSD96I.css","./BYEwNOpp.js","./CWyYhjw1.js","./Bxq4J4Xe.js","./BZhen3e6.js","./CO6kFuwf.js","./tRG_pNR0.js","./DGTaesvg.js","./EtfBeneficiariesChart.DauNb69l.css"])))=>i.map(i=>d[i]);
2import{d as A,au as z,s as D,e as l,k as a,F as $,g as F,f as e,t as i,h as q,j as O,m as j,W as U,v as W,y as G,E as Y,p as d,ax as J,o as u,ac as H,q as K}from"./DgKpLXVQ.js";import{c as Q}from"./B4FRbIM8.js";import{_ as X}from"./D-MEO90U.js";import{_ as Z}from"./Bbhm__6l.js";import{u as ee}from"./5Z5gUUT_.js";import"./BG0HJo5R.js";const te=Q("components/EtfBeneficiariesChart.vue",()=>J(()=>import("./Dyb1a9bz.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url).then(g=>g.default||g)),se={class:"shareholding-tab"},ne={key:0,class:"muted empty-note"},ae={class:"card pyramid-card"},ie={class:"pyramid-header"},oe={class:"muted"},re={class:"pyramid-total"},le={class:"pyramid-chart","aria-label":"持股級距人口金字塔"},de=["title"],ue={class:"pyramid-side pyramid-side-left"},me={class:"pyramid-value"},ce={class:"pyramid-tier"},pe={class:"pyramid-side pyramid-side-right"},he={class:"pyramid-value"},_e={class:"tier-rank-box"},fe={class:"tier-rank-input"},ve={key:0,class:"tier-rank-result"},ye={key:1,class:"muted tier-rank-note"},xe=A({__name:"shareholding",async setup(g){let v,E;const{code:h}=z("etfDetail"),{data:P}=([v,E]=D(()=>Y("/api/etf/shareholding",{query:d(()=>({code:h.value})),watch:[h]},"$udc04UYT3f")),v=await v,E(),v),w=ee([{question:"ETF 股東分布資料是什麼?",answer:"ETF 股東分布來自集保戶股權分散資料,將持有人依持股張數級距分組,顯示每個級距的人數占比與持股占比,可用來觀察散戶與大額持有人結構。"},{question:"持股級距金字塔怎麼看?",answer:"左側代表各級距股東人數占比,右側代表同一級距持有的股份占比。若右側高張數級距占比明顯較大,代表持股較集中在少數大額持有人手上。"},{question:"PR 估算代表什麼意思?",answer:"輸入自己的持有張數後,頁面會依公開級距估算大約落在哪個持股層級。因為集保資料只公布區間,不公布每位股東持股,因此 PR 是區間估算,不是精確排名。"},{question:"股東分布可以判斷 ETF 好壞嗎?",answer:"不能單獨判斷好壞。股東分布可觀察持有人結構與集中度,但仍需要搭配 ETF 規模、成交量、折溢價、持股內容與自身投資需求一起評估。"}]),N=d(()=>[{title:"回到 ETF 總覽",description:"看股價、規模、配息、前十大成分股與產業分布。",to:`/etf/${h.value}`},{title:"成分股明細",description:"確認這檔 ETF 主要持有哪些股票與產業。",to:`/etf/${h.value}/holdings`,emphasis:!0},{title:"受益人增減排行",description:"比較全市場 ETF 近期受益人增加與減少幅度。",to:"/ranking/etf/beneficiaries"}]),y=G(null),L={1:"未滿 1 張",2:"1-5 張",3:"5-10 張",4:"10-15 張",5:"15-20 張",6:"20-30 張",7:"30-40 張",8:"40-50 張",9:"50-100 張",10:"100-200 張",11:"200-400 張",12:"400-600 張",13:"600-800 張",14:"800-1,000 張",15:"1,000 張以上"},B={1:"<1張",2:"1-5張",3:"5-10張",4:"10-15張",5:"15-20張",6:"20-30張",7:"30-40張",8:"40-50張",9:"50-100張",10:"100-200張",11:"200-400張",12:"400-600張",13:"600-800張",14:"800-1千張",15:"1千張+"},V={1:{min:1,max:999},2:{min:1e3,max:5e3},3:{min:5001,max:1e4},4:{min:10001,max:15e3},5:{min:15001,max:2e4},6:{min:20001,max:3e4},7:{min:30001,max:4e4},8:{min:40001,max:5e4},9:{min:50001,max:1e5},10:{min:100001,max:2e5},11:{min:200001,max:4e5},12:{min:400001,max:6e5},13:{min:600001,max:8e5},14:{min:800001,max:1e6},15:{min:1000001,max:null}},m=d(()=>P.value?.snapshots?.[0]??null),R=d(()=>m.value?m.value.tiers.map(t=>({...t,label:L[t.tier]??`Tier ${t.tier}`})):[]),k=d(()=>{const t=m.value;return t?R.value.map(s=>{const c=t.totalHolders>0?s.holderCount/t.totalHolders*100:0,o=s.pctOfTotal??(t.totalShares>0?s.shareCount/t.totalShares*100:0);return{...s,holderPct:c,sharePct:o,pyramidLabel:B[s.tier]??s.label}}):[]}),I=d(()=>{let t=0;for(const s of k.value)t=Math.max(t,s.holderPct,s.sharePct);return t||1}),r=d(()=>{const t=m.value,s=Number(y.value);if(!t||!Number.isFinite(s)||s<=0)return null;const c=s*1e3,o=R.value.find(f=>{const p=V[f.tier];return p?c>
2=p.min&&(p.max==null||c<=p.max):!1});if(!o||t.totalHolders<=0)return null;const b=t.tiers.filter(f=>f.tier<o.tier).reduce((f,p)=>f+p.holderCount,0),n=b/t.totalHolders*100,S=(b+o.holderCount)/t.totalHolders*100,M=(n+S)/2;return{tierLabel:L[o.tier]??o.label,holderCount:o.holderCount,prLow:n,prHigh:S,prMid:M}});function T(t){return t.toLocaleString()}function x(t){return Number.isFinite(t)?t>=10?t.toFixed(1):t.toFixed(2):"—"}function _(t){return Number.isFinite(t)?t>=99.95?"100":t<1?t.toFixed(2):t.toFixed(1):"—"}function C(t){return`${Math.max(1,t/I.value*100)}%`}return(t,s)=>{const c=te,o=X,b=Z;return u(),l("div",se,[!a(P)||a(P).snapshots.length===0?(u(),l("p",ne," 目前尚無集保戶股權分散資料。 ")):(u(),l($,{key:1},[F(c,{code:a(h),"window-days":28,"show-period-stats":"","hydrate-on-visible":""},null,8,["code"]),e("section",ae,[e("div",ie,[e("div",null,[s[1]||(s[1]=e("h2",null,"受益人數與持股分布",-1)),e("p",oe," 左邊是各級距股東人數占比,右邊是同級距持股占比・資料日期 "+i(a(m).date),1)]),e("div",re,[s[2]||(s[2]=e("span",null,"總股東",-1)),e("strong",null,i(T(a(m).totalHolders)),1)])]),s[7]||(s[7]=e("div",{class:"pyramid-legend","aria-hidden":"true"},[e("span",null,[e("i",{class:"legend-dot holders"}),q("人數占比")]),e("span",null,[e("i",{class:"legend-dot shares"}),q("持股占比")])],-1)),e("div",le,[s[3]||(s[3]=e("div",{class:"pyramid-axis"},[e("span",null,"人數"),e("span",null,"持股級距"),e("span",null,"持股")],-1)),(u(!0),l($,null,O(a(k),n=>(u(),l("div",{key:`pyramid-${n.tier}`,class:"pyramid-row",title:`${n.label}:人數 ${T(n.holderCount)} (${x(n.holderPct)}%),持股 ${T(n.shareCount)} 股 (${x(n.sharePct)}%)`},[e("div",ue,[e("span",me,i(x(n.holderPct))+"%",1),e("div",{class:"pyramid-bar holders",style:H({width:C(n.holderPct)})},null,4)]),e("div",ce,i(n.pyramidLabel),1),e("div",pe,[e("div",{class:"pyramid-bar shares",style:H({width:C(n.sharePct)})},null,4),e("span",he,i(x(n.sharePct))+"%",1)])],8,de))),128))]),e("div",_e,[e("label",fe,[s[4]||(s[4]=e("span",null,"我的持有張數",-1)),j(e("input",{"onUpdate:modelValue":s[0]||(s[0]=n=>W(y)?y.value=n:null),type:"number",min:"0",step:"0.1",inputmode:"decimal",placeholder:"例如 12.5"},null,512),[[U,a(y),void 0,{number:!0}]])]),a(r)?(u(),l("div",ve,[e("div",null,[s[5]||(s[5]=e("span",null,"所在級距",-1)),e("strong",null,i(a(r).tierLabel),1)]),e("div",null,[s[6]||(s[6]=e("span",null,"估算 PR",-1)),e("strong",null,"PR "+i(_(a(r).prMid)),1)]),e("p",null," 約位在 PR "+i(_(a(r).prLow))+"-"+i(_(a(r).prHigh))+"; 代表你大約比 "+i(_(a(r).prLow))+"% 到 "+i(_(a(r).prHigh))+"% 的股東持有更多。 ",1)])):(u(),l("p",ye," 輸入自己持有幾張,可快速對照落在哪個集保級距。PR 以公開級距資料估算,非精確排名。 "))])])],64)),F(o,{faqs:a(w),title:"股東分布常見問題"},null,8,["faqs"]),F(b,{source:"etf_shareholding",title:"股東分布看完後",description:"股東結構只能看持有人分布,接著可以回到成分股與排行榜交叉確認。",items:a(N)},null,8,["items"])])}}}),Le=K(xe,[["__scopeId","data-v-1439592b"]]);export{Le as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.