analyser_hj3415 2.4.0__py2.py3-none-any.whl → 2.5.1__py2.py3-none-any.whl
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.
- analyser_hj3415/.DS_Store +0 -0
- analyser_hj3415/analysers/eval.py +295 -289
- analyser_hj3415/analysers/report.py +182 -182
- analyser_hj3415/analysers/score.py +364 -364
- analyser_hj3415/cli.py +11 -3
- analyser_hj3415/myredis.py +16 -19
- analyser_hj3415/tools.py +1 -0
- {analyser_hj3415-2.4.0.dist-info → analyser_hj3415-2.5.1.dist-info}/METADATA +2 -2
- analyser_hj3415-2.5.1.dist-info/RECORD +14 -0
- analyser_hj3415-2.4.0.dist-info/RECORD +0 -14
- {analyser_hj3415-2.4.0.dist-info → analyser_hj3415-2.5.1.dist-info}/LICENSE +0 -0
- {analyser_hj3415-2.4.0.dist-info → analyser_hj3415-2.5.1.dist-info}/WHEEL +0 -0
- {analyser_hj3415-2.4.0.dist-info → analyser_hj3415-2.5.1.dist-info}/entry_points.txt +0 -0
analyser_hj3415/.DS_Store
CHANGED
Binary file
|
@@ -1,289 +1,295 @@
|
|
1
|
-
"""red, mil, blue 3가지 분야에서 자료를 계산하여 리턴하는 함수 모음
|
2
|
-
"""
|
3
|
-
import math
|
4
|
-
|
5
|
-
from analyser_hj3415 import tools
|
6
|
-
from utils_hj3415 import utils
|
7
|
-
from db_hj3415 import myredis
|
8
|
-
|
9
|
-
import logging
|
10
|
-
|
11
|
-
logger = logging.getLogger(__name__)
|
12
|
-
formatter = logging.Formatter('%(levelname)s: [%(name)s] %(message)s')
|
13
|
-
ch = logging.StreamHandler()
|
14
|
-
ch.setFormatter(formatter)
|
15
|
-
logger.addHandler(ch)
|
16
|
-
logger.setLevel(logging.WARNING)
|
17
|
-
|
18
|
-
|
19
|
-
# 주식을 통한 기대수익률 - 금리가 3%일 경우 두배인 6% 정도로 잡는다.
|
20
|
-
EXPECT_EARN = 0.06
|
21
|
-
|
22
|
-
|
23
|
-
def red(code: str) -> dict:
|
24
|
-
"""
|
25
|
-
리턴값
|
26
|
-
{
|
27
|
-
'red_price': red_price,
|
28
|
-
'사업가치': 사업가치,
|
29
|
-
'재산가치': 재산가치,
|
30
|
-
'부채평가': 부채평가,
|
31
|
-
'발행주식수': 발행주식수,
|
32
|
-
'date': [각 유효한 값의 년월값 리스트(ex- 2020/09)],
|
33
|
-
}
|
34
|
-
"""
|
35
|
-
c103q = myredis.C103(code, 'c103재무상태표q')
|
36
|
-
|
37
|
-
d1, 지배주주당기순이익 = tools.calc당기순이익(code)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
사업가치
|
48
|
-
|
49
|
-
|
50
|
-
재산가치
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
'
|
67
|
-
'
|
68
|
-
'
|
69
|
-
'
|
70
|
-
'
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
if len(dict
|
207
|
-
logger.warning(f'empty dict -
|
208
|
-
|
209
|
-
if len(dict
|
210
|
-
logger.warning(f'empty dict -
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
'
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
'
|
260
|
-
'
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
'
|
266
|
-
'
|
267
|
-
'
|
268
|
-
'
|
269
|
-
'
|
270
|
-
'
|
271
|
-
'
|
272
|
-
'
|
273
|
-
'
|
274
|
-
'
|
275
|
-
'
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
'
|
281
|
-
'
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
'
|
287
|
-
'
|
288
|
-
'
|
289
|
-
|
1
|
+
"""red, mil, blue 3가지 분야에서 자료를 계산하여 리턴하는 함수 모음
|
2
|
+
"""
|
3
|
+
import math
|
4
|
+
|
5
|
+
from analyser_hj3415 import tools
|
6
|
+
from utils_hj3415 import utils
|
7
|
+
from db_hj3415 import myredis
|
8
|
+
|
9
|
+
import logging
|
10
|
+
|
11
|
+
logger = logging.getLogger(__name__)
|
12
|
+
formatter = logging.Formatter('%(levelname)s: [%(name)s] %(message)s')
|
13
|
+
ch = logging.StreamHandler()
|
14
|
+
ch.setFormatter(formatter)
|
15
|
+
logger.addHandler(ch)
|
16
|
+
logger.setLevel(logging.WARNING)
|
17
|
+
|
18
|
+
|
19
|
+
# 주식을 통한 기대수익률 - 금리가 3%일 경우 두배인 6% 정도로 잡는다.
|
20
|
+
EXPECT_EARN = 0.06
|
21
|
+
|
22
|
+
|
23
|
+
def red(code: str) -> dict:
|
24
|
+
"""
|
25
|
+
리턴값
|
26
|
+
{
|
27
|
+
'red_price': red_price,
|
28
|
+
'사업가치': 사업가치,
|
29
|
+
'재산가치': 재산가치,
|
30
|
+
'부채평가': 부채평가,
|
31
|
+
'발행주식수': 발행주식수,
|
32
|
+
'date': [각 유효한 값의 년월값 리스트(ex- 2020/09)],
|
33
|
+
}
|
34
|
+
"""
|
35
|
+
c103q = myredis.C103(code, 'c103재무상태표q')
|
36
|
+
|
37
|
+
d1, 지배주주당기순이익 = tools.calc당기순이익(code)
|
38
|
+
# print("지배주주당기순이익: ", 지배주주당기순이익)
|
39
|
+
d2, 유동자산 = tools.calc유동자산(code)
|
40
|
+
d3, 유동부채 = tools.calc유동부채(code)
|
41
|
+
d4, 부채평가 = tools.calc비유동부채(code)
|
42
|
+
|
43
|
+
c103q.page = 'c103재무상태표q'
|
44
|
+
d5, 투자자산 = c103q.latest_value_pop2('투자자산')
|
45
|
+
d6, 투자부동산 = c103q.latest_value_pop2('투자부동산')
|
46
|
+
|
47
|
+
# 사업가치 계산 - 지배주주지분 당기순이익 / 기대수익률
|
48
|
+
사업가치 = round(utils.nan_to_zero(지배주주당기순이익) / EXPECT_EARN, 2)
|
49
|
+
|
50
|
+
# 재산가치 계산 - 유동자산 - (유동부채*1.2) + 고정자산중 투자자산
|
51
|
+
재산가치 = round(유동자산 - (유동부채 * 1.2) + utils.nan_to_zero(투자자산) + utils.nan_to_zero(투자부동산), 2)
|
52
|
+
|
53
|
+
_, 발행주식수 = c103q.latest_value_pop2('발행주식수')
|
54
|
+
if math.isnan(발행주식수):
|
55
|
+
발행주식수 = utils.to_int(myredis.C101(code).get_recent().get('발행주식'))
|
56
|
+
else:
|
57
|
+
발행주식수 = 발행주식수 * 1000
|
58
|
+
|
59
|
+
try:
|
60
|
+
red_price = round(((사업가치 + 재산가치 - 부채평가) * 100000000) / 발행주식수)
|
61
|
+
except (ZeroDivisionError, ValueError) as e:
|
62
|
+
red_price = math.nan
|
63
|
+
|
64
|
+
logger.debug(f'Red Price : {red_price}원')
|
65
|
+
return {
|
66
|
+
'red_price': red_price,
|
67
|
+
'지배주주당기순이익': 지배주주당기순이익,
|
68
|
+
'사업가치': 사업가치,
|
69
|
+
'유동자산': 유동자산,
|
70
|
+
'유동부채': 유동부채,
|
71
|
+
'투자자산': 투자자산,
|
72
|
+
'투자부동산': 투자부동산,
|
73
|
+
'재산가치': 재산가치,
|
74
|
+
'부채평가': 부채평가,
|
75
|
+
'발행주식수': 발행주식수,
|
76
|
+
'date': tools.set_data(d1, d2, d3, d4, d5, d6), # ''값을 제거하고 리스트로 바꾼다.
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
def mil(code: str) -> dict:
|
81
|
+
"""
|
82
|
+
리턴값
|
83
|
+
{
|
84
|
+
'주주수익률': 주주수익률,
|
85
|
+
'이익지표': 이익지표,
|
86
|
+
'투자수익률': {'ROIC': roic, 'ROE': roe , 'ROE106': {}},
|
87
|
+
'가치지표': {'FCF': fcf_dict, 'PFCF': pfcf_dict, 'PCR': pcr_dict},
|
88
|
+
'date': [각 유효한 값의 년월값 리스트(ex- 2020/09)],
|
89
|
+
}
|
90
|
+
|
91
|
+
- 재무활동현금흐름이 마이너스라는 것은 배당급 지급했거나, 자사주 매입했거나, 부채를 상환한 상태임.
|
92
|
+
- 반대는 채권자로 자금을 조달했거나 신주를 발행했다는 의미
|
93
|
+
<주주수익률> - 재무활동현금흐름/시가총액 => 5%이상인가?
|
94
|
+
|
95
|
+
투하자본수익률(ROIC)가 30%이상인가
|
96
|
+
ROE(자기자본이익률) 20%이상이면 아주 우수 다른 투자이익률과 비교해볼것 10%미만이면 별로...단, 부채비율을 확인해야함.
|
97
|
+
|
98
|
+
이익지표 ...영업현금흐름이 순이익보다 많은가 - 결과값이 음수인가..
|
99
|
+
|
100
|
+
FCF는 영업현금흐름에서 자본적 지출(유·무형투자 비용)을 차감한 순수한 현금력이라 할 수 있다.
|
101
|
+
말 그대로 자유롭게(Free) 사용할 수 있는 여윳돈을 뜻한다.
|
102
|
+
잉여현금흐름이 플러스라면 미래의 투자나 채무상환에 쓸 재원이 늘어난 것이다.
|
103
|
+
CAPEX(Capital expenditures)는 미래의 이윤을 창출하기 위해 지출된 비용을 말한다.
|
104
|
+
이는 기업이 고정자산을 구매하거나, 유효수명이 당회계년도를 초과하는 기존의 고정자산에 대한 투자에 돈이 사용될 때 발생한다.
|
105
|
+
|
106
|
+
잉여현금흐름이 마이너스일때는 설비투자가 많은 시기라 주가가 약세이며 이후 설비투자 마무리되면서 주가가 상승할수 있다.
|
107
|
+
주가는 잉여현금흐름이 증가할때 상승하는 경향이 있다.
|
108
|
+
fcf = 영업현금흐름 - capex
|
109
|
+
|
110
|
+
가치지표평가
|
111
|
+
price to fcf 계산
|
112
|
+
https://www.investopedia.com/terms/p/pricetofreecashflow.asp
|
113
|
+
pcr보다 정확하게 주식의 가치를 평가할수 있음. 10배이하 추천
|
114
|
+
"""
|
115
|
+
c103q = myredis.C103(code, 'c103현금흐름표q')
|
116
|
+
c104q = myredis.C104(code, 'c104q')
|
117
|
+
c106q = myredis.C106(code, 'c106q')
|
118
|
+
|
119
|
+
marketcap억 = tools.get_marketcap(code) / 100000000
|
120
|
+
logger.debug(f'{code} market cap: {marketcap억}')
|
121
|
+
fcf_dict = tools.findFCF(code)
|
122
|
+
pfcf_dict = tools.findPFCF(code)
|
123
|
+
d1, 지배주주당기순이익 = tools.calc당기순이익(code)
|
124
|
+
|
125
|
+
d2, 재무활동현금흐름 = c103q.sum_recent_4q('재무활동으로인한현금흐름')
|
126
|
+
d3, 영업활동현금흐름 = c103q.sum_recent_4q('영업활동으로인한현금흐름')
|
127
|
+
|
128
|
+
d4, roic = c104q.sum_recent_4q('ROIC')
|
129
|
+
d5, roe = c104q.latest_value_pop2('ROE')
|
130
|
+
roe106 = c106q.find('ROE')
|
131
|
+
|
132
|
+
_, pcr_dict = c104q.find_without_yoy('PCR')
|
133
|
+
|
134
|
+
try:
|
135
|
+
주주수익률 = round((재무활동현금흐름 / marketcap억 * -100), 2)
|
136
|
+
이익지표 = round((지배주주당기순이익 - 영업활동현금흐름) / marketcap억, 5)
|
137
|
+
except ZeroDivisionError:
|
138
|
+
주주수익률 = math.nan
|
139
|
+
이익지표 = math.nan
|
140
|
+
|
141
|
+
if math.isnan(주주수익률) or math.isnan(이익지표):
|
142
|
+
logger.warning(f'주주수익률: {주주수익률} 이익지표: {이익지표}')
|
143
|
+
logger.warning(f'재무활동현금흐름: {재무활동현금흐름} / 지배주주당기순이익: {지배주주당기순이익} / 영업활동현금흐름: {영업활동현금흐름}')
|
144
|
+
|
145
|
+
logger.debug(f'{code} fcf_dict : {fcf_dict}')
|
146
|
+
logger.debug(f"{code} market_cap : {marketcap억}")
|
147
|
+
logger.debug(f'{code} pfcf_dict : {pfcf_dict}')
|
148
|
+
logger.debug(f'{code} pcr_dict : {pcr_dict}')
|
149
|
+
|
150
|
+
return {
|
151
|
+
'주주수익률': 주주수익률,
|
152
|
+
'이익지표': 이익지표,
|
153
|
+
'투자수익률': {'ROIC': roic, 'ROE': roe, 'ROE106': roe106},
|
154
|
+
'가치지표': {'FCF': fcf_dict, 'PFCF': pfcf_dict, 'PCR': pcr_dict},
|
155
|
+
'date': tools.set_data(d1, d2, d3, d4, d5),
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
def blue(code: str) -> dict:
|
160
|
+
"""
|
161
|
+
리턴값
|
162
|
+
{
|
163
|
+
'date': [각 유효한 값의 최근분기 값 리스트(ex- 2020/09)],
|
164
|
+
'순부채비율': (29.99, {'2018/12': 19.45, '2019/12': 19.52, '2020/12': 12.07, '2021/12': 82.2, '2022/12': 29.99, '2023/12': nan}),
|
165
|
+
'순운전자본회전율': (1.04, {'2018/12': 21.91, '2019/12': 23.12, '2020/12': 5.88, '2021/12': 5.6, '2022/12': 6.04, '2023/12': nan}),
|
166
|
+
'유동비율': 64.29,
|
167
|
+
'이자보상배율': (-3.64, {'2018/12': 4.01, '2019/12': 1.3, '2020/12': -5.05, '2021/12': 0.56, '2022/12': -1.28, '2023/12': nan}),
|
168
|
+
'재고자산회전율': (1.66, {'2018/12': 12.41, '2019/12': 12.44, '2020/12': 9.18, '2021/12': 9.76, '2022/12': 8.79, '2023/12': nan})
|
169
|
+
}
|
170
|
+
|
171
|
+
<유동비율>
|
172
|
+
100미만이면 주의하나 현금흐름창출력이 좋으면 괜찮을수 있다.
|
173
|
+
만약 100%이하면 유동자산에 추정영업현금흐름을 더해서 다시계산해보아 기회를 준다.
|
174
|
+
<이자보상배율>
|
175
|
+
이자보상배율 영업이익/이자비용으로 1이면 자금사정빡빡 5이상이면 양호
|
176
|
+
<순운전자금회전율>
|
177
|
+
순운전자금 => 기업활동을 하기 위해 필요한 자금 (매출채권 + 재고자산 - 매입채무)
|
178
|
+
순운전자본회전율은 매출액/순운전자본으로 일정비율이 유지되는것이 좋으며 너무 작아지면 순운전자본이 많아졌다는 의미로 재고나 외상이 쌓인다는 뜻
|
179
|
+
<재고자산회전율>
|
180
|
+
재고자산회전율은 매출액/재고자산으로 회전율이 낮을수록 재고가 많다는 이야기이므로 불리 전년도등과 비교해서 큰차이 발생하면 알람.
|
181
|
+
재고자산회전율이 작아지면 재고가 쌓인다는뜻
|
182
|
+
<순부채비율>
|
183
|
+
부채비율은 업종마다 달라 일괄비교 어려우나 순부채 비율이 20%이하인것이 좋고 꾸준히 늘어나지 않는것이 좋다.
|
184
|
+
순부채 비율이 30%이상이면 좋치 않다.
|
185
|
+
<매출액>
|
186
|
+
매출액은 어떤경우에도 성장하는 기업이 좋다.매출이 20%씩 늘어나는 종목은 유망한 종목
|
187
|
+
<영업이익률>
|
188
|
+
영업이익률은 기업의 경쟁력척도로 경쟁사에 비해 높으면 경제적해자를 갖춘셈
|
189
|
+
"""
|
190
|
+
|
191
|
+
d1, 유동비율 = tools.calc유동비율(code, pop_count=3)
|
192
|
+
logger.debug(f'유동비율 {유동비율} / [{d1}]')
|
193
|
+
|
194
|
+
c104y = myredis.C104(code, 'c104y')
|
195
|
+
_, dict이자보상배율y = c104y.find_with_yoy('이자보상배율')
|
196
|
+
_, dict순운전자본회전율y = c104y.find_with_yoy('순운전자본회전율')
|
197
|
+
_, dict재고자산회전율y = c104y.find_with_yoy('재고자산회전율')
|
198
|
+
_, dict순부채비율y = c104y.find_with_yoy('순부채비율')
|
199
|
+
|
200
|
+
c104q = myredis.C104(code, 'c104q')
|
201
|
+
d6, 이자보상배율q = c104q.latest_value_pop2('이자보상배율')
|
202
|
+
d7, 순운전자본회전율q = c104q.latest_value_pop2('순운전자본회전율')
|
203
|
+
d8, 재고자산회전율q = c104q.latest_value_pop2('재고자산회전율')
|
204
|
+
d9, 순부채비율q = c104q.latest_value_pop2('순부채비율')
|
205
|
+
|
206
|
+
if len(dict이자보상배율y) == 0:
|
207
|
+
logger.warning(f'empty dict - 이자보상배율 : {이자보상배율q} {dict이자보상배율y}')
|
208
|
+
|
209
|
+
if len(dict순운전자본회전율y) == 0:
|
210
|
+
logger.warning(f'empty dict - 순운전자본회전율 : {순운전자본회전율q} {dict순운전자본회전율y}')
|
211
|
+
|
212
|
+
if len(dict재고자산회전율y) == 0:
|
213
|
+
logger.warning(f'empty dict - 재고자산회전율 : {재고자산회전율q} {dict재고자산회전율y}')
|
214
|
+
|
215
|
+
if len(dict순부채비율y) == 0:
|
216
|
+
logger.warning(f'empty dict - 순부채비율 : {순부채비율q} {dict순부채비율y}')
|
217
|
+
|
218
|
+
################################################################
|
219
|
+
|
220
|
+
return {
|
221
|
+
'유동비율': 유동비율,
|
222
|
+
'이자보상배율': (이자보상배율q, dict이자보상배율y),
|
223
|
+
'순운전자본회전율': (순운전자본회전율q, dict순운전자본회전율y),
|
224
|
+
'재고자산회전율': (재고자산회전율q, dict재고자산회전율y),
|
225
|
+
'순부채비율': (순부채비율q, dict순부채비율y),
|
226
|
+
'date': tools.set_data(d1, d6, d7, d8, d9), # ''값을 제거하고 리스트로 바꾼다.
|
227
|
+
}
|
228
|
+
|
229
|
+
|
230
|
+
def growth(code: str) -> dict:
|
231
|
+
"""
|
232
|
+
리턴값
|
233
|
+
{'date': [각 유효한 값의 최근분기 값 리스트(ex- 2020/09)],
|
234
|
+
'매출액증가율': (-14.37, {'2018/12': -24.56, '2019/12': -20.19, '2020/12': -12.64, '2021/12': 38.65, '2022/12': -8.56, '2023/12': nan}),
|
235
|
+
'영업이익률': {'뉴프렉스': '17.36', '동일기연': '13.58', '비에이치': '16.23', '에이엔피': '-9.30', '이브이첨단소재': '-4.93'}}
|
236
|
+
|
237
|
+
<매출액>
|
238
|
+
매출액은 어떤경우에도 성장하는 기업이 좋다.매출이 20%씩 늘어나는 종목은 유망한 종목
|
239
|
+
<영업이익률>
|
240
|
+
영업이익률은 기업의 경쟁력척도로 경쟁사에 비해 높으면 경제적해자를 갖춘셈
|
241
|
+
"""
|
242
|
+
c104y = myredis.C104(code, 'c104y')
|
243
|
+
c106y = myredis.C106(code, 'c106y')
|
244
|
+
|
245
|
+
_, dict매출액증가율y = c104y.find_with_yoy('매출액증가율')
|
246
|
+
|
247
|
+
c104q = myredis.C104(code, 'c104q')
|
248
|
+
d2, 매출액증가율q = c104q.latest_value_pop2('매출액증가율')
|
249
|
+
|
250
|
+
logger.debug(f'매출액증가율 : {매출액증가율q} {dict매출액증가율y}')
|
251
|
+
|
252
|
+
################################################################
|
253
|
+
|
254
|
+
# c106 에서 타 기업과 영업이익률 비교
|
255
|
+
dict영업이익률 = c106y.find('영업이익률')
|
256
|
+
|
257
|
+
return {
|
258
|
+
'매출액증가율': (매출액증가율q, dict매출액증가율y),
|
259
|
+
'영업이익률': dict영업이익률,
|
260
|
+
'date': [d2, ]}
|
261
|
+
|
262
|
+
|
263
|
+
"""
|
264
|
+
- 각분기의 합이 연이 아닌 타이틀(즉 sum_4q를 사용하면 안됨)
|
265
|
+
'*(지배)당기순이익'
|
266
|
+
'*(비지배)당기순이익'
|
267
|
+
'장기차입금'
|
268
|
+
'현금및예치금'
|
269
|
+
'매도가능금융자산'
|
270
|
+
'매도파생결합증권'
|
271
|
+
'만기보유금융자산'
|
272
|
+
'당기손익-공정가치측정금융부채'
|
273
|
+
'당기손익인식(지정)금융부채'
|
274
|
+
'단기매매금융자산'
|
275
|
+
'단기매매금융부채'
|
276
|
+
'예수부채'
|
277
|
+
'차입부채'
|
278
|
+
'기타부채'
|
279
|
+
'보험계약부채(책임준비금)'
|
280
|
+
'*CAPEX'
|
281
|
+
'ROE'
|
282
|
+
"""
|
283
|
+
|
284
|
+
"""
|
285
|
+
- sum_4q를 사용해도 되는 타이틀
|
286
|
+
'자산총계'
|
287
|
+
'당기순이익'
|
288
|
+
'유동자산'
|
289
|
+
'유동부채'
|
290
|
+
'비유동부채'
|
291
|
+
|
292
|
+
'영업활동으로인한현금흐름'
|
293
|
+
'재무활동으로인한현금흐름'
|
294
|
+
'ROIC'
|
295
|
+
"""
|