MultiFactor 0.2.8__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {multifactor-0.2.8 → multifactor-0.3.0}/PKG-INFO +245 -36
- {multifactor-0.2.8 → multifactor-0.3.0}/README.md +244 -35
- {multifactor-0.2.8 → multifactor-0.3.0}/pyproject.toml +1 -1
- multifactor-0.3.0/src/MultiFactor/Visual.py +54 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/__init__.py +1 -1
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/us_stockinfo.py +18 -3
- multifactor-0.3.0/src/MultiFactor/vcompare_idx.py +164 -0
- multifactor-0.3.0/src/MultiFactor/vfinance_kr.py +128 -0
- multifactor-0.3.0/src/MultiFactor/vheatmap_idx.py +185 -0
- multifactor-0.3.0/src/MultiFactor/vheatmap_kr.py +194 -0
- multifactor-0.3.0/src/MultiFactor/vheatmap_us.py +211 -0
- multifactor-0.3.0/src/MultiFactor/vmulti_idx.py +151 -0
- multifactor-0.3.0/src/MultiFactor/vmulti_kr.py +146 -0
- multifactor-0.3.0/src/MultiFactor/vmulti_us.py +158 -0
- multifactor-0.3.0/src/MultiFactor/vret_idx.py +161 -0
- multifactor-0.3.0/src/MultiFactor/vret_kr.py +171 -0
- multifactor-0.3.0/src/MultiFactor/vret_us.py +183 -0
- multifactor-0.3.0/src/MultiFactor/vtargetprice_us.py +165 -0
- multifactor-0.3.0/src/MultiFactor/vtreemap_us.py +193 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor.egg-info/PKG-INFO +245 -36
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor.egg-info/SOURCES.txt +14 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/setup.cfg +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/core.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/momentum.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/momentum_one.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/quality.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/quality_one.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/score.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/score_adj_weight.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/stockinfo.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/us_core.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/us_momentum.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/us_quality.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/us_value.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/value.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor/value_one.py +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor.egg-info/dependency_links.txt +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor.egg-info/requires.txt +0 -0
- {multifactor-0.2.8 → multifactor-0.3.0}/src/MultiFactor.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MultiFactor
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: 멀티팩터 기반 주식 데이터 수집 패키지
|
|
5
5
|
Author-email: HANHO <hanhoman@gmail.com>
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -18,33 +18,35 @@ Requires-Dist: yfinance
|
|
|
18
18
|
# MultiFactor 📈
|
|
19
19
|
|
|
20
20
|
**MultiFactor**는 국내상장주식(코스피/코스닥)뿐만 아니라 미국주식(NYSE, NASDAQ)을 대상으로 멀티팩터(Multi-Factor) 전략을 손쉽게 적용하고, 팩터별 점수 및 종합 순위를 산출해 주는 파이썬 패키지입니다.
|
|
21
|
-
종목별 주가와 재무 데이터 수집은 FinanceDataReader와 yfinance를 기반으로 구동됩니다.
|
|
21
|
+
종목별 주가와 재무 데이터 수집은 FinanceDataReader(국내주식)와 yfinance(미국주식)를 기반으로 구동됩니다.
|
|
22
|
+
또한 주식시장 및 종목 정보 취득에 유용한 시각화분석 패키지가 추가 되었습니다.
|
|
22
23
|
|
|
23
24
|
<br>
|
|
24
25
|
|
|
25
26
|
## 📌 멀티팩터 전략이란?
|
|
27
|
+
|
|
26
28
|
주식 투자에서 멀티팩터(Multi-Factor) 기법은 주가의 수익률에 영향을 미치는 여러 가지 핵심 요인(팩터)을 동시에 고려하여 종목을 고르고 포트폴리오를 운용하는 데이터에 기반한 정량적 투자 전략입니다.
|
|
27
29
|
|
|
28
30
|
단순히 '저평가된 주식'만 찾거나 '상승 추세인 주식'만 사는 것이 아니라, 다양한 성공 요소를 결합하여 단일 팩터의 약점을 보완하고 보다 안정적인 초과 수익을 추구합니다. MultiFactor 라이브러리는 다음 3가지 핵심 팩터의 점수를 계산하고 이를 종합점수로 환산한 후 순위화한 결과를 제공합니다.
|
|
29
31
|
|
|
30
|
-
| 팩터 (Factor)
|
|
31
|
-
|
|
32
|
-
| **모멘텀 (Momentum)** | 과거에 우수한 성과를 보인 주식이 미래에도 상승 추세를 이어갈 것이라는 가정 | 주가 상승률, 거래량
|
|
33
|
-
| **밸류 (Value)**
|
|
34
|
-
| **퀄리티 (Quality)**
|
|
32
|
+
| 팩터 (Factor) | 핵심 개념 | 주요 지표 |
|
|
33
|
+
|:------------------ |:------------------------------------------ |:------------------- |
|
|
34
|
+
| **모멘텀 (Momentum)** | 과거에 우수한 성과를 보인 주식이 미래에도 상승 추세를 이어갈 것이라는 가정 | 주가 상승률, 거래량 |
|
|
35
|
+
| **밸류 (Value)** | 기업의 내재 가치 대비 저평가된 주식을 발굴 | PER, PBR |
|
|
36
|
+
| **퀄리티 (Quality)** | 우량한 펀더멘털, 안정적인 수익성, 장기 성장 잠재력을 갖춘 기업에 집중 | 매출성장률, 영업이익성장률, ROE |
|
|
35
37
|
|
|
36
38
|
<br>
|
|
37
39
|
|
|
38
40
|
## ✨ 주요 기능
|
|
39
|
-
* **국내 및 미국 주식 멀티팩터 데이터 제공:** 가치, 모멘텀, 퀄리티 지표 및 이를 합산한 종합 점수 산출
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
| -------- | -------- | -------- |
|
|
43
|
-
| 종목 정보 수집 | 지정한 시장(KR/US)의 시가총액 기준 상위 종목들의 기본 정보(종목코드, 종목명, 시가총액, 업종, 최근 종가 등)를 수집합니다. | get_stockinfo() |
|
|
44
|
-
| 멀티팩터 종합점수 | 종목별 멀티팩터 세부 지표 점수와 종합 점수, 그리고 전체 순위를 산출합니다. | get_score() |
|
|
45
|
-
| 투자스타일별 종합점수 | 3가지 투자 스타일(안정추구, 추세성장, 역발상 등)에 맞춰 가중치가 조정된 멀티팩터 종합 점수를 제공합니다. | get_score_adj_weight() |
|
|
46
|
-
| 종합점수 그룹화 | 산출된 종합 점수를 바탕으로 전체 종목을 N개의 그룹으로 분류하고, 그룹별 종목명을 출력합니다.| get_Ngroup() |
|
|
42
|
+
* **국내 및 미국 주식 멀티팩터 데이터 제공:** 가치, 모멘텀, 퀄리티 지표 및 이를 합산한 종합 점수 산출
|
|
47
43
|
|
|
44
|
+
| 구분 | 주요 기능 | 함수명 |
|
|
45
|
+
| ----------- | -------------------------------------------------------------------------- | ---------------------- |
|
|
46
|
+
| 종목 정보 수집 | 지정한 시장(KR/US)의 시가총액 기준 상위 종목들의 기본 정보(종목코드, 종목명, 시가총액, 업종, 최근 종가 등)를 수집합니다. | get_stockinfo() |
|
|
47
|
+
| 멀티팩터 종합점수 | 종목별 멀티팩터 세부 지표 점수와 종합 점수, 그리고 전체 순위를 산출합니다. | get_score() |
|
|
48
|
+
| 투자스타일별 종합점수 | 3가지 투자 스타일(안정추구, 추세성장, 역발상 등)에 맞춰 가중치가 조정된 멀티팩터 종합 점수를 제공합니다. | get_score_adj_weight() |
|
|
49
|
+
| 종합점수 그룹화 | 산출된 종합 점수를 바탕으로 전체 종목을 N개의 그룹으로 분류하고, 그룹별 종목명을 출력합니다. | get_Ngroup() |
|
|
48
50
|
|
|
49
51
|
* **투자 유형별 가중치 조절한 멀티팩터 데이터 제공 :** 투자 스타일에 맞춘 3가지 모델 제공
|
|
50
52
|
* **가치성장:** 밸류 + 퀄리티 조합 ("기업의 본질적인 가치와 안정성을 중요하게 생각하며, 장기적인 관점에서 투자")
|
|
@@ -53,14 +55,16 @@ Requires-Dist: yfinance
|
|
|
53
55
|
|
|
54
56
|
<br>
|
|
55
57
|
|
|
56
|
-
|
|
57
58
|
## ⚙️ 설치 방법 (Installation)
|
|
59
|
+
|
|
58
60
|
다음 코드를 실행하여 각자의 PC(또는 실습 환경)에 MultiFactor 라이브러리를 설치합니다. 이 과정은 최초 1회만 수행하면 됩니다.
|
|
61
|
+
|
|
59
62
|
```python
|
|
60
63
|
!pip install MultiFactor
|
|
61
64
|
```
|
|
62
65
|
|
|
63
66
|
만약 기존에 설치된 라이브러리를 최신 버전으로 업데이트해야 한다면 아래의 코드를 실행합니다.
|
|
67
|
+
|
|
64
68
|
```python
|
|
65
69
|
!pip install --upgrade MultiFactor
|
|
66
70
|
```
|
|
@@ -69,33 +73,49 @@ Requires-Dist: yfinance
|
|
|
69
73
|
|
|
70
74
|
## 🚀 빠른 시작 (Quick Start)
|
|
71
75
|
|
|
72
|
-
### 1. 패키지 불러오기
|
|
76
|
+
### 1. 패키지 불러오기
|
|
77
|
+
|
|
73
78
|
다음 코드로 멀티팩터 패키지를 불러옵니다.
|
|
79
|
+
|
|
74
80
|
```python
|
|
75
81
|
# 국내주식
|
|
76
82
|
from MultiFactor import MultiFactorKR
|
|
77
83
|
|
|
78
84
|
# 미국주식
|
|
79
85
|
from MultiFactor import MultiFactorUS
|
|
86
|
+
|
|
87
|
+
# 시각화 분석
|
|
88
|
+
from MultiFactor import Visual
|
|
80
89
|
```
|
|
81
90
|
|
|
82
91
|
<br>
|
|
83
92
|
|
|
84
|
-
### 2. 멀티팩터 객체 생성
|
|
93
|
+
### 2. 멀티팩터 객체 생성
|
|
94
|
+
|
|
85
95
|
멀티팩터 객체 생성 시 수집 대상 종목 수(`N`)를 지정합니다. N이 커질수록 데이터 수집 시간이 길어지므로, 초기 테스트에는 5~50 사이로 지정한 후 차츰 늘려가기를 권장합니다.
|
|
96
|
+
|
|
86
97
|
```python
|
|
87
98
|
# 국내 시가총액 상위 50개 종목
|
|
88
99
|
mf_kr = MultiFactorKR(N=50)
|
|
89
|
-
|
|
100
|
+
|
|
90
101
|
# 미국 시가총액 상위 50개 종목
|
|
91
102
|
mf_us = MultiFactorUS(N=50)
|
|
92
103
|
```
|
|
104
|
+
|
|
105
|
+
시각화 분석 객체는 다음 코드로 생성합니다.
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
visual = Visual()
|
|
109
|
+
```
|
|
110
|
+
|
|
93
111
|
<br>
|
|
94
112
|
|
|
95
|
-
### 3. 종목 정보 수집
|
|
113
|
+
### 3. 종목 정보 수집
|
|
114
|
+
|
|
96
115
|
멀티팩터 객체에서 지정한 종목수(N) 만큼 종목 정보 데이터를 생성합니다.
|
|
97
116
|
|
|
98
|
-
|
|
117
|
+
① 국내주식
|
|
118
|
+
|
|
99
119
|
```python
|
|
100
120
|
df = mf_kr.get_stockinfo()
|
|
101
121
|
df[['Code', 'Name', 'Marcap']].head()
|
|
@@ -144,8 +164,8 @@ df[['Code', 'Name', 'Marcap']].head()
|
|
|
144
164
|
</tbody>
|
|
145
165
|
</table>
|
|
146
166
|
|
|
167
|
+
② 미국 주식
|
|
147
168
|
|
|
148
|
-
2. 미국 주식
|
|
149
169
|
```python
|
|
150
170
|
df = mf_us.get_stockinfo()
|
|
151
171
|
df[['Code', 'Name', 'MarketCap']].head()
|
|
@@ -194,11 +214,10 @@ df[['Code', 'Name', 'MarketCap']].head()
|
|
|
194
214
|
</tbody>
|
|
195
215
|
</table>
|
|
196
216
|
|
|
197
|
-
|
|
198
217
|
<br>
|
|
199
218
|
|
|
200
|
-
|
|
201
219
|
### 4. 멀티팩터 종합 점수 데이터 수집
|
|
220
|
+
|
|
202
221
|
`get_score` 함수로 멀티팩터 종합점수 데이터를 간단하게 생성할 수 있습니다. 동일한 함수로 한국과 미국 시장 모두 분석이 가능합니다.
|
|
203
222
|
|
|
204
223
|
이 데이터프레임 안에는 분석에 필요한 총 23개의 컬럼(열)이 담겨 있습니다. 컬럼은 크게 4개 유형으로 구분됩니다.
|
|
@@ -309,7 +328,6 @@ df[cols].head()
|
|
|
309
328
|
</tbody>
|
|
310
329
|
</table>
|
|
311
330
|
|
|
312
|
-
|
|
313
331
|
(2) 미국주식
|
|
314
332
|
|
|
315
333
|
```python
|
|
@@ -321,6 +339,7 @@ cols = ['scode', 'sname', 'mom_price', 'mom_vol', 'PER', 'PBR',
|
|
|
321
339
|
|
|
322
340
|
df[cols].head()
|
|
323
341
|
```
|
|
342
|
+
|
|
324
343
|
<table border="1" class="dataframe">
|
|
325
344
|
<thead>
|
|
326
345
|
<tr style="text-align: right;">
|
|
@@ -411,6 +430,7 @@ df[cols].head()
|
|
|
411
430
|
<b>② 종합지표 순위 예시</b>
|
|
412
431
|
|
|
413
432
|
(1) 국내주식
|
|
433
|
+
|
|
414
434
|
```python
|
|
415
435
|
mf_kr = MultiFactorKR(N=10)
|
|
416
436
|
df = mf_kr.get_score()
|
|
@@ -420,6 +440,7 @@ cols = ['scode', 'sname', '모멘텀_주가', '모멘텀_거래량', '밸류_PER
|
|
|
420
440
|
|
|
421
441
|
df[cols].head()
|
|
422
442
|
```
|
|
443
|
+
|
|
423
444
|
<table border="1" class="dataframe">
|
|
424
445
|
<thead>
|
|
425
446
|
<tr style="text-align: right;">
|
|
@@ -505,8 +526,8 @@ df[cols].head()
|
|
|
505
526
|
</tbody>
|
|
506
527
|
</table>
|
|
507
528
|
|
|
508
|
-
|
|
509
529
|
(2) 미국주식
|
|
530
|
+
|
|
510
531
|
```python
|
|
511
532
|
mf_us = MultiFactorUS(N=10)
|
|
512
533
|
df = mf_us.get_score()
|
|
@@ -516,6 +537,7 @@ cols = ['scode', 'sname', '모멘텀_주가', '모멘텀_거래량', '밸류_PER
|
|
|
516
537
|
|
|
517
538
|
df[cols].head()
|
|
518
539
|
```
|
|
540
|
+
|
|
519
541
|
<table border="1" class="dataframe">
|
|
520
542
|
<thead>
|
|
521
543
|
<tr style="text-align: right;">
|
|
@@ -614,6 +636,7 @@ df = mf_kr.get_score()
|
|
|
614
636
|
cols = ['scode', 'sname', '종합점수', '종합순위', '종합순위_퍼센트']
|
|
615
637
|
df[cols].head()
|
|
616
638
|
```
|
|
639
|
+
|
|
617
640
|
<table border="1" class="dataframe">
|
|
618
641
|
<thead>
|
|
619
642
|
<tr style="text-align: right;">
|
|
@@ -669,8 +692,8 @@ df[cols].head()
|
|
|
669
692
|
</tbody>
|
|
670
693
|
</table>
|
|
671
694
|
|
|
672
|
-
|
|
673
695
|
(2) 미국주식
|
|
696
|
+
|
|
674
697
|
```python
|
|
675
698
|
mf_us = MultiFactorUS(N=10)
|
|
676
699
|
df = mf_us.get_score()
|
|
@@ -678,6 +701,7 @@ df = mf_us.get_score()
|
|
|
678
701
|
cols = ['scode', 'sname', '종합점수', '종합순위', '종합순위_퍼센트']
|
|
679
702
|
df[cols].head()
|
|
680
703
|
```
|
|
704
|
+
|
|
681
705
|
<table border="1" class="dataframe">
|
|
682
706
|
<thead>
|
|
683
707
|
<tr style="text-align: right;">
|
|
@@ -735,13 +759,14 @@ df[cols].head()
|
|
|
735
759
|
|
|
736
760
|
<br>
|
|
737
761
|
|
|
738
|
-
### 5. 투자 스타일별 종합점수 출력
|
|
762
|
+
### 5. 투자 스타일별 종합점수 출력
|
|
739
763
|
|
|
740
764
|
3가지로 분류된 투자 유형별로 가중치를 조절한 멀티팩터 점수를 산출합니다. 국내와 미국 시장 모두 동일하게 적용 가능합니다.
|
|
741
765
|
|
|
742
766
|
<b>① 가치 성장 전략 : 밸류 + 퀄리티 조합</b>
|
|
743
767
|
|
|
744
768
|
(1) 국내주식
|
|
769
|
+
|
|
745
770
|
```python
|
|
746
771
|
# 시가총액 상위 100종목
|
|
747
772
|
mf_kr = MultiFactorKR(N=100)
|
|
@@ -767,7 +792,7 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
767
792
|
<tr>
|
|
768
793
|
<th>0</th>
|
|
769
794
|
<td>028050</td>
|
|
770
|
-
<td>삼성E&
|
|
795
|
+
<td>삼성E&A</td>
|
|
771
796
|
<td>24</td>
|
|
772
797
|
<td>1</td>
|
|
773
798
|
</tr>
|
|
@@ -802,8 +827,8 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
802
827
|
</tbody>
|
|
803
828
|
</table>
|
|
804
829
|
|
|
805
|
-
|
|
806
830
|
(2) 미국주식
|
|
831
|
+
|
|
807
832
|
```python
|
|
808
833
|
# 시가총액 상위 100종목
|
|
809
834
|
mf_us = MultiFactorUS(N=100)
|
|
@@ -814,6 +839,7 @@ df = mf_us.get_score_adj_weight(df, weight='가치성장')
|
|
|
814
839
|
|
|
815
840
|
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
816
841
|
```
|
|
842
|
+
|
|
817
843
|
<table border="1" class="dataframe">
|
|
818
844
|
<thead>
|
|
819
845
|
<tr style="text-align: right;">
|
|
@@ -867,8 +893,8 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
867
893
|
|
|
868
894
|
<b>② 추세 성장 전략 : 모멘텀 + 퀄리티 조합</b>
|
|
869
895
|
|
|
870
|
-
|
|
871
896
|
(1) 국내주식
|
|
897
|
+
|
|
872
898
|
```python
|
|
873
899
|
# 시가총액 상위 100종목
|
|
874
900
|
mf_kr = MultiFactorKR(N=100)
|
|
@@ -922,16 +948,15 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
922
948
|
<tr>
|
|
923
949
|
<th>4</th>
|
|
924
950
|
<td>028050</td>
|
|
925
|
-
<td>삼성E&
|
|
951
|
+
<td>삼성E&A</td>
|
|
926
952
|
<td>22</td>
|
|
927
953
|
<td>5</td>
|
|
928
954
|
</tr>
|
|
929
955
|
</tbody>
|
|
930
956
|
</table>
|
|
931
957
|
|
|
932
|
-
|
|
933
|
-
|
|
934
958
|
(2) 미국주식
|
|
959
|
+
|
|
935
960
|
```python
|
|
936
961
|
# 시가총액 상위 100종목
|
|
937
962
|
mf_us = MultiFactorUS(N=100)
|
|
@@ -942,6 +967,7 @@ df = mf_us.get_score_adj_weight(df, weight='추세성장')
|
|
|
942
967
|
|
|
943
968
|
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
944
969
|
```
|
|
970
|
+
|
|
945
971
|
<table border="1" class="dataframe">
|
|
946
972
|
<thead>
|
|
947
973
|
<tr style="text-align: right;">
|
|
@@ -995,8 +1021,8 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
995
1021
|
|
|
996
1022
|
<b>③ 역발상 전략 : 밸류 + 모멘텀 조합</b>
|
|
997
1023
|
|
|
998
|
-
|
|
999
1024
|
(1) 국내주식
|
|
1025
|
+
|
|
1000
1026
|
```python
|
|
1001
1027
|
# 시가총액 상위 100종목
|
|
1002
1028
|
mf_kr = MultiFactorKR(N=100)
|
|
@@ -1007,6 +1033,7 @@ df = mf_kr.get_score_adj_weight(df, weight='역발상')
|
|
|
1007
1033
|
|
|
1008
1034
|
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
1009
1035
|
```
|
|
1036
|
+
|
|
1010
1037
|
<table border="1" class="dataframe">
|
|
1011
1038
|
<thead>
|
|
1012
1039
|
<tr style="text-align: right;">
|
|
@@ -1057,6 +1084,7 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
1057
1084
|
</table>
|
|
1058
1085
|
|
|
1059
1086
|
(2) 미국주식
|
|
1087
|
+
|
|
1060
1088
|
```python
|
|
1061
1089
|
# 시가총액 상위 100종목
|
|
1062
1090
|
mf_us = MultiFactorUS(N=100)
|
|
@@ -1067,6 +1095,7 @@ df = mf_us.get_score_adj_weight(df, weight='역발상')
|
|
|
1067
1095
|
|
|
1068
1096
|
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
1069
1097
|
```
|
|
1098
|
+
|
|
1070
1099
|
<table border="1" class="dataframe">
|
|
1071
1100
|
<thead>
|
|
1072
1101
|
<tr style="text-align: right;">
|
|
@@ -1116,12 +1145,24 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
1116
1145
|
</tbody>
|
|
1117
1146
|
</table>
|
|
1118
1147
|
|
|
1148
|
+
※ (참고) 밸류, 모멘텀, 퀄러티를 동일한 비중으로 조합하는 기본 옵션을 적용하려면 다음 코드를 수행합니다.
|
|
1149
|
+
|
|
1150
|
+
```python
|
|
1151
|
+
# 기본값인 균등(동일) 배분 전략 적용 : 국내주식
|
|
1152
|
+
df = mf_kr.get_score_adj_weight(df, weight='균등')
|
|
1153
|
+
|
|
1154
|
+
# 기본값인 균등(동일) 배분 전략 적용 : 미국주식
|
|
1155
|
+
df = mf_us.get_score_adj_weight(df, weight='균등')
|
|
1156
|
+
```
|
|
1157
|
+
|
|
1119
1158
|
<br>
|
|
1120
1159
|
|
|
1121
1160
|
### 6. 종합점수별 그룹화 출력
|
|
1161
|
+
|
|
1122
1162
|
`get_Ngroup()` 함수를 사용하면 전체 종목을 원하는 개수의 그룹으로 깔끔하게 묶어 요약할 수 있습니다.
|
|
1123
1163
|
|
|
1124
|
-
|
|
1164
|
+
① 국내주식
|
|
1165
|
+
|
|
1125
1166
|
```python
|
|
1126
1167
|
# 시가총액 상위 100종목
|
|
1127
1168
|
mf_kr = MultiFactorKR(N=100)
|
|
@@ -1143,8 +1184,8 @@ mf_kr.get_Ngroup(df, Ngroup=10)
|
|
|
1143
1184
|
# 10 : LG, 레인보우로보틱스, 한미반도체, POSCO홀딩스, LG에너지솔루션, 카카오, LG화학, 삼성바이오로직스, 한진칼, 포스코퓨처엠
|
|
1144
1185
|
```
|
|
1145
1186
|
|
|
1187
|
+
② 미국주식
|
|
1146
1188
|
|
|
1147
|
-
(2) 미국주식
|
|
1148
1189
|
```python
|
|
1149
1190
|
# 시가총액 상위 100종목
|
|
1150
1191
|
mf_us = MultiFactorUS(N=100)
|
|
@@ -1165,6 +1206,174 @@ mf_us.get_Ngroup(df, Ngroup=10)
|
|
|
1165
1206
|
#9 : Walt Disney Company (The), Coca-Cola Company (The), RTX Corporation, Parker Hannifin, Danaher Corporation, Deere & Company, Procter & Gamble, ConocoPhillips, Accenture, Linde plc
|
|
1166
1207
|
#10 : Palo Alto Networks, Qualcomm, Welltower, ExxonMobil, Home Depot (The), Walmart, Honeywell, Chevron Corporation, UnitedHealth Group, Tesla, Inc.
|
|
1167
1208
|
```
|
|
1209
|
+
|
|
1210
|
+
<br>
|
|
1211
|
+
|
|
1212
|
+
### 7. 시각화 분석
|
|
1213
|
+
|
|
1214
|
+
주식시장 및 개별 종목 분석에 유용한 다양한 시각화 결과를 제공합니다. 파이썬의 ipywidget 라이브러를 활용하여 차트 구성 옵션을 대화형으로 선택할 수 있도록 구성하였습니다.
|
|
1215
|
+
|
|
1216
|
+
> 💡 **안내사항**
|
|
1217
|
+
> - 차트 출력 시 한글이 깨지는 현상을 방지하기 위해, 환경에 맞게 한글 폰트를 설정하세요.
|
|
1218
|
+
> - 다수의 종목 데이터를 동시에 수집할 경우, 로컬 환경(개인 PC)에서는 `yfinance` API의 요청 제한으로 인해 IP 차단이 발생할 수 있습니다. 따라서 안정적인 데이터 수집을 위해 **구글 Colab** 환경에서의 실행을 권장합니다.
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
| 함수구분 | 설명 | 함수이름 |
|
|
1224
|
+
| -------- | --------------------------- | ------------------ |
|
|
1225
|
+
| 복합 차트 | 지수별 라인 복합 차트 | vis.multi_idx |
|
|
1226
|
+
| 복합 차트 | 국내주식 라인 복합 차트 | vis.multi_kr |
|
|
1227
|
+
| 복합 차트 | 미국주식 라인 복합 차트 | vis.multi_us |
|
|
1228
|
+
| 지표별 수익률 | 주요 지표 기간 수익률 비교 차트 | vis.compare_idx |
|
|
1229
|
+
| 누적 수익률 | 지표별 누적수익률 비교 차트 | vis.ret_idx |
|
|
1230
|
+
| 누적 수익률 | 국내주식 누적수익률 비교 차트 | vis.ret_kr |
|
|
1231
|
+
| 누적 수익률 | 미국주식 누적수익률 비교 차트 | vis.ret_us |
|
|
1232
|
+
| 실적재무 종합 | 국내주식 실적 및 밸류 추이 | vis.finance_kr |
|
|
1233
|
+
| 업종종목 트리맵 | 미국주식 주요종목 주가등락율 트리맵 | vis.treemap_us |
|
|
1234
|
+
| 수익률 히트맵 | 지수 연월 수익률 히트맵 | vis.heatmap_idx |
|
|
1235
|
+
| 수익률 히트맵 | 국내주식 연월 수익률 히트맵 | vis.heatmap_kr |
|
|
1236
|
+
| 수익률 히트맵 | 미국주식 연월 수익률 히트맵 | vis.heatmap_us |
|
|
1237
|
+
| 목표가 분석 | 미국주식 목표가 대비 현재가 차이(괴리율) 순위표 | vis.targetprice_us |
|
|
1238
|
+
|
|
1239
|
+
① (복합 차트) 지수별 라인 복합 차트
|
|
1240
|
+
|
|
1241
|
+
```python
|
|
1242
|
+
vis.multi_idx()
|
|
1243
|
+
```
|
|
1244
|
+
|
|
1245
|
+
 지수별 라인 복합 차트.png>)
|
|
1246
|
+
|
|
1247
|
+
<br>
|
|
1248
|
+
|
|
1249
|
+
② (복합 차트) 국내주식 라인 복합 차트
|
|
1250
|
+
|
|
1251
|
+
```python
|
|
1252
|
+
vis.multi_kr()
|
|
1253
|
+
```
|
|
1254
|
+
|
|
1255
|
+
 국내주식 라인 복합 차트.png>)
|
|
1256
|
+
|
|
1257
|
+
<br>
|
|
1258
|
+
|
|
1259
|
+
③ (복합 차트) 미국주식 라인 복합 차트
|
|
1260
|
+
|
|
1261
|
+
```python
|
|
1262
|
+
vis.multi_us()
|
|
1263
|
+
```
|
|
1264
|
+
|
|
1265
|
+
 미국주식 라인 복합 차트.png>)
