Skip to main content

멀티팩터 기반 주식 데이터 수집 패키지

Project description

MultiFactor 📈

MultiFactor는 국내상장주식(코스피/코스닥)을 대상으로 멀티팩터(Multi-Factor) 전략을 손쉽게 적용하고, 팩터별 점수 및 종합 순위를 산출해 주는 파이썬 패키지입니다. 종목별 주가와 재무 데이터 수집은 FinanceDataReader를 기반으로 구동됩니다.


📌 멀티팩터 전략이란?

주식 투자에서 멀티팩터(Multi-Factor) 기법은 주가의 수익률에 영향을 미치는 여러 가지 핵심 요인(팩터)을 동시에 고려하여 종목을 고르고 포트폴리오를 운용하는 데이터에 기반한 정량적 투자 전략입니다.

단순히 '저평가된 주식'만 찾거나 '상승 추세인 주식'만 사는 것이 아니라, 다양한 성공 요소를 결합하여 단일 팩터의 약점을 보완하고 보다 안정적인 초과 수익을 추구합니다. MultiFactor 라이브러리는 다음 3가지 핵심 팩터의 점수를 계산하고 이를 종합점수로 환산한 후 순위화한 결과를 제공합니다.

팩터 (Factor) 핵심 개념 주요 지표
모멘텀 (Momentum) 과거에 우수한 성과를 보인 주식이 미래에도 상승 추세를 이어갈 것이라는 가정 주가 상승률, 거래량
밸류 (Value) 기업의 내재 가치 대비 저평가된 주식을 발굴 PER, PBR
퀄리티 (Quality) 우량한 펀더멘털, 안정적인 수익성, 장기 성장 잠재력을 갖춘 기업에 집중 매출성장률, 영업이익성장률, ROE

✨ 주요 기능

  • 국내 주식 멀티팩터 데이터 제공: 가치, 모멘텀, 퀄리티 지표 및 이를 합산한 종합 점수 산출
  • 투자 유형별 가중치 조절한 멀티팩터 데이터 제공 : 투자 성향에 맞춘 3가지 모델 제공
    • 가치성장: 밸류 + 퀄리티 조합 ("기업의 본질적인 가치와 안정성을 중요하게 생각하며, 장기적인 관점에서 투자")
    • 추세성장: 모멘텀 + 밸류 조합 ("시장의 흐름과 성장을 중요하게 생각하고, 주가 상승에 적극적으로 참여")
    • 역발상: 밸류 + 모멘텀 조합 ("저평가 종목이 다시 반등하는 시점을 찾아 투자 기회를 포착")

⚙️ 설치 방법 (Installation)

pip install MultiFactor

🚀 빠른 시작 (Quick Start)

1. 패키지 불러오기

다음 코드로 멀티팩터 패키지를 불러옵니다.

from MultiFactor import MultiFactor

2. 멀티팩터 객체 생성

멀티팩터 객체 생성 시, 수집 대상 종목 수(N)를 반드시 지정해야 합니다. (시가총액 상위 N개) N이 커질수록 데이터 수집 시간이 길어지므로, 초기 테스트에는 종목수(N)를 5~10 사이로 지정한 후 차츰 늘려갑니다.

mf = MultiFactor(N=5)  # 시가총액 5개 종목 

3. 종목 정보 수집

멀티팩터 객체에서 지정한 종목수(N) 만큼 종목 정보 데이터를 생성합니다. 반환되는 데이터 형식은 데이터프레임(기본값) 또는 딕셔너리로 지정할 수 있습니다.

# 종목 코드 정보 생성 (데이터프레임)
df = mf.get_stockinfo() 

# 종목코드, 종목명, 시가총액 출력
df[['Code', 'Name', 'Marcap']]  
Code Name Marcap
0 005930 삼성전자 1147817793075800
1 000660 SK하이닉스 691321294050000
2 005380 현대차 106883553852000
3 373220 LG에너지솔루션 89037000000000
4 402340 SK스퀘어 77535136505000
# 종목 코드 정보 생성 (딕셔너리) 
stock_list = mf.get_stockinfo(dtype='dic') # {'종목코드': '종목명'}
stock_list

> {'005930': '삼성전자',
 '000660': 'SK하이닉스',
 '005380': '현대차',
 '373220': 'LG에너지솔루션',
 '402340': 'SK스퀘어'}

4.멀티팩터 종합 점수 데이터 수집

get_score함수로 멀티팩터 종합점수 데이터를 간단하게 생성할 수 있습니다.

