analyser_hj3415 2.6.1__tar.gz → 2.6.3__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (22) hide show
  1. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/PKG-INFO +1 -1
  2. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/analysers/eval.py +5 -8
  3. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/analysers/score.py +42 -26
  4. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/cli.py +4 -3
  5. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/pyproject.toml +1 -1
  6. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.DS_Store +0 -0
  7. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.gitattributes +0 -0
  8. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.gitignore +0 -0
  9. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.idea/.gitignore +0 -0
  10. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.idea/analyser-hj3415.iml +0 -0
  11. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.idea/inspectionProfiles/profiles_settings.xml +0 -0
  12. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.idea/misc.xml +0 -0
  13. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.idea/modules.xml +0 -0
  14. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/.idea/vcs.xml +0 -0
  15. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/LICENSE +0 -0
  16. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/README.md +0 -0
  17. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/.DS_Store +0 -0
  18. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/__init__.py +0 -0
  19. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/analysers/report.py +0 -0
  20. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/myredis.py +0 -0
  21. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/tools.py +0 -0
  22. {analyser_hj3415-2.6.1 → analyser_hj3415-2.6.3}/analyser_hj3415/trash.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: analyser_hj3415
3
- Version: 2.6.1
3
+ Version: 2.6.3
4
4
  Summary: Stock analyser and database processing programs
5
5
  Author-email: Hyungjin Kim <hj3415@gmail.com>
6
6
  Description-Content-Type: text/markdown
@@ -84,16 +84,9 @@ def mil(code: str) -> dict:
84
84
  '가치지표': {'FCF': fcf_dict, 'PFCF': pfcf_dict, 'PCR': pcr_dict},
85
85
  'date': [각 유효한 값의 년월값 리스트(ex- 2020/09)],
86
86
  }
87
-
88
- - 재무활동현금흐름이 마이너스라는 것은 배당급 지급했거나, 자사주 매입했거나, 부채를 상환한 상태임.
89
- - 반대는 채권자로 자금을 조달했거나 신주를 발행했다는 의미
90
- <주주수익률> - 재무활동현금흐름/시가총액 => 5%이상인가?
91
-
92
87
  투하자본수익률(ROIC)가 30%이상인가
93
88
  ROE(자기자본이익률) 20%이상이면 아주 우수 다른 투자이익률과 비교해볼것 10%미만이면 별로...단, 부채비율을 확인해야함.
94
89
 
95
- 이익지표 ...영업현금흐름이 순이익보다 많은가 - 결과값이 음수인가..
96
-
97
90
  FCF는 영업현금흐름에서 자본적 지출(유·무형투자 비용)을 차감한 순수한 현금력이라 할 수 있다.
98
91
  말 그대로 자유롭게(Free) 사용할 수 있는 여윳돈을 뜻한다.
99
92
  잉여현금흐름이 플러스라면 미래의 투자나 채무상환에 쓸 재원이 늘어난 것이다.
@@ -130,7 +123,7 @@ def mil(code: str) -> dict:
130
123
 
131
124
  try:
132
125
  주주수익률 = round((재무활동현금흐름 / marketcap억 * -100), 2)
133
- 이익지표 = round((지배주주당기순이익 - 영업활동현금흐름) / marketcap억, 5)
126
+ 이익지표 = round(((지배주주당기순이익 - 영업활동현금흐름) / marketcap억) * 100, 2)
134
127
  except ZeroDivisionError:
135
128
  주주수익률 = math.nan
136
129
  이익지표 = math.nan