|
|
1266
|
+
|
|
1267
|
+
<br>
|
|
1268
|
+
|
|
1269
|
+
④ (지표별 수익률) 주요 지표 기간 수익률 비교 차트
|
|
1270
|
+
|
|
1271
|
+
```python
|
|
1272
|
+
vis.compare_idx()
|
|
1273
|
+
```
|
|
1274
|
+
|
|
1275
|
+
 주요 지표 기간 수익률 비교 차트.png>)
|
|
1276
|
+
|
|
1277
|
+
<br>
|
|
1278
|
+
|
|
1279
|
+
⑤ (누적 수익률) 지표별 누적수익률 비교 차트
|
|
1280
|
+
|
|
1281
|
+
```python
|
|
1282
|
+
vis.ret_idx()
|
|
1283
|
+
```
|
|
1284
|
+
|
|
1285
|
+
 지표별 누적수익률 비교 차트.png>)
|
|
1286
|
+
|
|
1287
|
+
<br>
|
|
1288
|
+
|
|
1289
|
+
③ (누적 수익률) 국내주식 누적수익률 비교 차트
|
|
1290
|
+
|
|
1291
|
+
```python
|
|
1292
|
+
vis.ret_kr()
|
|
1293
|
+
```
|
|
1294
|
+
|
|
1295
|
+
 국내주식 누적수익률 비교 차트.png>)
