make-quant-py/streamlit_quant/super_quality.py

68 lines
2.8 KiB
Python

from datetime import datetime
import streamlit as st
from strategy import f_score
import quantcommon
# st.write("""
# '신F-스코어 3점 + 고GP/A 전략'을 '강환국 슈퍼 퀄리티 전략'이라 명명한다.
# 이 전략은 신F-스코어가 3점인 종목을 매수하되, GP/A로 순위를 매겨서 순위가 높은 종목만 매수하는 것이다.
# 이 경우 한국에서 수익이 어땠을지 분석해보자.
# 연도별로 신F-스코어 3점을 충족하는 종목은 600-700개였다.\n
# 신F-스코어 3점 기업 내에서도 GP/A가 높은 종목이 3점 종목 평균보다 CAGR 기준으로 3-4% 더 높았다.
# 반대로 GP/A가 낮은 종목의 수익률은 상대적으로 저조했다.\n\n
# ---
# 투자 전략: 강환국 슈퍼 퀄리티 전략 1.0\n
# 레벨: 초, 중급\n
# 스타일: 퀄리티\n
# 기대 CAGR: 약 20%\n
# 매수 전략:
# - 신F-스코어 3점 종목만 매수\n
# - 여기에 GP/A 순위를 부여, 순위 높은 20-30종목을 매수\n
# 매도 전략: 연 1회 리밸런싱\n\n\n
# ---
# 지금까지 소개한 거의 모든 전략에서 소형주 전략이 전체 주식 수익률보다 높았다.
# 시가총액 하위 20% 종목의 CAGR을 분석해보았다.\n\n
# ---
# 투자 전략: 강환국 슈퍼 퀄리티 전략 2.0\n
# 레벨: 초, 중급\n
# 스타일: 퀄리티\n
# 기대 CAGR: 20% 이상\n
# 매수 전략:
# 아래 조건을 만족하는 20-30종목 매수\n
# - 신F-스코어 3점 종목만 매수\n
# - 여기에 GP/A 순위를 부여, 순위 높은 종목만 매수\n
# - 단, 소형주(시가총액 최저 20%)만 매수\n
# 매도 전략: 연 1회 리밸런싱\n
# ---
# 소형주 중 신F-스코어가 3점인 종목을 찾아보니 2004-2016년 구간에 80-100개 종목이 남았다.
# 그 주식들을 통째로 매수해도 CAGR 34.55%를 벌수 있었다!
# 정말 상당한 수익이다.
# 이 종목들을 다 샀으면 총 1,159개 종목 중 14개가 파산했다.(1.2%)
# 또 1년간 마이너스 수익을 기록한 종목이 29.7%였다.\n
# 신F-스코어가 3점인 종목 중 GP/A가 높은 종목 위주로 매수했으면 (1) CAGR도 조금 개선되고 (2) 최상 30개 종목을 매수했을 경우 선택받은 종목 360개 중 파산한 기업은 단 1개였다.
# F-스코어와 GP/A는 엄청난 잠재력을 지닌 콤비네이션임이 분명하다.
# """)
def get_last_year_end():
# 현재 날짜 가져오기 (2025년 3월 16일 기준)
today = datetime.now()
# 작년 연도 계산
last_year = today.year - 1
# 작년 12월 31일 생성
last_year_end = datetime(last_year, 12, 31)
return last_year_end.date()
st.write("투자 전략: 강환국 슈퍼 퀄리티 전략 2.0")
date = get_last_year_end()
data = f_score.get_f_score(quantcommon.QuantCommon(), date)
config = {}
st.dataframe(data, column_config=config, use_container_width=True)