MultiFactor 0.2.5__tar.gz → 0.2.6__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.5 → multifactor-0.2.6}/PKG-INFO +575 -158
- {multifactor-0.2.5 → multifactor-0.2.6}/README.md +574 -157
- {multifactor-0.2.5 → multifactor-0.2.6}/pyproject.toml +1 -1
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor.egg-info/PKG-INFO +575 -158
- {multifactor-0.2.5 → multifactor-0.2.6}/setup.cfg +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/__init__.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/core.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/momentum.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/momentum_one.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/quality.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/quality_one.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/score.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/score_adj_weight.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/stockinfo.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/us_core.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/us_momentum.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/us_quality.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/us_stockinfo.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/us_value.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/value.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor/value_one.py +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor.egg-info/SOURCES.txt +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor.egg-info/dependency_links.txt +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/src/MultiFactor.egg-info/requires.txt +0 -0
- {multifactor-0.2.5 → multifactor-0.2.6}/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.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: 멀티팩터 기반 주식 데이터 수집 패키지
|
|
5
5
|
Author-email: HANHO <hanhoman@gmail.com>
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -17,8 +17,8 @@ Requires-Dist: yfinance
|
|
|
17
17
|
|
|
18
18
|
# MultiFactor 📈
|
|
19
19
|
|
|
20
|
-
**MultiFactor**는 국내상장주식(코스피/코스닥)을 대상으로 멀티팩터(Multi-Factor) 전략을 손쉽게 적용하고, 팩터별 점수 및 종합 순위를 산출해 주는 파이썬 패키지입니다.
|
|
21
|
-
종목별 주가와 재무 데이터 수집은
|
|
20
|
+
**MultiFactor**는 국내상장주식(코스피/코스닥)뿐만 아니라 미국주식(NYSE, NASDAQ)을 대상으로 멀티팩터(Multi-Factor) 전략을 손쉽게 적용하고, 팩터별 점수 및 종합 순위를 산출해 주는 파이썬 패키지입니다.
|
|
21
|
+
종목별 주가와 재무 데이터 수집은 FinanceDataReader와 yfinance를 기반으로 구동됩니다.
|
|
22
22
|
|
|
23
23
|
<br>
|
|
24
24
|
|
|
@@ -36,15 +36,14 @@ Requires-Dist: yfinance
|
|
|
36
36
|
<br>
|
|
37
37
|
|
|
38
38
|
## ✨ 주요 기능
|
|
39
|
-
* **국내 주식 멀티팩터 데이터 제공:** 가치, 모멘텀, 퀄리티 지표 및 이를 합산한 종합 점수 산출
|
|
39
|
+
* **국내 및 미국 주식 멀티팩터 데이터 제공:** 가치, 모멘텀, 퀄리티 지표 및 이를 합산한 종합 점수 산출
|
|
40
40
|
|
|
41
41
|
| 구분 | 주요 기능 | 함수명 |
|
|
42
42
|
| -------- | -------- | -------- |
|
|
43
|
-
| 종목 정보 수집 | 시가총액 기준 상위 종목들의 기본 정보(종목코드, 종목명, 시가총액, 업종, 최근 종가 등)를 수집합니다. | get_stockinfo() |
|
|
43
|
+
| 종목 정보 수집 | 지정한 시장(KR/US)의 시가총액 기준 상위 종목들의 기본 정보(종목코드, 종목명, 시가총액, 업종, 최근 종가 등)를 수집합니다. | get_stockinfo() |
|
|
44
44
|
| 멀티팩터 종합점수 | 종목별 멀티팩터 세부 지표 점수와 종합 점수, 그리고 전체 순위를 산출합니다. | get_score() |
|
|
45
45
|
| 투자스타일별 종합점수 | 3가지 투자 스타일(안정추구, 추세성장, 역발상 등)에 맞춰 가중치가 조정된 멀티팩터 종합 점수를 제공합니다. | get_score_adj_weight() |
|
|
46
46
|
| 종합점수 그룹화 | 산출된 종합 점수를 바탕으로 전체 종목을 N개의 그룹으로 분류하고, 그룹별 종목명을 출력합니다.| get_Ngroup() |
|
|
47
|
-
| 특정 종목 팩터 조회 | 단일 종목에 대한 개별 팩터(모멘텀, 밸류, 퀄리티) 값을 빠르게 조회합니다. | get_momentum_one() <br> get_value_one() <br> get_quality_one() |
|
|
48
47
|
|
|
49
48
|
|
|
50
49
|
* **투자 유형별 가중치 조절한 멀티팩터 데이터 제공 :** 투자 스타일에 맞춘 3가지 모델 제공
|
|
@@ -73,28 +72,35 @@ Requires-Dist: yfinance
|
|
|
73
72
|
### 1. 패키지 불러오기
|
|
74
73
|
다음 코드로 멀티팩터 패키지를 불러옵니다.
|
|
75
74
|
```python
|
|
76
|
-
|
|
75
|
+
# 국내주식
|
|
76
|
+
from MultiFactor import MultiFactorKR
|
|
77
|
+
|
|
78
|
+
# 미국주식
|
|
79
|
+
from MultiFactor import MultiFactorUS
|
|
77
80
|
```
|
|
78
81
|
|
|
79
82
|
<br>
|
|
80
83
|
|
|
81
84
|
### 2. 멀티팩터 객체 생성
|
|
82
|
-
멀티팩터 객체 생성
|
|
85
|
+
멀티팩터 객체 생성 시 수집 대상 종목 수(`N`)를 지정합니다. N이 커질수록 데이터 수집 시간이 길어지므로, 초기 테스트에는 5~50 사이로 지정한 후 차츰 늘려가기를 권장합니다.
|
|
83
86
|
```python
|
|
84
|
-
|
|
87
|
+
# 국내 시가총액 상위 50개 종목
|
|
88
|
+
mf_kr = MultiFactorKR(N=50)
|
|
89
|
+
|
|
90
|
+
# 미국 시가총액 상위 50개 종목
|
|
91
|
+
mf_us = MultiFactorUS(N=50)
|
|
85
92
|
```
|
|
86
93
|
<br>
|
|
87
94
|
|
|
88
95
|
### 3. 종목 정보 수집
|
|
89
|
-
멀티팩터 객체에서 지정한 종목수(N) 만큼 종목 정보 데이터를 생성합니다.
|
|
96
|
+
멀티팩터 객체에서 지정한 종목수(N) 만큼 종목 정보 데이터를 생성합니다.
|
|
90
97
|
|
|
98
|
+
(1) 국내주식
|
|
91
99
|
```python
|
|
92
|
-
|
|
93
|
-
df = mf.get_stockinfo()
|
|
94
|
-
|
|
95
|
-
# 종목코드, 종목명, 시가총액 출력 (최초 5건)
|
|
100
|
+
df = mf_kr.get_stockinfo()
|
|
96
101
|
df[['Code', 'Name', 'Marcap']].head()
|
|
97
102
|
```
|
|
103
|
+
|
|
98
104
|
<table border="1" class="dataframe">
|
|
99
105
|
<thead>
|
|
100
106
|
<tr style="text-align: right;">
|
|
@@ -139,41 +145,82 @@ df[['Code', 'Name', 'Marcap']].head()
|
|
|
139
145
|
</table>
|
|
140
146
|
|
|
141
147
|
|
|
148
|
+
2. 미국 주식
|
|
142
149
|
```python
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
df = mf_us.get_stockinfo()
|
|
151
|
+
df[['Code', 'Name', 'MarketCap']].head()
|
|
152
|
+
```
|
|
146
153
|
|
|
147
|
-
|
|
148
|
-
|
|
154
|
+
<table border="1" class="dataframe">
|
|
155
|
+
<thead>
|
|
156
|
+
<tr style="text-align: right;">
|
|
157
|
+
<th></th>
|
|
158
|
+
<th>Code</th>
|
|
159
|
+
<th>Name</th>
|
|
160
|
+
<th>MarketCap</th>
|
|
161
|
+
</tr>
|
|
162
|
+
</thead>
|
|
163
|
+
<tbody>
|
|
164
|
+
<tr>
|
|
165
|
+
<th>0</th>
|
|
166
|
+
<td>NVDA</td>
|
|
167
|
+
<td>NVIDIA</td>
|
|
168
|
+
<td>4819905000000</td>
|
|
169
|
+
</tr>
|
|
170
|
+
<tr>
|
|
171
|
+
<th>1</th>
|
|
172
|
+
<td>GOOGL</td>
|
|
173
|
+
<td>Alphabet Inc. (Class A) Communication</td>
|
|
174
|
+
<td>4064833940000</td>
|
|
175
|
+
</tr>
|
|
176
|
+
<tr>
|
|
177
|
+
<th>2</th>
|
|
178
|
+
<td>GOOG</td>
|
|
179
|
+
<td>Alphabet Inc. (Class C) Communication</td>
|
|
180
|
+
<td>4025518690000</td>
|
|
181
|
+
</tr>
|
|
182
|
+
<tr>
|
|
183
|
+
<th>3</th>
|
|
184
|
+
<td>AAPL</td>
|
|
185
|
+
<td>Apple Inc.</td>
|
|
186
|
+
<td>3867012276000</td>
|
|
187
|
+
</tr>
|
|
188
|
+
<tr>
|
|
189
|
+
<th>4</th>
|
|
190
|
+
<td>MSFT</td>
|
|
191
|
+
<td>Microsoft</td>
|
|
192
|
+
<td>3120694875480</td>
|
|
193
|
+
</tr>
|
|
194
|
+
</tbody>
|
|
195
|
+
</table>
|
|
149
196
|
|
|
150
|
-
<br>
|
|
151
197
|
|
|
198
|
+
<br>
|
|
152
199
|
|
|
153
|
-
### 4.멀티팩터 종합 점수 데이터 수집
|
|
154
|
-
```get_score```함수로 멀티팩터 종합점수 데이터를 간단하게 생성할 수 있습니다. 다음 코드는 시가총액 상위 10개 종목의 종합 점수를 추출하여 파이썬 데이터프레임(df)에 저장합니다.
|
|
155
200
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
mf = MultiFactorKR(N=10)
|
|
159
|
-
df = mf.get_score()
|
|
160
|
-
```
|
|
201
|
+
### 4. 멀티팩터 종합 점수 데이터 수집
|
|
202
|
+
`get_score` 함수로 멀티팩터 종합점수 데이터를 간단하게 생성할 수 있습니다. 동일한 함수로 한국과 미국 시장 모두 분석이 가능합니다.
|
|
161
203
|
|
|
162
|
-
이 데이터프레임 안에는 분석에 필요한 총 23개의 컬럼(열)이 담겨 있습니다. 컬럼은 크게 4개
|
|
204
|
+
이 데이터프레임 안에는 분석에 필요한 총 23개의 컬럼(열)이 담겨 있습니다. 컬럼은 크게 4개 유형으로 구분됩니다.
|
|
163
205
|
|
|
164
|
-
- 종목정보 :
|
|
206
|
+
- 종목정보 : 종목코드(티커), 종목명
|
|
165
207
|
- 종합지표 원본 : 모멘텀 주가, 모멘텀 거래량, PER, PBR, 매출 증가율, 영업이익 증가율, 순이익 증가율, ROE
|
|
166
|
-
- 종합지표 순위
|
|
208
|
+
- 종합지표 순위 : 종합 지표 원본 데이터를 추출된 N개 종목 내에서의 상대 순위로 환산한 값
|
|
167
209
|
- 종합점수/순위 : 종합 지표 순위들의 평균값 및 이를 바탕으로 매긴 최종 순위
|
|
168
210
|
|
|
211
|
+
<br>
|
|
169
212
|
|
|
170
213
|
<b>① 종합지표 원본 추출 예시</b>
|
|
171
214
|
|
|
172
|
-
|
|
215
|
+
(1) 국내주식
|
|
173
216
|
|
|
174
217
|
```python
|
|
218
|
+
mf_kr = MultiFactorKR(N=10)
|
|
219
|
+
df = mf_kr.get_score()
|
|
220
|
+
|
|
175
221
|
cols = ['scode', 'sname', 'mom_price', 'mom_vol', 'PER', 'PBR',
|
|
176
222
|
'revenue_rate', 'oper_income_rate', 'net_income_rate', 'ROE']
|
|
223
|
+
|
|
177
224
|
df[cols].head()
|
|
178
225
|
```
|
|
179
226
|
|
|
@@ -263,12 +310,114 @@ df[cols].head()
|
|
|
263
310
|
</table>
|
|
264
311
|
|
|
265
312
|
|
|
266
|
-
|
|
267
|
-
<b>② 종합지표 순위 추출 예시</b>
|
|
313
|
+
(2) 미국주식
|
|
268
314
|
|
|
269
315
|
```python
|
|
316
|
+
mf_us = MultiFactorUS(N=10)
|
|
317
|
+
df = mf_us.get_score()
|
|
318
|
+
|
|
319
|
+
cols = ['scode', 'sname', 'mom_price', 'mom_vol', 'PER', 'PBR',
|
|
320
|
+
'revenue_rate', 'oper_income_rate', 'net_income_rate', 'ROE']
|
|
321
|
+
|
|
322
|
+
df[cols].head()
|
|
323
|
+
```
|
|
324
|
+
<table border="1" class="dataframe">
|
|
325
|
+
<thead>
|
|
326
|
+
<tr style="text-align: right;">
|
|
327
|
+
<th></th>
|
|
328
|
+
<th>scode</th>
|
|
329
|
+
<th>sname</th>
|
|
330
|
+
<th>mom_price</th>
|
|
331
|
+
<th>mom_vol</th>
|
|
332
|
+
<th>PER</th>
|
|
333
|
+
<th>PBR</th>
|
|
334
|
+
<th>revenue_rate</th>
|
|
335
|
+
<th>oper_income_rate</th>
|
|
336
|
+
<th>net_income_rate</th>
|
|
337
|
+
<th>ROE</th>
|
|
338
|
+
</tr>
|
|
339
|
+
</thead>
|
|
340
|
+
<tbody>
|
|
341
|
+
<tr>
|
|
342
|
+
<th>0</th>
|
|
343
|
+
<td>MSFT</td>
|
|
344
|
+
<td>Microsoft</td>
|
|
345
|
+
<td>7</td>
|
|
346
|
+
<td>17</td>
|
|
347
|
+
<td>26</td>
|
|
348
|
+
<td>8</td>
|
|
349
|
+
<td>17</td>
|
|
350
|
+
<td>0</td>
|
|
351
|
+
<td>60</td>
|
|
352
|
+
<td>34</td>
|
|
353
|
+
</tr>
|
|
354
|
+
<tr>
|
|
355
|
+
<th>1</th>
|
|
356
|
+
<td>NVDA</td>
|
|
357
|
+
<td>Nvidia</td>
|
|
358
|
+
<td>28</td>
|
|
359
|
+
<td>-6</td>
|
|
360
|
+
<td>41</td>
|
|
361
|
+
<td>31</td>
|
|
362
|
+
<td>73</td>
|
|
363
|
+
<td>1</td>
|
|
364
|
+
<td>96</td>
|
|
365
|
+
<td>101</td>
|
|
366
|
+
</tr>
|
|
367
|
+
<tr>
|
|
368
|
+
<th>2</th>
|
|
369
|
+
<td>AVGO</td>
|
|
370
|
+
<td>Broadcom</td>
|
|
371
|
+
<td>42</td>
|
|
372
|
+
<td>-4</td>
|
|
373
|
+
<td>79</td>
|
|
374
|
+
<td>24</td>
|
|
375
|
+
<td>30</td>
|
|
376
|
+
<td>0</td>
|
|
377
|
+
<td>32</td>
|
|
378
|
+
<td>33</td>
|
|
379
|
+
</tr>
|
|
380
|
+
<tr>
|
|
381
|
+
<th>3</th>
|
|
382
|
+
<td>GOOGL</td>
|
|
383
|
+
<td>Alphabet Inc. (Class A)</td>
|
|
384
|
+
<td>31</td>
|
|
385
|
+
<td>-20</td>
|
|
386
|
+
<td>32</td>
|
|
387
|
+
<td>10</td>
|
|
388
|
+
<td>18</td>
|
|
389
|
+
<td>0</td>
|
|
390
|
+
<td>31</td>
|
|
391
|
+
<td>36</td>
|
|
392
|
+
</tr>
|
|
393
|
+
<tr>
|
|
394
|
+
<th>4</th>
|
|
395
|
+
<td>GOOG</td>
|
|
396
|
+
<td>Alphabet Inc. (Class C)</td>
|
|
397
|
+
<td>30</td>
|
|
398
|
+
<td>-22</td>
|
|
399
|
+
<td>31</td>
|
|
400
|
+
<td>10</td>
|
|
401
|
+
<td>18</td>
|
|
402
|
+
<td>0</td>
|
|
403
|
+
<td>31</td>
|
|
404
|
+
<td>36</td>
|
|
405
|
+
</tr>
|
|
406
|
+
</tbody>
|
|
407
|
+
</table>
|
|
408
|
+
|
|
409
|
+
<br>
|
|
410
|
+
|
|
411
|
+
<b>② 종합지표 순위 예시</b>
|
|
412
|
+
|
|
413
|
+
(1) 국내주식
|
|
414
|
+
```python
|
|
415
|
+
mf_kr = MultiFactorKR(N=10)
|
|
416
|
+
df = mf_kr.get_score()
|
|
417
|
+
|
|
270
418
|
cols = ['scode', 'sname', '모멘텀_주가', '모멘텀_거래량', '밸류_PER', '밸류_PBR',
|
|
271
419
|
'퀄리티_ROE', '퀄리티_매출증가', '퀄리티_영업이익증가', '퀄리티_순이익증가']
|
|
420
|
+
|
|
272
421
|
df[cols].head()
|
|
273
422
|
```
|
|
274
423
|
<table border="1" class="dataframe">
|
|
@@ -357,10 +506,111 @@ df[cols].head()
|
|
|
357
506
|
</table>
|
|
358
507
|
|
|
359
508
|
|
|
509
|
+
(2) 미국주식
|
|
510
|
+
```python
|
|
511
|
+
mf_us = MultiFactorUS(N=10)
|
|
512
|
+
df = mf_us.get_score()
|
|
513
|
+
|
|
514
|
+
cols = ['scode', 'sname', '모멘텀_주가', '모멘텀_거래량', '밸류_PER', '밸류_PBR',
|
|
515
|
+
'퀄리티_ROE', '퀄리티_매출증가', '퀄리티_영업이익증가', '퀄리티_순이익증가']
|
|
516
|
+
|
|
517
|
+
df[cols].head()
|
|
518
|
+
```
|
|
519
|
+
<table border="1" class="dataframe">
|
|
520
|
+
<thead>
|
|
521
|
+
<tr style="text-align: right;">
|
|
522
|
+
<th></th>
|
|
523
|
+
<th>scode</th>
|
|
524
|
+
<th>sname</th>
|
|
525
|
+
<th>모멘텀_주가</th>
|
|
526
|
+
<th>모멘텀_거래량</th>
|
|
527
|
+
<th>밸류_PER</th>
|
|
528
|
+
<th>밸류_PBR</th>
|
|
529
|
+
<th>퀄리티_ROE</th>
|
|
530
|
+
<th>퀄리티_매출증가</th>
|
|
531
|
+
<th>퀄리티_영업이익증가</th>
|
|
532
|
+
<th>퀄리티_순이익증가</th>
|
|
533
|
+
</tr>
|
|
534
|
+
</thead>
|
|
535
|
+
<tbody>
|
|
536
|
+
<tr>
|
|
537
|
+
<th>0</th>
|
|
538
|
+
<td>MSFT</td>
|
|
539
|
+
<td>Microsoft</td>
|
|
540
|
+
<td>90</td>
|
|
541
|
+
<td>10</td>
|
|
542
|
+
<td>20</td>
|
|
543
|
+
<td>40</td>
|
|
544
|
+
<td>50</td>
|
|
545
|
+
<td>60</td>
|
|
546
|
+
<td>20</td>
|
|
547
|
+
<td>20</td>
|
|
548
|
+
</tr>
|
|
549
|
+
<tr>
|
|
550
|
+
<th>1</th>
|
|
551
|
+
<td>NVDA</td>
|
|
552
|
+
<td>Nvidia</td>
|
|
553
|
+
<td>40</td>
|
|
554
|
+
<td>70</td>
|
|
555
|
+
<td>80</td>
|
|
556
|
+
<td>90</td>
|
|
557
|
+
<td>20</td>
|
|
558
|
+
<td>10</td>
|
|
559
|
+
<td>10</td>
|
|
560
|
+
<td>10</td>
|
|
561
|
+
</tr>
|
|
562
|
+
<tr>
|
|
563
|
+
<th>2</th>
|
|
564
|
+
<td>AVGO</td>
|
|
565
|
+
<td>Broadcom</td>
|
|
566
|
+
<td>10</td>
|
|
567
|
+
<td>60</td>
|
|
568
|
+
<td>90</td>
|
|
569
|
+
<td>80</td>
|
|
570
|
+
<td>60</td>
|
|
571
|
+
<td>20</td>
|
|
572
|
+
<td>30</td>
|
|
573
|
+
<td>30</td>
|
|
574
|
+
</tr>
|
|
575
|
+
<tr>
|
|
576
|
+
<th>3</th>
|
|
577
|
+
<td>GOOGL</td>
|
|
578
|
+
<td>Alphabet Inc. (Class A)</td>
|
|
579
|
+
<td>20</td>
|
|
580
|
+
<td>80</td>
|
|
581
|
+
<td>50</td>
|
|
582
|
+
<td>60</td>
|
|
583
|
+
<td>35</td>
|
|
584
|
+
<td>45</td>
|
|
585
|
+
<td>75</td>
|
|
586
|
+
<td>45</td>
|
|
587
|
+
</tr>
|
|
588
|
+
<tr>
|
|
589
|
+
<th>4</th>
|
|
590
|
+
<td>GOOG</td>
|
|
591
|
+
<td>Alphabet Inc. (Class C)</td>
|
|
592
|
+
<td>30</td>
|
|
593
|
+
<td>90</td>
|
|
594
|
+
<td>40</td>
|
|
595
|
+
<td>50</td>
|
|
596
|
+
<td>35</td>
|
|
597
|
+
<td>45</td>
|
|
598
|
+
<td>75</td>
|
|
599
|
+
<td>45</td>
|
|
600
|
+
</tr>
|
|
601
|
+
</tbody>
|
|
602
|
+
</table>
|
|
603
|
+
|
|
604
|
+
<br>
|
|
360
605
|
|
|
361
606
|
<b>③ 종합점수/순위 추출 예시</b>
|
|
362
607
|
|
|
608
|
+
(1) 국내주식
|
|
609
|
+
|
|
363
610
|
```python
|
|
611
|
+
mf_kr = MultiFactorKR(N=10)
|
|
612
|
+
df = mf_kr.get_score()
|
|
613
|
+
|
|
364
614
|
cols = ['scode', 'sname', '종합점수', '종합순위', '종합순위_퍼센트']
|
|
365
615
|
df[cols].head()
|
|
366
616
|
```
|
|
@@ -420,25 +670,89 @@ df[cols].head()
|
|
|
420
670
|
</table>
|
|
421
671
|
|
|
422
672
|
|
|
423
|
-
|
|
673
|
+
(2) 미국주식
|
|
674
|
+
```python
|
|
675
|
+
mf_us = MultiFactorUS(N=10)
|
|
676
|
+
df = mf_us.get_score()
|
|
424
677
|
|
|
425
|
-
|
|
678
|
+
cols = ['scode', 'sname', '종합점수', '종합순위', '종합순위_퍼센트']
|
|
679
|
+
df[cols].head()
|
|
680
|
+
```
|
|
681
|
+
<table border="1" class="dataframe">
|
|
682
|
+
<thead>
|
|
683
|
+
<tr style="text-align: right;">
|
|
684
|
+
<th></th>
|
|
685
|
+
<th>scode</th>
|
|
686
|
+
<th>sname</th>
|
|
687
|
+
<th>종합점수</th>
|
|
688
|
+
<th>종합순위</th>
|
|
689
|
+
<th>종합순위_퍼센트</th>
|
|
690
|
+
</tr>
|
|
691
|
+
</thead>
|
|
692
|
+
<tbody>
|
|
693
|
+
<tr>
|
|
694
|
+
<th>0</th>
|
|
695
|
+
<td>MSFT</td>
|
|
696
|
+
<td>Microsoft</td>
|
|
697
|
+
<td>39</td>
|
|
698
|
+
<td>1</td>
|
|
699
|
+
<td>10</td>
|
|
700
|
+
</tr>
|
|
701
|
+
<tr>
|
|
702
|
+
<th>1</th>
|
|
703
|
+
<td>NVDA</td>
|
|
704
|
+
<td>Nvidia</td>
|
|
705
|
+
<td>41</td>
|
|
706
|
+
<td>2</td>
|
|
707
|
+
<td>20</td>
|
|
708
|
+
</tr>
|
|
709
|
+
<tr>
|
|
710
|
+
<th>2</th>
|
|
711
|
+
<td>AVGO</td>
|
|
712
|
+
<td>Broadcom</td>
|
|
713
|
+
<td>48</td>
|
|
714
|
+
<td>3</td>
|
|
715
|
+
<td>30</td>
|
|
716
|
+
</tr>
|
|
717
|
+
<tr>
|
|
718
|
+
<th>3</th>
|
|
719
|
+
<td>GOOGL</td>
|
|
720
|
+
<td>Alphabet Inc. (Class A)</td>
|
|
721
|
+
<td>51</td>
|
|
722
|
+
<td>4</td>
|
|
723
|
+
<td>45</td>
|
|
724
|
+
</tr>
|
|
725
|
+
<tr>
|
|
726
|
+
<th>4</th>
|
|
727
|
+
<td>GOOG</td>
|
|
728
|
+
<td>Alphabet Inc. (Class C)</td>
|
|
729
|
+
<td>51</td>
|
|
730
|
+
<td>4</td>
|
|
731
|
+
<td>45</td>
|
|
732
|
+
</tr>
|
|
733
|
+
</tbody>
|
|
734
|
+
</table>
|
|
426
735
|
|
|
427
|
-
|
|
736
|
+
<br>
|
|
428
737
|
|
|
429
|
-
|
|
430
|
-
# 시가총액 상위 100 종목 멀티팩터 종합점수 추출
|
|
431
|
-
mf = MultiFactorKR(N=100)
|
|
432
|
-
df = mf.get_score()
|
|
433
|
-
```
|
|
738
|
+
### 5. 투자 스타일별 종합점수 출력
|
|
434
739
|
|
|
740
|
+
3가지로 분류된 투자 유형별로 가중치를 조절한 멀티팩터 점수를 산출합니다. 국내와 미국 시장 모두 동일하게 적용 가능합니다.
|
|
435
741
|
|
|
436
|
-
|
|
742
|
+
<b>① 가치 성장 전략 : 밸류 + 퀄리티 조합</b>
|
|
437
743
|
|
|
744
|
+
(1) 국내주식
|
|
438
745
|
```python
|
|
746
|
+
# 시가총액 상위 100종목
|
|
747
|
+
mf_kr = MultiFactorKR(N=100)
|
|
748
|
+
df = mf_kr.get_score()
|
|
749
|
+
|
|
750
|
+
# 가치성장 전략 적용
|
|
439
751
|
df = mf.get_score_adj_weight(df, weight='가치성장')
|
|
752
|
+
|
|
440
753
|
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
441
754
|
```
|
|
755
|
+
|
|
442
756
|
<table border="1" class="dataframe">
|
|
443
757
|
<thead>
|
|
444
758
|
<tr style="text-align: right;">
|
|
@@ -489,12 +803,83 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
489
803
|
</table>
|
|
490
804
|
|
|
491
805
|
|
|
492
|
-
|
|
806
|
+
(2) 미국주식
|
|
807
|
+
```python
|
|
808
|
+
# 시가총액 상위 100종목
|
|
809
|
+
mf_us = MultiFactorUS(N=100)
|
|
810
|
+
df = mf_us.get_score()
|
|
811
|
+
|
|
812
|
+
# 가치성장 전략 적용
|
|
813
|
+
df = mf.get_score_adj_weight(df, weight='가치성장')
|
|
814
|
+
|
|
815
|
+
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
816
|
+
```
|
|
817
|
+
<table border="1" class="dataframe">
|
|
818
|
+
<thead>
|
|
819
|
+
<tr style="text-align: right;">
|
|
820
|
+
<th></th>
|
|
821
|
+
<th>scode</th>
|
|
822
|
+
<th>sname</th>
|
|
823
|
+
<th>종합점수</th>
|
|
824
|
+
<th>종합순위</th>
|
|
825
|
+
</tr>
|
|
826
|
+
</thead>
|
|
827
|
+
<tbody>
|
|
828
|
+
<tr>
|
|
829
|
+
<th>0</th>
|
|
830
|
+
<td>MU</td>
|
|
831
|
+
<td>Micron Technology</td>
|
|
832
|
+
<td>19</td>
|
|
833
|
+
<td>1</td>
|
|
834
|
+
</tr>
|
|
835
|
+
<tr>
|
|
836
|
+
<th>1</th>
|
|
837
|
+
<td>MS</td>
|
|
838
|
+
<td>Morgan Stanley</td>
|
|
839
|
+
<td>30</td>
|
|
840
|
+
<td>2</td>
|
|
841
|
+
</tr>
|
|
842
|
+
<tr>
|
|
843
|
+
<th>2</th>
|
|
844
|
+
<td>BLK</td>
|
|
845
|
+
<td>BlackRock</td>
|
|
846
|
+
<td>30</td>
|
|
847
|
+
<td>3</td>
|
|
848
|
+
</tr>
|
|
849
|
+
<tr>
|
|
850
|
+
<th>3</th>
|
|
851
|
+
<td>NVDA</td>
|
|
852
|
+
<td>Nvidia</td>
|
|
853
|
+
<td>32</td>
|
|
854
|
+
<td>4</td>
|
|
855
|
+
</tr>
|
|
856
|
+
<tr>
|
|
857
|
+
<th>4</th>
|
|
858
|
+
<td>SCHW</td>
|
|
859
|
+
<td>Charles Schwab Corporation</td>
|
|
860
|
+
<td>33</td>
|
|
861
|
+
<td>5</td>
|
|
862
|
+
</tr>
|
|
863
|
+
</tbody>
|
|
864
|
+
</table>
|
|
865
|
+
|
|
866
|
+
<br>
|
|
867
|
+
|
|
868
|
+
<b>② 추세 성장 전략 : 모멘텀 + 퀄리티 조합</b>
|
|
493
869
|
|
|
870
|
+
|
|
871
|
+
(1) 국내주식
|
|
494
872
|
```python
|
|
873
|
+
# 시가총액 상위 100종목
|
|
874
|
+
mf_kr = MultiFactorKR(N=100)
|
|
875
|
+
df = mf_kr.get_score()
|
|
876
|
+
|
|
877
|
+
# 추세성장 전략 적용
|
|
495
878
|
df = mf.get_score_adj_weight(df, weight='추세성장')
|
|
496
|
-
|
|
879
|
+
|
|
880
|
+
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
497
881
|
```
|
|
882
|
+
|
|
498
883
|
<table border="1" class="dataframe">
|
|
499
884
|
<thead>
|
|
500
885
|
<tr style="text-align: right;">
|
|
@@ -545,11 +930,17 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
545
930
|
</table>
|
|
546
931
|
|
|
547
932
|
|
|
548
|
-
③ 역발상 전략 : 밸류 + 모멘텀 조합
|
|
549
933
|
|
|
934
|
+
(2) 미국주식
|
|
550
935
|
```python
|
|
551
|
-
|
|
552
|
-
|
|
936
|
+
# 시가총액 상위 100종목
|
|
937
|
+
mf_us = MultiFactorUS(N=100)
|
|
938
|
+
df = mf_us.get_score()
|
|
939
|
+
|
|
940
|
+
# 추세성장 전략 적용
|
|
941
|
+
df = mf.get_score_adj_weight(df, weight='추세성장')
|
|
942
|
+
|
|
943
|
+
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
553
944
|
```
|
|
554
945
|
<table border="1" class="dataframe">
|
|
555
946
|
<thead>
|
|
@@ -564,190 +955,216 @@ df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
|
564
955
|
<tbody>
|
|
565
956
|
<tr>
|
|
566
957
|
<th>0</th>
|
|
567
|
-
<td>
|
|
568
|
-
<td
|
|
569
|
-
<td>
|
|
958
|
+
<td>APP</td>
|
|
959
|
+
<td>AppLovin</td>
|
|
960
|
+
<td>14</td>
|
|
570
961
|
<td>1</td>
|
|
571
962
|
</tr>
|
|
572
963
|
<tr>
|
|
573
964
|
<th>1</th>
|
|
574
|
-
<td>
|
|
575
|
-
<td
|
|
576
|
-
<td>
|
|
965
|
+
<td>NVDA</td>
|
|
966
|
+
<td>Nvidia</td>
|
|
967
|
+
<td>16</td>
|
|
577
968
|
<td>2</td>
|
|
578
969
|
</tr>
|
|
579
970
|
<tr>
|
|
580
971
|
<th>2</th>
|
|
581
|
-
<td>
|
|
582
|
-
<td
|
|
583
|
-
<td>
|
|
972
|
+
<td>MU</td>
|
|
973
|
+
<td>Micron Technology</td>
|
|
974
|
+
<td>21</td>
|
|
584
975
|
<td>3</td>
|
|
585
976
|
</tr>
|
|
586
977
|
<tr>
|
|
587
978
|
<th>3</th>
|
|
588
|
-
<td>
|
|
589
|
-
<td
|
|
590
|
-
<td>
|
|
979
|
+
<td>PLTR</td>
|
|
980
|
+
<td>Palantir Technologies</td>
|
|
981
|
+
<td>23</td>
|
|
591
982
|
<td>4</td>
|
|
592
983
|
</tr>
|
|
593
984
|
<tr>
|
|
594
985
|
<th>4</th>
|
|
595
|
-
<td>
|
|
596
|
-
<td
|
|
597
|
-
<td>
|
|
598
|
-
<td>
|
|
986
|
+
<td>ORCL</td>
|
|
987
|
+
<td>Oracle Corporation</td>
|
|
988
|
+
<td>26</td>
|
|
989
|
+
<td>5</td>
|
|
599
990
|
</tr>
|
|
600
991
|
</tbody>
|
|
601
992
|
</table>
|
|
602
993
|
|
|
603
994
|
<br>
|
|
604
995
|
|
|
605
|
-
|
|
606
|
-
get_Ngroup() 함수를 사용하면 전체 종목을 원하는 개수의 그룹으로 깔끔하게 묶어 요약할 수 있습니다.
|
|
996
|
+
<b>③ 역발상 전략 : 밸류 + 모멘텀 조합</b>
|
|
607
997
|
|
|
608
|
-
```python
|
|
609
|
-
mf = MultiFactorKR(N=100)
|
|
610
|
-
df = mf.get_score()
|
|
611
|
-
mf.get_Ngroup(df, Ngroup=10) # 종합점수 상위 순 10개 그룹으로 분류
|
|
612
|
-
|
|
613
|
-
# [출력 결과]
|
|
614
|
-
# 1 : SK스퀘어, SK하이닉스, 삼성E&A, HD현대, 에이피알, 한국금융지주, 삼성전자, LG이노텍, 키움증권, LS ELECTRIC
|
|
615
|
-
# 2 : 효성중공업, NH투자증권, 이수페타시스, 삼성물산, 삼성증권, HD현대일렉트릭, LG씨엔에스, LS, HD한국조선해양, 현대건설
|
|
616
|
-
# 3 : 코오롱티슈진, 한화, 고려아연, 하나금융지주, JB금융지주, 미래에셋증권, KB금융, 삼천당제약, 기업은행, 엘앤에프
|
|
617
|
-
# 4 : DB손해보험, 기아, 한전기술, 셀트리온, 우리금융지주, 펩트론, BNK금융지주, 대우건설, 한국항공우주, 현대글로비스
|
|
618
|
-
# 5 : 삼성생명, 신한지주, HD현대중공업, 한화에어로스페이스, 현대모비스, 한화솔루션, 현대차, 삼양식품, 삼성카드, 에이비엘바이오
|
|
619
|
-
# 6 : SK바이오팜, LG유플러스, 한미약품, S-Oil, GS, KT, 한화오션, 삼성화재, 두산, 삼성전기
|
|
620
|
-
# 7 : SK텔레콤, 카카오뱅크, 한국전력, 한국타이어앤테크놀로지, HMM, 삼성중공업, 포스코인터내셔널, SK, 현대로템, 카카오페이
|
|
621
|
-
# 8 : 대한항공, 현대오토에버, CJ, LIG넥스원, 삼성SDI, HD건설기계, HD현대마린솔루션, 두산에너빌리티, 크래프톤, 하이브
|
|
622
|
-
# 9 : HLB, 삼성에스디에스, KT&G, 아모레퍼시픽, 유한양행, 한화시스템, SK이노베이션, LG전자, 삼성에피스홀딩스, NAVER
|
|
623
|
-
# 10 : LG, 레인보우로보틱스, 한미반도체, POSCO홀딩스, LG에너지솔루션, 카카오, LG화학, 삼성바이오로직스, 한진칼, 포스코퓨처엠
|
|
624
|
-
```
|
|
625
|
-
|
|
626
|
-
<br>
|
|
627
|
-
|
|
628
|
-
### 7. 개별 지표 데이터 수집
|
|
629
|
-
특정 팩터의 데이터만 개별적으로 추출할 수 있습니다.
|
|
630
998
|
|
|
999
|
+
(1) 국내주식
|
|
631
1000
|
```python
|
|
632
|
-
#
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
data_fin = mf.get_quality(stock_list)
|
|
1001
|
+
# 시가총액 상위 100종목
|
|
1002
|
+
mf_kr = MultiFactorKR(N=100)
|
|
1003
|
+
df = mf_kr.get_score()
|
|
636
1004
|
|
|
637
|
-
#
|
|
638
|
-
|
|
639
|
-
```
|
|
640
|
-
|
|
641
|
-
<br>
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
### 8. 특정 종목 팩터 값 조회
|
|
645
|
-
개별 종목(예: 삼성전자 '005930')의 팩터 점수만 빠르게 확인하고 싶을 때 활용합니다.
|
|
1005
|
+
# 역발상 전략 적용
|
|
1006
|
+
df = mf.get_score_adj_weight(df, weight='역발상')
|
|
646
1007
|
|
|
647
|
-
|
|
648
|
-
# 삼성전자의 모멘텀 데이터
|
|
649
|
-
mf.get_momentum_one('005930')
|
|
1008
|
+
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
650
1009
|
```
|
|
651
1010
|
<table border="1" class="dataframe">
|
|
652
1011
|
<thead>
|
|
653
1012
|
<tr style="text-align: right;">
|
|
654
1013
|
<th></th>
|
|
655
1014
|
<th>scode</th>
|
|
656
|
-
<th>
|
|
657
|
-
<th
|
|
1015
|
+
<th>sname</th>
|
|
1016
|
+
<th>종합점수</th>
|
|
1017
|
+
<th>종합순위</th>
|
|
658
1018
|
</tr>
|
|
659
1019
|
</thead>
|
|
660
1020
|
<tbody>
|
|
661
1021
|
<tr>
|
|
662
1022
|
<th>0</th>
|
|
663
|
-
<td>
|
|
664
|
-
<td
|
|
665
|
-
<td
|
|
1023
|
+
<td>000880</td>
|
|
1024
|
+
<td>한화</td>
|
|
1025
|
+
<td>16</td>
|
|
1026
|
+
<td>1</td>
|
|
666
1027
|
</tr>
|
|
667
|
-
|
|
668
|
-
</
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
```
|
|
674
|
-
<table border="1" class="dataframe">
|
|
675
|
-
<thead>
|
|
676
|
-
<tr style="text-align: right;">
|
|
677
|
-
<th></th>
|
|
678
|
-
<th>scode</th>
|
|
679
|
-
<th>PER</th>
|
|
680
|
-
<th>PBR</th>
|
|
1028
|
+
<tr>
|
|
1029
|
+
<th>1</th>
|
|
1030
|
+
<td>039490</td>
|
|
1031
|
+
<td>키움증권</td>
|
|
1032
|
+
<td>19</td>
|
|
1033
|
+
<td>2</td>
|
|
681
1034
|
</tr>
|
|
682
|
-
</thead>
|
|
683
|
-
<tbody>
|
|
684
1035
|
<tr>
|
|
685
|
-
<th>
|
|
686
|
-
<td>
|
|
687
|
-
<td
|
|
688
|
-
<td>
|
|
1036
|
+
<th>2</th>
|
|
1037
|
+
<td>006800</td>
|
|
1038
|
+
<td>미래에셋증권</td>
|
|
1039
|
+
<td>19</td>
|
|
1040
|
+
<td>3</td>
|
|
1041
|
+
</tr>
|
|
1042
|
+
<tr>
|
|
1043
|
+
<th>3</th>
|
|
1044
|
+
<td>047040</td>
|
|
1045
|
+
<td>대우건설</td>
|
|
1046
|
+
<td>20</td>
|
|
1047
|
+
<td>4</td>
|
|
1048
|
+
</tr>
|
|
1049
|
+
<tr>
|
|
1050
|
+
<th>4</th>
|
|
1051
|
+
<td>071050</td>
|
|
1052
|
+
<td>한국금융지주</td>
|
|
1053
|
+
<td>22</td>
|
|
1054
|
+
<td>6</td>
|
|
689
1055
|
</tr>
|
|
690
1056
|
</tbody>
|
|
691
1057
|
</table>
|
|
692
1058
|
|
|
1059
|
+
(2) 미국주식
|
|
693
1060
|
```python
|
|
694
|
-
#
|
|
695
|
-
|
|
1061
|
+
# 시가총액 상위 100종목
|
|
1062
|
+
mf_us = MultiFactorUS(N=100)
|
|
1063
|
+
df = mf_us.get_score()
|
|
1064
|
+
|
|
1065
|
+
# 역발상 전략 적용
|
|
1066
|
+
df = mf.get_score_adj_weight(df, weight='역발상')
|
|
1067
|
+
|
|
1068
|
+
df[['scode', 'sname', '종합점수', '종합순위']].head()
|
|
696
1069
|
```
|
|
697
1070
|
<table border="1" class="dataframe">
|
|
698
1071
|
<thead>
|
|
699
1072
|
<tr style="text-align: right;">
|
|
700
1073
|
<th></th>
|
|
701
1074
|
<th>scode</th>
|
|
702
|
-
<th>
|
|
703
|
-
<th
|
|
704
|
-
<th
|
|
705
|
-
<th>ROE</th>
|
|
1075
|
+
<th>sname</th>
|
|
1076
|
+
<th>종합점수</th>
|
|
1077
|
+
<th>종합순위</th>
|
|
706
1078
|
</tr>
|
|
707
1079
|
</thead>
|
|
708
1080
|
<tbody>
|
|
709
1081
|
<tr>
|
|
710
1082
|
<th>0</th>
|
|
711
|
-
<td>
|
|
712
|
-
<td>
|
|
713
|
-
<td>
|
|
714
|
-
<td>
|
|
715
|
-
|
|
1083
|
+
<td>GS</td>
|
|
1084
|
+
<td>Goldman Sachs</td>
|
|
1085
|
+
<td>17</td>
|
|
1086
|
+
<td>1</td>
|
|
1087
|
+
</tr>
|
|
1088
|
+
<tr>
|
|
1089
|
+
<th>1</th>
|
|
1090
|
+
<td>BAC</td>
|
|
1091
|
+
<td>Bank of America</td>
|
|
1092
|
+
<td>19</td>
|
|
1093
|
+
<td>2</td>
|
|
1094
|
+
</tr>
|
|
1095
|
+
<tr>
|
|
1096
|
+
<th>2</th>
|
|
1097
|
+
<td>MS</td>
|
|
1098
|
+
<td>Morgan Stanley</td>
|
|
1099
|
+
<td>20</td>
|
|
1100
|
+
<td>3</td>
|
|
1101
|
+
</tr>
|
|
1102
|
+
<tr>
|
|
1103
|
+
<th>3</th>
|
|
1104
|
+
<td>C</td>
|
|
1105
|
+
<td>Citigroup</td>
|
|
1106
|
+
<td>20</td>
|
|
1107
|
+
<td>4</td>
|
|
1108
|
+
</tr>
|
|
1109
|
+
<tr>
|
|
1110
|
+
<th>4</th>
|
|
1111
|
+
<td>WFC</td>
|
|
1112
|
+
<td>Wells Fargo</td>
|
|
1113
|
+
<td>22</td>
|
|
1114
|
+
<td>5</td>
|
|
716
1115
|
</tr>
|
|
717
1116
|
</tbody>
|
|
718
1117
|
</table>
|
|
719
1118
|
|
|
720
1119
|
<br>
|
|
721
1120
|
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
**MultiFactorUS** 클래스를 사용하면 미국 주식(S&P 500, NASDAQ, NYSE 등)에 대해서도 국내 주식과 동일한 인터페이스로 멀티팩터 분석을 수행할 수 있습니다. 미국 주식 분석은 `yfinance` 라이브러리를 기반으로 구동됩니다.
|
|
1121
|
+
### 6. 종합점수별 그룹화 출력
|
|
1122
|
+
`get_Ngroup()` 함수를 사용하면 전체 종목을 원하는 개수의 그룹으로 깔끔하게 묶어 요약할 수 있습니다.
|
|
725
1123
|
|
|
726
|
-
|
|
1124
|
+
(1) 국내주식
|
|
727
1125
|
```python
|
|
728
|
-
|
|
1126
|
+
# 시가총액 상위 100종목
|
|
1127
|
+
mf_kr = MultiFactorKR(N=100)
|
|
1128
|
+
df = mf_kr.get_score()
|
|
729
1129
|
|
|
730
|
-
#
|
|
731
|
-
|
|
1130
|
+
# 종합점수 상위 순 10개 그룹으로 분류
|
|
1131
|
+
mf.get_Ngroup(df, Ngroup=10)
|
|
732
1132
|
|
|
733
|
-
#
|
|
734
|
-
|
|
1133
|
+
# [출력 결과]
|
|
1134
|
+
# 1 : SK스퀘어, SK하이닉스, 삼성E&A, HD현대, 에이피알, 한국금융지주, 삼성전자, LG이노텍, 키움증권, LS ELECTRIC
|
|
1135
|
+
# 2 : 효성중공업, NH투자증권, 이수페타시스, 삼성물산, 삼성증권, HD현대일렉트릭, LG씨엔에스, LS, HD한국조선해양, 현대건설
|
|
1136
|
+
# 3 : 코오롱티슈진, 한화, 고려아연, 하나금융지주, JB금융지주, 미래에셋증권, KB금융, 삼천당제약, 기업은행, 엘앤에프
|
|
1137
|
+
# 4 : DB손해보험, 기아, 한전기술, 셀트리온, 우리금융지주, 펩트론, BNK금융지주, 대우건설, 한국항공우주, 현대글로비스
|
|
1138
|
+
# 5 : 삼성생명, 신한지주, HD현대중공업, 한화에어로스페이스, 현대모비스, 한화솔루션, 현대차, 삼양식품, 삼성카드, 에이비엘바이오
|
|
1139
|
+
# 6 : SK바이오팜, LG유플러스, 한미약품, S-Oil, GS, KT, 한화오션, 삼성화재, 두산, 삼성전기
|
|
1140
|
+
# 7 : SK텔레콤, 카카오뱅크, 한국전력, 한국타이어앤테크놀로지, HMM, 삼성중공업, 포스코인터내셔널, SK, 현대로템, 카카오페이
|
|
1141
|
+
# 8 : 대한항공, 현대오토에버, CJ, LIG넥스원, 삼성SDI, HD건설기계, HD현대마린솔루션, 두산에너빌리티, 크래프톤, 하이브
|
|
1142
|
+
# 9 : HLB, 삼성에스디에스, KT&G, 아모레퍼시픽, 유한양행, 한화시스템, SK이노베이션, LG전자, 삼성에피스홀딩스, NAVER
|
|
1143
|
+
# 10 : LG, 레인보우로보틱스, 한미반도체, POSCO홀딩스, LG에너지솔루션, 카카오, LG화학, 삼성바이오로직스, 한진칼, 포스코퓨처엠
|
|
735
1144
|
```
|
|
736
1145
|
|
|
737
|
-
### 2. 주요 특징
|
|
738
|
-
* **실시간 데이터**: `yfinance`를 활용하여 미국 시장의 최신 주가 및 재무 지표를 수집합니다.
|
|
739
|
-
* **티커 호환성**: `BRK-B`와 같이 슬래시나 마침표가 포함된 특수 티커들을 내부적으로 자동 변환하여 데이터 수집 오류를 최소화합니다.
|
|
740
|
-
* **동일한 환경**: 국내 주식과 동일한 함수명(`get_score`, `get_Ngroup` 등)을 사용하므로 기존 코드를 쉽게 재사용할 수 있습니다.
|
|
741
1146
|
|
|
742
|
-
|
|
1147
|
+
(2) 미국주식
|
|
743
1148
|
```python
|
|
744
|
-
#
|
|
745
|
-
|
|
1149
|
+
# 시가총액 상위 100종목
|
|
1150
|
+
mf_us = MultiFactorUS(N=100)
|
|
1151
|
+
df = mf_us.get_score()
|
|
746
1152
|
|
|
747
|
-
#
|
|
748
|
-
|
|
749
|
-
```
|
|
1153
|
+
# 종합점수 상위 순 10개 그룹으로 분류
|
|
1154
|
+
mf.get_Ngroup(df, Ngroup=10)
|
|
750
1155
|
|
|
1156
|
+
# [출력 결과]
|
|
1157
|
+
#1 : Micron Technology, Morgan Stanley, Goldman Sachs, BlackRock, Citigroup, Nvidia, AppLovin, Microsoft, Dell Technologies, Charles Schwab Corporation
|
|
1158
|
+
#2 : Sandisk, Oracle Corporation, Bank of America, JPMorgan Chase, Netflix, Western Digital, Palantir Technologies, Lilly (Eli), Arista Networks, Broadcom
|
|
1159
|
+
#3 : Newmont, Prologis, Amphenol, Lam Research, Apple Inc., Merck & Co., IBM, Wells Fargo, AbbVie, Chubb Limited
|
|
1160
|
+
#4 : KLA Corporation, Analog Devices, McDonald's, Booking Holdings, Philip Morris International, Bristol Myers Squibb, Alphabet Inc. (Class A), Alphabet Inc. (Class C), Amgen, Meta Platforms
|
|
1161
|
+
#5 : Gilead Sciences, Union Pacific Corporation, PepsiCo, Mastercard, Advanced Micro Devices, Uber, GE Aerospace, NextEra Energy, Progressive Corporation, Johnson & Johnson
|
|
1162
|
+
#6 : Seagate Technology, Vertiv, Visa Inc., nan, American Express, S&P Global, Applied Materials, Stryker Corporation, Lowe's, Texas Instruments
|
|
1163
|
+
#7 : TJX Companies, Amazon, Cisco, Caterpillar Inc., Verizon, Corning Inc., Eaton Corporation, Thermo Fisher Scientific, Boeing, AT&T
|
|
1164
|
+
#8 : Salesforce, Costco, Capital One, Intuitive Surgical, Pfizer, Intel, GE Vernova, Lockheed Martin, Abbott Laboratories, T-Mobile US
|
|
1165
|
+
#9 : Walt Disney Company (The), Coca-Cola Company (The), RTX Corporation, Parker Hannifin, Danaher Corporation, Deere & Company, Procter & Gamble, ConocoPhillips, Accenture, Linde plc
|
|
1166
|
+
#10 : Palo Alto Networks, Qualcomm, Welltower, ExxonMobil, Home Depot (The), Walmart, Honeywell, Chevron Corporation, UnitedHealth Group, Tesla, Inc.
|
|
1167
|
+
```
|
|
751
1168
|
<br>
|
|
752
1169
|
|
|
753
1170
|
## ⚠️ 투자자 유의사항 (Disclaimer)
|