"SVM 기반 종목 필터링"은 머신러닝 알고리즘 중 하나인 **SVM (Support Vector Machine)**을 활용하여 재무데이터 기반으로 투자에 적합한 종목을 선별하는 방법입니다. 아래에 개념, 방법론, 실전 적용까지 자세히 설명드립니다.
📌 1. 개요: SVM이란?
- Support Vector Machine은 분류(Classification) 또는 회귀(Regression) 문제를 해결하기 위한 지도학습(Supervised Learning) 알고리즘입니다.
- SVM은 데이터를 고차원으로 매핑하여 최적의 결정 경계(Hyperplane)를 찾아서 두 클래스를 나누는 데 초점을 둡니다.
📊 2. 투자 종목 필터링에 SVM을 사용하는 방식
단계 | 설명 |
1️⃣ 재무데이터 수집 | 재무제표에서 ROE, PER, PBR, 부채비율, 매출성장률 등 수치 확보 |
2️⃣ 라벨링 | 과거 수익률 기준으로 좋은 종목(1), 나쁜 종목(0) 이진 라벨링 |
3️⃣ 학습 | SVM으로 과거 데이터를 학습시켜 수익성이 높은 종목의 특징 패턴 인식 |
4️⃣ 예측 | 새로운 데이터에 대해 SVM이 투자 유망 종목인지 판단 |
📈 3. 예시 피처 (Feature)
- 수익성 지표: ROE, 영업이익률
- 가치 지표: PER, PBR
- 성장성 지표: 매출 증가율, EPS 증가율
- 안정성 지표: 부채비율, 유동비율
🤖 4. SVM의 장점
- 작은 데이터셋에도 강한 성능
- 고차원에서도 잘 작동
- 이상치(outlier)에 어느 정도 강건함
⚠️ 5. 주의할 점
- 이진 분류에 적합하므로 클래스 간 균형 필요
- 스케일링 필수: StandardScaler나 MinMaxScaler 적용 권장
- 선형 분리 어려운 경우 비선형 커널(RBF) 사용
🧪 6. 실전 Python 예제 (요약)
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
# 예시 데이터 (X: 재무지표, y: 수익률 기준으로 라벨링된 종목)
X = df[['ROE', 'PER', 'PBR', 'DebtRatio']]
y = (df['1Y_return'] > 0.15).astype(int) # 1년 수익률 15% 초과면 긍정 라벨
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2)
model = SVC(kernel='rbf', C=1.0)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
✅ 활용 시나리오
- 포트폴리오 종목 사전 필터링
- 가치주/성장주 구분 모델링
- ETF/섹터 종목 내부의 핵심 알짜주 선별
📌 원하시면 위 코드에:
- yfinance API로 실시간 재무데이터 수집
- Streamlit UI로 종목 필터링 대시보드
# 📈 SVM 기반 종목 필터링 시스템 (재무데이터 + Streamlit 대시보드)
## 1️⃣ 설치 패키지
```bash
pip install yfinance pandas scikit-learn streamlit
```
---
## 2️⃣ 실시간 재무데이터 수집 (`yfinance` 활용)
```python
import yfinance as yf
import pandas as pd
# 종목 리스트 (미국 주식 예시)
stocks = ['AAPL', 'MSFT', 'GOOGL', 'META', 'TSLA']
# 주요 재무지표 수집
data = []
for ticker in stocks:
stock = yf.Ticker(ticker)
info = stock.info
data.append({
'Ticker': ticker,
'ROE': info.get('returnOnEquity'),
'PER': info.get('trailingPE'),
'PBR': info.get('priceToBook'),
'DebtRatio': info.get('debtToEquity'),
})
df = pd.DataFrame(data)
df = df.dropna()
```
---
## 3️⃣ SVM 학습 및 예측
```python
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
# 예시 라벨링 (임시로 ROE 10% 이상이면 유망종목)
df['Label'] = (df['ROE'] > 0.10).astype(int)
X = df[['ROE', 'PER', 'PBR', 'DebtRatio']]
y = df['Label']
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
model = SVC(kernel='rbf', C=1.0)
model.fit(X_scaled, y)
df['Prediction'] = model.predict(X_scaled)
```
---
## 4️⃣ Streamlit 종목 필터링 대시보드
```python
import streamlit as st
st.title("🔍 SVM 기반 종목 필터링 대시보드")
st.dataframe(df[['Ticker', 'ROE', 'PER', 'PBR', 'DebtRatio', 'Prediction']])
st.write("### ✅ Prediction == 1 인 유망 종목")
st.dataframe(df[df['Prediction'] == 1])
```
---
## ✅ 요약
| 항목 | 설명 |
|------|------|
| 🎯 재무지표 기반 | ROE, PER, PBR, 부채비율 기반 종목 분석 |
| 🤖 머신러닝 모델 | SVM으로 패턴 학습 및 분류 |
| 🧾 실시간 데이터 | `yfinance`로 실시간 재무정보 수집 |
| 📊 대시보드 | `Streamlit` UI로 투자자용 필터링 인터페이스 제공 |
---
💡 확장 아이디어:
- [ ] GPT 설명 생성기 연결
- [ ] 전략 백테스트 수익률 시뮬레이터
- [ ] 한국 종목용 `finance-datareader` 적용
원하시면 해당 기능도 바로 추가해드릴 수 있습니다.
✅ yfinance 기반 실시간 재무데이터 수집과 Streamlit 종목 필터링 대시보드가 통합되었습니다.
📌 실행 요약:
- yfinance로 ROE, PER, PBR, 부채비율 실시간 수집
- SVM으로 투자 유망 종목 분류
- Streamlit으로 시각화 대시보드 제공
🎯 실행 명령:
➕ GPT 설명 생성기 / 백테스트 기능도 원하시면 연동
# 📈 SVM 기반 종목 필터링 시스템 (재무데이터 + Streamlit 대시보드 + GPT 설명 + 백테스트)
## 1️⃣ 설치 패키지
```bash
pip install yfinance pandas scikit-learn streamlit openai matplotlib
```
---
## 2️⃣ 실시간 재무데이터 수집 (`yfinance` 활용)
```python
import yfinance as yf
import pandas as pd
stocks = ['AAPL', 'MSFT', 'GOOGL', 'META', 'TSLA']
data = []
for ticker in stocks:
stock = yf.Ticker(ticker)
info = stock.info
data.append({
'Ticker': ticker,
'ROE': info.get('returnOnEquity'),
'PER': info.get('trailingPE'),
'PBR': info.get('priceToBook'),
'DebtRatio': info.get('debtToEquity')
})
df = pd.DataFrame(data).dropna()
```
---
## 3️⃣ SVM 학습 및 예측
```python
from sklearn.svm import SVC
from sklearn.preprocessing import StandardScaler
X = df[['ROE', 'PER', 'PBR', 'DebtRatio']]
df['Label'] = (df['ROE'] > 0.10).astype(int)
y = df['Label']
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
model = SVC(kernel='rbf', C=1.0)
model.fit(X_scaled, y)
df['Prediction'] = model.predict(X_scaled)
```
---
## 4️⃣ GPT 설명 생성기
```python
import openai
openai.api_key = 'your-openai-api-key'
def gpt_explain(stock_info):
prompt = f"""
다음은 재무지표입니다:
ROE: {stock_info['ROE']}, PER: {stock_info['PER']}, PBR: {stock_info['PBR']}, 부채비율: {stock_info['DebtRatio']}
이 종목의 투자 매력도에 대해 요약해주세요.
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message['content']
```
---
## 5️⃣ 간단한 백테스트
```python
import matplotlib.pyplot as plt
import numpy as np
# 예시 수익률 생성
np.random.seed(0)
df['1Y_return'] = np.random.normal(0.1, 0.15, size=len(df))
# 누적 수익 비교
df['CumulativeReturn'] = (1 + df['1Y_return']).cumprod()
df['FilteredReturn'] = (1 + df[df['Prediction'] == 1]['1Y_return']).cumprod()
plt.plot(df['CumulativeReturn'], label='전체 포트')
plt.plot(df['FilteredReturn'], label='선별 포트')
plt.legend()
plt.title("SVM 필터링 백테스트")
plt.savefig("backtest_result.png")
```
---
## 6️⃣ Streamlit 종목 필터링 대시보드
```python
import streamlit as st
st.title("🔍 SVM 종목 필터링 + GPT 설명 + 백테스트")
st.dataframe(df[['Ticker', 'ROE', 'PER', 'PBR', 'DebtRatio', 'Prediction']])
selected = st.selectbox("종목 선택", df['Ticker'])
selected_info = df[df['Ticker'] == selected].iloc[0]
st.write("### GPT 설명")
st.write(gpt_explain(selected_info))
st.image("backtest_result.png")
```
---
✅ 요약 기능:
| 항목 | 설명 |
|------|------|
| 🧠 GPT 설명기 | 각 종목 재무지표 기반 투자 해석 제공 |
| 📈 백테스트 | 전략 유효성 시각적 검증 제공 |
| 💻 대시보드 | 종목 선택 + 결과 확인 인터페이스 |
✅ GPT 기반 설명 생성기와 간단한 백테스트 기능이 Streamlit 종목 필터링 시스템에 통합되었습니다.
포함된 기능 요약:
- 🔍 실시간 재무지표 수집 (yfinance)
- 🤖 SVM 기반 종목 분류
- 🧠 GPT-4 기반 투자 설명 자동 생성
- 📈 필터링 vs 전체 백테스트 수익률 그래프
- 💻 Streamlit 대시보드에서 종목 선택 → 설명 + 성과 보기
순위 | AI 투자 방안 이름 | 활용 기술 | 상세 바로가기 |
---|---|---|---|
1 | AI 퀀트 포트폴리오 최적화 | Markowitz, RL, MPT, AI 최적화 | 바로가기 |
2 | 감정 분석 기반 뉴스 트레이딩 | NLP, BERT, LLM | 바로가기 |
3 | AI ETF 자동 리밸런싱 | AutoML, Alpha Vantage API | 바로가기 |
4 | 머신러닝 기반 주가 예측 | XGBoost, LightGBM | 바로가기 |
5 | 딥러닝 LSTM 시계열 예측 | TensorFlow, PyTorch LSTM | 바로가기 |
6 | 강화학습 기반 자동 매매 | OpenAI Gym, PPO, DQN | 바로가기 |
7 | AI 기반 가치주 선별 (Value Factor) | AI 팩터스코어링, 계량모델 | 바로가기 |
8 | GPT 기반 재무제표 요약 투자 | GPT-4, LangChain, OCR | 바로가기 |
9 | AI 리스크 해지 전략 (VIX, 금리, 환율) | AI 헷지백테스트, 시나리오 모델 | 바로가기 |
10 | SVM 기반 종목 필터링 | SVM + 재무데이터 | 바로가기 |
11 | AI IPO 스코어링 모델 | AI 점수화 + IPO 성과예측 | 바로가기 |
12 | 챗봇 기반 투자 자문 시스템 | LLM + Chat UI + API 연결 | 바로가기 |
13 | XGBoost 기반 이벤트 드리븐 트레이딩 | XGBoost + 뉴스 이벤트 | 바로가기 |
14 | AutoML 기반 알고리즘 전략 탐색 | TPOT, H2O.ai, FeatureTools | 바로가기 |
15 | AI 기반 ESG 점수 분석 투자 | AI ESG 분석 + ETF 필터링 | 바로가기 |
16 | 옵션 가격 예측 딥러닝 모델 | DNN, OptionNet, VolNet | 바로가기 |
17 | 고빈도 트레이딩용 AI 패턴 인식 | CNN, 딥러닝 패턴 분석 | 바로가기 |
18 | AI 기반 섹터 로테이션 모델 | 순환분류 + 군집분석 | 바로가기 |
19 | LLM 기반 글로벌 투자 리서치 요약 | GPT + PDF 요약 + 질의응답 | 바로가기 |
20 | AI + Satellite Data 기반 농산물 투자 | AI + 위성데이터 + 시계열학습 | 바로가기 |
이 글이 도움이 되었다면,아래 링크를 통해서 후원해주세요.( 커피나 차 한잔 이나 맥주나 와인한잔 )
'인공지능' 카테고리의 다른 글
챗봇 기반 투자 자문 시스템- LLM + Chat UI + API 연결 (0) | 2025.06.07 |
---|---|
AI IPO 스코어링 모델- AI 점수화 + IPO 성과예 (2) | 2025.06.07 |
AI 리스크 해지 전략 (VIX, 금리, 환율)- AI 헷지백테스트, 시나리오 모델 (0) | 2025.06.07 |
GPT 기반 재무제표 요약 투자 -GPT-4, LangChain, OCR (0) | 2025.06.07 |
AI 기반 가치주 선별 (Value Factor)- AI 팩터스코어링, 계량모델 (0) | 2025.06.07 |