SPDR SPY คืออะไร — คู่มือ ETF ที่ใหญ่ที่สุดในโลก 2026
SPDR S&P 500 ETF Trust (ticker: SPY) เป็น Exchange-Traded Fund (ETF) ที่ใหญ่ที่สุดและมีสภาพคล่องสูงสุดในโลก จัดการโดย State Street Global Advisors ติดตามดัชนี S&P 500 ซึ่งรวมหุ้น 500 บริษัทชั้นนำของสหรัฐอเมริกา SPY เปิดตัวเมื่อปี 1993 เป็น ETF ตัวแรกในสหรัฐฯ มี AUM (Assets Under Management) มากกว่า 500 พันล้านดอลลาร์ เหมาะสำหรับทั้งนักลงทุนระยะยาวและนักเทรดระยะสั้น
SPY Fundamentals
# spy_basics.py — SPY ETF fundamentals
import json
class SPYBasics:
INFO = {
"name": "SPDR S&P 500 ETF Trust",
"ticker": "SPY",
"manager": "State Street Global Advisors",
"inception": "January 22, 1993",
"index": "S&P 500",
"expense_ratio": "0.0945% (9.45 บาทต่อเงินลงทุน 10,000 บาท/ปี)",
"aum": "> $500 billion USD",
"avg_volume": "> 70 million shares/day",
"holdings": "~503 stocks (ตาม S&P 500 components)",
"dividend_yield": "~1.3% (จ่ายทุกไตรมาส)",
"structure": "Unit Investment Trust (UIT)",
}
TOP_HOLDINGS = {
"AAPL": {"name": "Apple", "weight": "7.2%"},
"MSFT": {"name": "Microsoft", "weight": "6.8%"},
"NVDA": {"name": "NVIDIA", "weight": "6.1%"},
"AMZN": {"name": "Amazon", "weight": "3.8%"},
"META": {"name": "Meta Platforms", "weight": "2.5%"},
"GOOGL": {"name": "Alphabet A", "weight": "2.1%"},
"BRK.B": {"name": "Berkshire Hathaway", "weight": "1.7%"},
"LLY": {"name": "Eli Lilly", "weight": "1.5%"},
"AVGO": {"name": "Broadcom", "weight": "1.4%"},
"JPM": {"name": "JPMorgan Chase", "weight": "1.3%"},
}
SECTOR_WEIGHTS = {
"Technology": "31.5%",
"Healthcare": "12.2%",
"Financials": "13.1%",
"Consumer Discretionary": "10.5%",
"Communication Services": "8.9%",
"Industrials": "8.5%",
"Consumer Staples": "5.8%",
"Energy": "3.6%",
"Utilities": "2.5%",
"Real Estate": "2.3%",
"Materials": "2.1%",
}
def show_info(self):
print("=== SPY ETF Info ===\n")
for key, val in self.INFO.items():
print(f" [{key}] {val}")
def show_holdings(self):
print(f"\n=== Top 10 Holdings ===")
for ticker, info in self.TOP_HOLDINGS.items():
print(f" {ticker}: {info['name']} ({info['weight']})")
def show_sectors(self):
print(f"\n=== Sector Weights ===")
for sector, weight in self.SECTOR_WEIGHTS.items():
print(f" {sector}: {weight}")
spy = SPYBasics()
spy.show_info()
spy.show_holdings()
spy.show_sectors()
SPY vs Alternatives
# alternatives.py — SPY vs other S&P 500 ETFs
import json
class SPYAlternatives:
COMPARISON = {
"SPY": {
"name": "SPDR S&P 500 ETF",
"expense": "0.0945%",
"aum": "$500B+",
"volume": "70M+/day",
"structure": "UIT",
"pros": "สภาพคล่องสูงสุด, options chain ใหญ่สุด, spread แคบสุด",
"cons": "Expense ratio สูงกว่า VOO/IVV, ไม่ reinvest dividends อัตโนมัติ",
},
"VOO": {
"name": "Vanguard S&P 500 ETF",
"expense": "0.03%",
"aum": "$400B+",
"volume": "5M+/day",
"structure": "Open-End Fund",
"pros": "Expense ratio ต่ำสุด, reinvest dividends ได้, tax efficient",
"cons": "สภาพคล่องต่ำกว่า SPY, options chain เล็กกว่า",
},
"IVV": {
"name": "iShares Core S&P 500 ETF",
"expense": "0.03%",
"aum": "$350B+",
"volume": "5M+/day",
"structure": "Open-End Fund",
"pros": "Expense ratio ต่ำ, BlackRock ecosystem, tax efficient",
"cons": "สภาพคล่องต่ำกว่า SPY",
},
}
def show_comparison(self):
print("=== S&P 500 ETF Comparison ===\n")
for ticker, etf in self.COMPARISON.items():
print(f"[{ticker}] {etf['name']}")
print(f" Expense: {etf['expense']} | AUM: {etf['aum']} | Volume: {etf['volume']}")
print(f" Pros: {etf['pros']}")
print()
def recommendation(self):
print("=== Recommendation ===")
print(" Long-term investing: VOO หรือ IVV (expense ratio ต่ำกว่า)")
print(" Active trading: SPY (สภาพคล่องสูงสุด, options ดีสุด)")
print(" Options trading: SPY (options volume สูงสุดในโลก)")
alt = SPYAlternatives()
alt.show_comparison()
alt.recommendation()
Python Analysis Tools
# analysis.py — Python SPY analysis tools
import json
class SPYAnalysis:
CODE = """
# spy_analyzer.py — Analyze SPY ETF performance
import pandas as pd
import numpy as np
class SPYAnalyzer:
def __init__(self, data):
'''data: DataFrame with columns [Date, Open, High, Low, Close, Volume]'''
self.data = data.copy()
self.data['returns'] = self.data['Close'].pct_change()
def performance_summary(self, periods=None):
'''Calculate performance over various periods'''
if periods is None:
periods = {
'1D': 1, '1W': 5, '1M': 21, '3M': 63,
'6M': 126, 'YTD': None, '1Y': 252, '3Y': 756, '5Y': 1260,
}
results = {}
for name, days in periods.items():
if days is None: # YTD
ytd_data = self.data[self.data.index.year == self.data.index[-1].year]
if len(ytd_data) > 1:
ret = (ytd_data['Close'].iloc[-1] / ytd_data['Close'].iloc[0] - 1) * 100
results[name] = round(ret, 2)
continue
if days < len(self.data):
ret = (self.data['Close'].iloc[-1] / self.data['Close'].iloc[-days] - 1) * 100
results[name] = round(ret, 2)
return results
def risk_metrics(self):
'''Calculate risk metrics'''
returns = self.data['returns'].dropna()
annual_return = returns.mean() * 252
annual_vol = returns.std() * np.sqrt(252)
sharpe = annual_return / annual_vol if annual_vol > 0 else 0
cumulative = (1 + returns).cumprod()
peak = cumulative.expanding().max()
drawdown = (cumulative - peak) / peak
max_dd = drawdown.min()
# Sortino ratio
downside_returns = returns[returns < 0]
downside_vol = downside_returns.std() * np.sqrt(252)
sortino = annual_return / downside_vol if downside_vol > 0 else 0
return {
'annual_return_pct': round(annual_return * 100, 2),
'annual_volatility_pct': round(annual_vol * 100, 2),
'sharpe_ratio': round(sharpe, 2),
'sortino_ratio': round(sortino, 2),
'max_drawdown_pct': round(max_dd * 100, 2),
'calmar_ratio': round(annual_return / abs(max_dd), 2) if max_dd != 0 else 0,
}
def monthly_returns(self):
'''Calculate monthly return table'''
monthly = self.data['Close'].resample('M').last().pct_change() * 100
table = {}
for date, ret in monthly.items():
year = date.year
month = date.month
if year not in table:
table[year] = {}
table[year][month] = round(ret, 1) if not np.isnan(ret) else None
return table
def dca_simulation(self, monthly_amount=10000, start_date=None):
'''Simulate Dollar-Cost Averaging'''
monthly_data = self.data['Close'].resample('M').first()
if start_date:
monthly_data = monthly_data[monthly_data.index >= start_date]
total_invested = 0
total_shares = 0
for date, price in monthly_data.items():
shares = monthly_amount / price
total_shares += shares
total_invested += monthly_amount
current_value = total_shares * self.data['Close'].iloc[-1]
profit = current_value - total_invested
return {
'monthly_amount': monthly_amount,
'months': len(monthly_data),
'total_invested': round(total_invested, 2),
'current_value': round(current_value, 2),
'profit': round(profit, 2),
'return_pct': round((profit / total_invested) * 100, 2),
'total_shares': round(total_shares, 4),
'avg_cost': round(total_invested / total_shares, 2),
}
# import yfinance as yf
# data = yf.download("SPY", start="2020-01-01")
# analyzer = SPYAnalyzer(data)
# perf = analyzer.performance_summary()
# risk = analyzer.risk_metrics()
# dca = analyzer.dca_simulation(monthly_amount=10000)
"""
def show_code(self):
print("=== SPY Analyzer ===")
print(self.CODE[:600])
analysis = SPYAnalysis()
analysis.show_code()
วิธีลงทุน SPY จากไทย
# invest_thai.py — How to invest in SPY from Thailand
import json
class InvestFromThailand:
METHODS = {
"us_broker": {
"name": "1. US Broker (ตรง)",
"brokers": "Interactive Brokers (IBKR), Charles Schwab International",
"min_deposit": "$0 (IBKR), $25,000 (Schwab)",
"fee": "$0 commission (IBKR Lite), $0.0035/share (IBKR Pro)",
"tax": "withholding tax 30% บน dividends (ลดเหลือ 15% ด้วย W-8BEN)",
"pros": "ซื้อ SPY จริง, สภาพคล่องสูง, ค่าธรรมเนียมต่ำ",
"cons": "ต้องเปิดบัญชีต่างประเทศ, โอนเงินข้ามประเทศ",
},
"thai_broker": {
"name": "2. Thai Broker (ผ่าน บล. ไทย)",
"brokers": "Bualuang, KGI, Phillip, KTBST — ผ่าน DMA (Direct Market Access)",
"min_deposit": "ขึ้นกับ broker (บางแห่ง 50,000 บาท+)",
"fee": "$15-25 per trade + FX spread",
"tax": "withholding tax 30% (ลด W-8BEN) + capital gains tax ไทย",
"pros": "เปิดบัญชีง่าย, support ภาษาไทย, ไม่ต้องโอนเงินออกเอง",
"cons": "ค่าธรรมเนียมสูงกว่า, เลือก ETF ได้จำกัด",
},
"thai_fund": {
"name": "3. กองทุนรวมไทย (Feeder Fund)",
"brokers": "KFUS500, KT-SP500, ONE-SP500",
"min_deposit": "1 บาท (บาง app), 500-1,000 บาท",
"fee": "Expense ratio 0.3-0.8%/ปี (รวม underlying ETF)",
"tax": "ไม่มี withholding tax (กองทุนจัดการ), capital gains ไทยยกเว้น",
"pros": "ง่ายที่สุด, ซื้อผ่าน app, ภาษีดี, เริ่มน้อยได้",
"cons": "ค่าธรรมเนียมสูงกว่าซื้อ SPY ตรง, tracking error",
},
}
def show_methods(self):
print("=== วิธีลงทุน SPY จากไทย ===\n")
for key, method in self.METHODS.items():
print(f"[{method['name']}]")
print(f" Brokers: {method['brokers']}")
print(f" Fee: {method['fee']}")
print(f" Pros: {method['pros']}")
print()
def recommendation(self):
print("=== Recommendation ===")
print(" งบน้อย / มือใหม่: กองทุนรวมไทย (KFUS500, ONE-SP500)")
print(" งบ > 100,000 บาท: Thai Broker DMA")
print(" งบ > 500,000 บาท / เทรดบ่อย: Interactive Brokers")
invest = InvestFromThailand()
invest.show_methods()
invest.recommendation()
SPY Historical Performance
# history.py — SPY historical performance
import json
class SPYHistory:
ANNUAL_RETURNS = {
"2024": "+24.9%",
"2023": "+26.3%",
"2022": "-18.1%",
"2021": "+28.7%",
"2020": "+18.4%",
"2019": "+31.5%",
"2018": "-4.4%",
"2017": "+21.8%",
"2016": "+12.0%",
"2015": "+1.4%",
}
STATS = {
"avg_annual_return": "~10.5% (since 1993)",
"best_year": "+38.1% (1995)",
"worst_year": "-36.8% (2008)",
"positive_years": "~73% ของปีให้ผลตอบแทนบวก",
"max_drawdown": "-50.8% (2008-2009 Financial Crisis)",
"recovery_time": "~4.5 ปี (2009 low → 2013 new high)",
}
MILESTONES = {
"$10K_1993": "ลงทุน $10,000 ปี 1993 → มูลค่า ~$180,000+ ปี 2026",
"dca_monthly": "DCA $500/เดือน ตั้งแต่ 2010 → มูลค่า ~$180,000+ (ลงทุน ~$96,000)",
"compound": "Average 10.5%/ปี compound → เงินทวีคูณทุก ~7 ปี (Rule of 72)",
}
def show_returns(self):
print("=== Annual Returns (Recent) ===\n")
for year, ret in self.ANNUAL_RETURNS.items():
bar = "█" * max(1, abs(int(float(ret.replace('%', '').replace('+', '')))) // 2)
print(f" {year}: {ret:>8} {bar}")
def show_stats(self):
print(f"\n=== Historical Stats ===")
for key, stat in self.STATS.items():
print(f" [{key}] {stat}")
def show_milestones(self):
print(f"\n=== Investment Milestones ===")
for key, milestone in self.MILESTONES.items():
print(f" {milestone}")
history = SPYHistory()
history.show_returns()
history.show_stats()
history.show_milestones()
FAQ - คำถามที่พบบ่อย
Q: SPY กับ VOO อันไหนดีกว่า?
A: สำหรับลงทุนระยะยาว: VOO ดีกว่า — expense ratio 0.03% vs 0.0945% (ประหยัด ~$60/ปี ต่อ $100,000) สำหรับเทรด/Options: SPY ดีกว่า — volume สูงกว่า 10 เท่า, bid-ask spread แคบกว่า, options chain ใหญ่ที่สุด ผลตอบแทน: แทบเหมือนกัน — ต่างกัน < 0.07%/ปี (expense ratio difference) สรุป: DCA ระยะยาว → VOO, Active trading → SPY
Q: SPY เหมาะกับมือใหม่ไหม?
A: เหมาะมาก — SPY เป็น one-stop solution สำหรับลงทุนหุ้นสหรัฐฯ ซื้อ SPY = ลงทุนใน 500 บริษัทชั้นนำ (Apple, Microsoft, NVIDIA, Amazon ฯลฯ) ไม่ต้องเลือกหุ้นเอง — diversified อัตโนมัติ วิธีง่ายสุด: DCA ทุกเดือน ถือยาว — ผลตอบแทนเฉลี่ย ~10%/ปี สำหรับคนไทย: เริ่มจากกองทุน Feeder Fund (KFUS500) ก่อนก็ได้
Q: ความเสี่ยงของ SPY คืออะไร?
A: Market risk: ตลาดหุ้นสหรัฐฯ ตกได้ (2008: -37%, 2022: -18%) Currency risk: ถ้าบาทแข็ง ผลตอบแทนในเงินบาทลดลง Concentration risk: Tech sector > 30% — ถ้า tech ตก SPY ได้รับผลกระทบมาก Drawdown: อาจขาดทุน 30-50% ในวิกฤต — ต้องมี patience ถือยาว วิธีลด risk: DCA สม่ำเสมอ, ถือระยะยาว (> 5 ปี), diversify ข้ามประเทศ
Q: ภาษีสำหรับคนไทยที่ลงทุน SPY?
A: Dividends: US withholding tax 30% (ลดเหลือ 15% ด้วย W-8BEN form) Capital Gains: ไม่เสียภาษีในสหรัฐฯ (non-US person), เสียภาษีในไทยตามกฎหมาย (ถ้านำเงินเข้าไทยในปีที่ได้กำไร) กองทุนรวมไทย: capital gains ยกเว้นภาษี, dividends จากกองทุนเสียภาษี 10% IBKR: ยื่น W-8BEN อัตโนมัติ — ลด withholding tax จาก 30% เป็น 15%