|
|
1296
|
+
|
|
1297
|
+
<br>
|
|
1298
|
+
|
|
1299
|
+
⑦ (누적 수익률) 미국주식 누적수익률 비교 차트
|
|
1300
|
+
|
|
1301
|
+
```python
|
|
1302
|
+
vis.ret_us()
|
|
1303
|
+
```
|
|
1304
|
+
|
|
1305
|
+
 미국주식 누적수익률 비교 차트.png>)
|
|
1306
|
+
|
|
1307
|
+
<br>
|
|
1308
|
+
|
|
1309
|
+
⑧ (실적재무 종합) 국내주식 실적 및 밸류 추이
|
|
1310
|
+
|
|
1311
|
+
```python
|
|
1312
|
+
vis.finance_kr()
|
|
1313
|
+
```
|
|
1314
|
+
|
|
1315
|
+
 국내주식 실적 및 밸류 추이0.png>)
|
|
1316
|
+
 국내주식 실적 및 밸류 추이.png>)
|
|
1317
|
+
|
|
1318
|
+
<br>
|
|
1319
|
+
|
|
1320
|
+
⑨ (업종종목 트리맵) 미국주식 주요종목 주가등락율 트리맵
|
|
1321
|
+
구글 Colab에서 수행시 다음 코드를 미리 수행하여 트리맵이 정상적으로 출력되도록 합니다.
|
|
1322
|
+
|
|
1323
|
+
```python
|
|
1324
|
+
# 구글 colab에서 트리맵 렌더링 명령어
|
|
1325
|
+
from google.colab import output
|
|
1326
|
+
output.enable_custom_widget_manager()
|
|
1327
|
+
```
|
|
1328
|
+
|
|
1329
|
+
다음 코드로 미국주식 주가등락률 트리맵을 출력합니다.
|
|
1330
|
+
|
|
1331
|
+
```python
|
|
1332
|
+
vis.treemap_us()
|
|
1333
|
+
```
|
|
1334
|
+
|
|
1335
|
+
 미국주식 주요종목 주가등락율 트리맵.png>)