@@ -147,6 +140,10 @@ def mil(code: str) -> dict:
147
140
  return {
148
141
  '주주수익률': 주주수익률,
149
142
  '이익지표': 이익지표,
143
+ '재무활동현금흐름': 재무활동현금흐름,
144
+ '지배주주당기순이익': 지배주주당기순이익,
145
+ '영업활동현금흐름': 영업활동현금흐름,
146
+ '시가총액억': marketcap억,
150
147
  '투자수익률': {'ROIC': roic, 'ROE': roe, 'ROE106': roe106},
151
148
  '가치지표': {'FCF': fcf_dict, 'PFCF': pfcf_dict, 'PCR': pcr_dict},
152
149
  'date': tools.set_data(d1, d2, d3, d4, d5),
@@ -58,33 +58,49 @@ def red(code: str, expect_earn: float) -> int:
58
58
 
59
59
  def mil(code: str, expect_earn: float) -> Tuple[int, int, int, int]:
60
60
  """
61
- - 재무활동현금흐름이 마이너스라는 것은 배당급 지급했거나, 자사주 매입했거나, 부채를 상환한 상태임.
62
- - 반대는 채권자로 자금을 조달했거나 신주를 발행했다는 의미
63
- <주주수익률> - 재무활동현금흐름/시가총액 => 5%이상인가?
64
-
65
- 투하자본수익률(ROIC) 30%이상인가
66
- ROE(자기자본이익률) 20%이상이면 아주 우수 다른 투자이익률과 비교해볼것 10%미만이면 별로...단, 부채비율을 확인해야함.
67
-
68
- 이익지표 ...영업현금흐름이 순이익보다 많은가 - 결과값이 음수인가..
69
-
70
- FCF는 영업현금흐름에서 자본적 지출(유·무형투자 비용)을 차감한 순수한 현금력이라 있다.
71
- 그대로 자유롭게(Free) 사용할 수 있는 여윳돈을 뜻한다.
72
- 잉여현금흐름이 플러스라면 미래의 투자나 채무상환에 재원이 늘어난 것이다.
73
- CAPEX(Capital expenditures)는 미래의 이윤을 창출하기 위해 지출된 비용을 말한다.
74
- 이는 기업이 고정자산을 구매하거나, 유효수명이 당회계년도를 초과하는 기존의 고정자산에 대한 투자에 돈이 사용될 때 발생한다.
75
-
76
- 잉여현금흐름이 마이너스일때는 설비투자가 많은 시기라 주가가 약세이며 이후 설비투자 마무리되면서 주가가 상승할수 있다.
77
- 주가는 잉여현금흐름이 증가할때 상승하는 경향이 있다.
78
- fcf = 영업현금흐름 - capex
79
-
80
- 가치지표평가
81
- price to fcf 계산
82
- https://www.investopedia.com/terms/p/pricetofreecashflow.asp
83
- pcr보다 정확하게 주식의 가치를 평가할수 있음. 10배이하 추천
84
-
85
- Returns:
86
- tuple: 주주수익률, 이익지표, 투자수익률, PFCF포인트
61
+ 이익 지표 일반적인 기준 설정
62
+
63
+ 1. 비율이 10% 이상일 경우 주의:
64
+ • 이 비율이 10%를 넘을 경우, 이는 기업의 순이익이 현금 흐름과 비교하여 너무 높아졌음을 나타냅니다.
65
+ • 순이익이 과도하게 부풀려졌을 가능성이 있으며, 회계적인 항목(예: 미수금, 재고자산의 평가차익 등)이나 비현금성 이익이 이익에 크게 기여하고 있을 수 있습니다. 이런 경우, 현금 흐름이 제대로 발생하지 않고 있음에도 순이익만 높게 기록되는 상황이 발생할 수 있어 이익의 질이 낮다고 평가됩니다.
66
+ • 특히, 비율이 지속적으로 높다면 재무 건전성에 문제가 있을 있습니다.
67
+ 2. 비율이 5% 이상 ~ 10% 미만일 때:
68
+ • 비율이 5% ~ 10% 사이라면, 기업의 이익이 여전히 현금 흐름과 괴리가 있지만, 업종에 따라 일정 부분은 허용될 수 있습니다.
69
+ • 예를 들어, 기술 기업이나 고성장 산업에서는 초기 투자나 R&D 비용이 많기 때문에 순이익과 현금 흐름의 차이가 다소 발생할 수 있습니다. 이런 경우 비율이 5%를 넘더라도 성장성을 고려한 투자 관점에서 용인될 수 있습니다.
70
+ • 다만, 일반적인 제조업 현금 창출이 중요한 업종에서는 5% 이상의 괴리도 주의 깊게 볼 필요가 있습니다.
71
+ 3. 비율이 5% 미만일 때:
72
+ • 비율이 5% 미만이라면, 기업의 순이익과 현금 흐름 간의 차이가 크지 않으므로, 이익의 질이 높고 재무 건전성이 양호하다고 평가할 수 있습니다.
73
+ • 특히 음수일 경우, 영업활동에서 벌어들인 현금이 순이익을 초과한다는 것을 의미하므로, 이는 매우 긍정적인 신호입니다. 기업이 순이익보다도 더 많은 현금을 창출하고 있는 상태로, 이익이 실제 현금 흐름으로 뒷받침되고 있음을 나타냅니다.
74
+
75
+ 참고할 수 있는 기준
76
+ 1. 경고 신호: 10% 이상
77
+ • 비율이 10% 이상이라면, 기업의 이익이 실제 현금 흐름과 크게 괴리되어 있음을 의미하며, 이익의 질이 낮고 재무 건전성이 떨어질 가능성이 큽니다. 특히, 이 비율이 지속적으로 높다면, 주의가 필요합니다.
78
+ 2. 주의: 5% ~ 10%
79
+ • 이 비율은 어느 정도 괴리가 있는 상태이며, 업종 특성에 따라 감안할 수 있지만, 일반적인 기업의 경우 주의를 요합니다.
80
+ 3. 안정적: 5% 미만
81
+ • 5% 미만은 비교적 안정적인 상태로 평가될 수 있습니다. 이익과 현금 흐름 간의 괴리가 크지 않기 때문에, 기업의 재무 상태와 이익의 질이 건전하다고 볼 수 있습니다.
82
+ 4. 매우 긍정적: 음수
83
+ • 비율이 음수일 경우, 현금 창출 능력이 매우 우수한 상태입니다. 현금 흐름이 순이익보다 더 크므로, 이는 매우 긍정적인 신호로 평가됩니다.
84
+
85
+ 사례별 해석
86
+
87
+ 1. 비율이 15%:
88
+ • 회사는 순이익이 영업활동현금흐름에 비해 과도하게 높습니다. 이는 비현금성 이익이 많이 포함되어 있거나, 회계적인 처리로 인해 순이익이 부풀려졌을 가능성이 큽니다. 기업의 이익 질에 의문을 가져야 하며, 장기적으로 재무 구조에 문제가 생길 수 있습니다.
89
+ 2. 비율이 7%:
90
+ • 괴리가 존재하지만, 일부 산업에서는 용인될 수 있는 범위입니다. 다만, 현금 흐름이 안정적인지 추가적인 분석이 필요합니다.
91
+ 3. 비율이 -3%:
92
+ • 매우 긍정적인 상황입니다. 회사는 순이익보다 더 많은 현금을 벌어들이고 있어, 이익의 질이 매우 높으며, 주주들에게도 더 많은 이익을 돌려줄 가능성이 큽니다.
93
+
94
+ 기타 고려 사항
95
+
96
+ • 업종별 차이: 기술 기업, 스타트업 등은 고정자산 투자나 R&D 비용이 많아 현금 흐름과 이익이 괴리될 수 있습니다. 이 경우 이익의 질이 낮다고 단정할 수는 없으므로 산업 특성을 고려해야 합니다.
97
+ • 기업의 성장 단계: 빠르게 성장하는 기업일수록 현금 흐름보다 순이익이 클 수 있지만, 시간이 지나면서 현금 창출 능력이 증가할 수 있습니다.
98
+ • 비현금성 항목 분석: 감가상각, 미수금 등의 비현금성 항목이 이익에 얼마나 영향을 미치는지 분석하여 이익의 질을 파악하는 것이 중요합니다.
99
+ :param code:
100
+ :param expect_earn:
101
+ :return:
87
102
  """
103
+
88
104
  mil_dict = eval.mil(code)
89
105
 
90
106
  # print(pprint.pformat(mil_dict, width=200))
@@ -83,7 +83,7 @@ def analyser_manager():
83
83
  if args.type == 'red':
84
84
  if args.command == 'score':
85
85
  # 기대 수익률과 refresh 값 처리
86
- expect_earn = args.expect_earn if args.expect_earn is not None else expect_earn_from_setting
86
+ expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
87
87
  refresh = args.refresh if args.refresh else False
88
88
 
89
89
  # print(expect_earn, refresh)
@@ -100,8 +100,9 @@ def analyser_manager():
100
100
 
101
101
  elif args.command == 'ranking':
102
102
  # 기대 수익률과 refresh 값 처리
103
- expect_earn = args.expect_earn if args.expect_earn is not None else expect_earn_from_setting
103
+ expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
104
104
  refresh = args.refresh if args.refresh else False
105
+ print(expect_earn, refresh)
105
106
 
106
107
  # red_ranking 함수 호출
107
108
  result = red_ranking(expect_earn, refresh)
@@ -112,7 +113,7 @@ def analyser_manager():
112
113
  elif args.type == 'mil':
113
114
  if args.command == 'score':
114
115
  # 기대 수익률과 refresh 값 처리
115
- expect_earn = args.expect_earn if args.expect_earn is not None else expect_earn_from_setting
116
+ expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
116
117
  refresh = args.refresh if args.refresh else False
117
118
 
118
119
  if args.code == 'all':
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "analyser_hj3415"
7
- version = "2.6.1"
7
+ version = "2.6.3"
8
8
  authors = [{name = "Hyungjin Kim", email = "hj3415@gmail.com"}]
9
9
  description = "Stock analyser and database processing programs"
10
10
  readme = "README.md"
File without changes