data_mast = mf.get_score()
data_mast
scode sname mom_price mom_vol PER PBR revenue_rate oper_income_rate net_income_rate ROE 모멘텀_주가 모멘텀_거래량 밸류_PER 밸류_PBR 퀄러티_ROE 퀄러티_매출증가 퀄러티_영업이익증가 퀄러티_순이익증가 종합점수 종합순위 종합순위_퍼센트
4 402340 SK스퀘어 118.409589 -33.543478 2.95 0.54 62.829000 88.815930 71.543086 32.66 20.0 60.0 20.0 20.0 40.0 20.0 20.0 20.0 27.5 1.0 20.0
1 000660 SK하이닉스 87.120100 -23.647653 11.03 3.73 34.266572 68.399599 21.024013 44.14 40.0 20.0 60.0 100.0 20.0 40.0 40.0 60.0 47.5 2.0 40.0
0 005930 삼성전자 62.531321 -40.739685 17.89 1.82 9.035030 64.997000 60.659103 10.78 60.0 80.0 80.0 60.0 60.0 60.0 60.0 40.0 62.5 3.0 60.0
2 005380 현대차 47.460463 -42.627980 7.65 0.61 0.250849 -33.180940 -53.535829 8.36 80.0 100.0 40.0 40.0 80.0 100.0 80.0 80.0 75.0 4.0 80.0
3 373220 LG에너지솔루션 0.277164 -24.990839 1067.15 2.94 7.747504 -292.917727 -244.096251 0.27 100.0 40.0 100.0 80.0 100.0 80.0 100.0 100.0 87.5 5.0 100.0

5. 투자 유형별 데이터 변환 및 그룹 출력

3가지로 분류된 투자 유형별로 멀티팩터 종합 점수 데이터를 생성할 수 있습니다.

# 투자 유형에 따라 팩터 가중치를 조정한 데이터 변환
data_mast_v = mf.get_score_adj_weight(data_mast, weight='가치성장') # 가치성장 (밸류+퀄리티)
data_mast_t = mf.get_score_adj_weight(data_mast, weight='추세성장') # 추세성장 (모멘텀+퀄리티)
data_mast_c = mf.get_score_adj_weight(data_mast, weight='역발상')     # 역발상 (모멘텀+밸류) 

6. 종합점수별 그룹화 출력

Ngroup에 지정한 그룹수 만큼 종합점수에 따라 종목명을 분류하여 출력합니다. 종목명만 출력하기 때문에 분석 대상이 종목이 많은 경우 유용합니다.

mf.get_Ngroup(data_mast, Ngroup=2) # 상/하위 2개 그룹으로 분류

> 1 : SK스퀘어, SK하이닉스, 삼성전자
> 2 : 현대차, LG에너지솔루션

7. 개별 지표 데이터 수집

특정 팩터의 데이터만 개별적으로 추출할 수 있습니다.

# 개별 팩터 데이터 추출 (인자로 stock_list 딕셔너리 주입)
data_mom = mf.get_momentum(stock_list)
data_val = mf.get_value(stock_list)
data_fin = mf.get_quality(stock_list)

# 추출한 개별 팩터 데이터를 조합하여, 종합 점수 산정
data_mast_custom = mf.get_score_by_data(data_mom, data_val, data_fin)

8. 특정 종목 팩터 값 조회

개별 종목(예: 삼성전자 '005930')의 팩터 점수만 빠르게 확인하고 싶을 때 활용합니다.

mf.get_momentum_one('005930') # 삼성전자의 모멘텀 데이터 (주가모멘텀점수, 거래량모멘텀점수)
scode mom_price mom_vol
0 005930 62.531321 -40.739685
mf.get_value_one('005930')    # 삼성전자의 밸류 (PER, PBR) 
scode PER PBR
0 005930 17.89 1.82
mf.get_quality_one('005930')  # 삼성전자의 퀄리티 (매출증가율, 영업이익증가율, 순이익증가율, ROE)  
scode revenue_rate oper_income_rate net_income_rate ROE
0 005930 9.03503 64.997 60.659103 10.78

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multifactor-0.1.5.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multifactor-0.1.5-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file multifactor-0.1.5.tar.gz.

File metadata

  • Download URL: multifactor-0.1.5.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for multifactor-0.1.5.tar.gz
Algorithm Hash digest
SHA256 0993fd5378c74cd89a52b08243bbed6cff63f3189a329be8ccfb155ecc084d86
MD5 9c21a86529d3511926fadc1e52a0276e
BLAKE2b-256 e374b8c1cfc9068227a300707b7054c1b67b4301061d99756733bd4c9244adf1

See more details on using hashes here.

File details

Details for the file multifactor-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: multifactor-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for multifactor-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0d90734337ae7913220ffeb424b0cf7280f4b83486f0af8935dc3fdacdf7b31b
MD5 92eda287603277dc44e55c67e94ab5bb
BLAKE2b-256 aaeb0de3ed0385f6bbe6a3f5fb0ce43fa0dd94501a89991be35d2afd7ed432e2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page