|
|
1336
|
+
|
|
1337
|
+
<br>
|
|
1338
|
+
|
|
1339
|
+
⑩ (수익률 히트맵) 지수 연월 수익률 히트맵
|
|
1340
|
+
|
|
1341
|
+
```python
|
|
1342
|
+
vis.heatmap_idx()
|
|
1343
|
+
```
|
|
1344
|
+
|
|
1345
|
+
 지수 연월 수익률 히트맵.png>)
|
|
1346
|
+
|
|
1347
|
+
<br>
|
|
1348
|
+
|
|
1349
|
+
⑪ (수익률 히트맵) 국내주식 연월 수익률 히트맵
|
|
1350
|
+
|
|
1351
|
+
```python
|
|
1352
|
+
vis.heatmap_kr()
|
|
1353
|
+
```
|
|
1354
|
+
|
|
1355
|
+
 국내주식 연월 수익률 히트맵.png>)
|
|
1356
|
+
|
|
1357
|
+
<br>
|
|
1358
|
+
|
|
1359
|
+
⑫ (수익률 히트맵) 미국주식 연월 수익률 히트맵
|
|
1360
|
+
|
|
1361
|
+
```python
|
|
1362
|
+
vis.heatmap_us()
|
|
1363
|
+
```
|
|
1364
|
+
|
|
1365
|
+
 미국주식 연월 수익률 히트맵.png>)
|
|
1366
|
+
|
|
1367
|
+
<br>
|
|
1368
|
+
|
|
1369
|
+
⑬ (목표가 분석) 미국주식 목표가 대비 현재가 차이(괴리율) 순위표
|
|
1370
|
+
|
|
1371
|
+
```python
|
|
1372
|
+
vis.targetprice_us()
|
|
1373
|
+
```
|
|
1374
|
+
|
|
1375
|
+
 미국주식 목표가 대비 현재가 차이(괴리율) 순위표.png>)
|
|
1376
|
+
|
|
1168
1377
|
<br>
|
|
1169
1378
|
|
|
1170
1379
|
## ⚠️ 투자자 유의사항 (Disclaimer)
|