Skip to content

블로그

[2021-08-13] 공매도 상위 종목 살펴보기

공매도는 주식을 빌려서 파는 행위를 말합니다. 주가가 하락한다는 쪽에 베팅하는 것입니다. 이러한 베팅을 숏(Short) 포지션 취한다고 합니다. 주가가 하락할 것이라고 예상하고 주식을 빌려서 현재 가격에 매도하고 주가가 떨어졌을 때 다시 매수해서 빌린 주식을 갚는 것입니다.

공매도는 2020년 3월에 주가 급락을 막기 위해 금지됐었습니다. 그렇게 1년 2개월간 금지된 공매도가 2021년 5월에 재개됐습니다. 공매도는 개인투자자들이 하기 어렵고 그만큼 개인투자자들의 공매도에 대한 부정적인 인식이 강합니다.

공매도가 많다고 해서 주가가 꼭 하락한다는 보장은 없지만 공매도의 현황을 파악해 놓는 것은 중요하다고 생각합니다. 공매도의 추세가 증가하면 가급적 매수를 자제하는 것이 좋다고 생각합니다. 다만 공매도가 많다가 줄어드는 추세이고 대차잔고가 많은 상태면 주가가 바닥권이라는 예측을 해볼 수도 있습니다. 대차잔고는 주식을 빌리고 아직 갚지 않은 주식 수를 의미합니다. 즉, 대차잔고만큼 앞으로 매수가 이뤄질 것이란 의미입니다.

퀀티랩 종목지표/공매도 메뉴에서 종목별 공매도 현황을 표로 확인할 수 있습니다.

이 포스트에서는 2021-08-13 기준으로 공매도율, 대차잔고율, 대차잔고액 순위를 살펴보겠습니다.

종목명주가등락율(%)공매도액(만원)공매도율(%)대차잔고액(만원)대차잔고율(%)
티씨케이173,400-1.64137,55625.57  
넷마블127,000-3.791,398,73025.519,808,5330.85
하림지주9,580-1.5465,51022.83  
SK머티리얼즈432,000-1.5508,95921.26  
휴온스61,400-1.7676,52719.85  
금호석유화학192,500-2.531,408,19318.8814,948,0292.48
엔씨소프트786,000-2.481,563,72318.77,751,7090.43
리노공업172,4000.17151,01818.69  
CJ대한통운165,500-2.07189,09718.43845,5910.22
GS리테일33,200-1.92443,43218.12711,7630.2
고영23,450-2.0984,65917.43  
주성엔지니어링13,050-1.14326,58817.19  
SK텔레콤306,000-2.081,344,42217.128,681,7190.4
동국제약24,700-1.7971,29817.11  
팬오션7,410-4.391,044,21716.944,016,5251.03
하나투어75,600-2.45265,63316.831,204,7801.09
S-Oil93,800-1.37360,71916.512,908,9250.28
제일기획23,200-0.22108,40615.71429,8280.16
이오테크닉스112,700-3.1153,84315.5  
한화솔루션38,700-2.27564,86715.4112,955,9341.7
종목명주가등락율(%)공매도액(만원)공매도율(%)대차잔고액(만원)대차잔고율(%)
롯데관광개발18,900-2.0756,8846.669,874,8717.25
LG디스플레이20,800-3.48971,07811.9750,027,6426.31
신풍제약66,800-6.96867,6693.5914,668,3194.31
HMM39,150-3.69100,3460.4564,919,6674.13
엠씨넥스45,500-1.62270.003,234,9843.81
삼성중공업6,170-2.68179,1775.7315,810,5893.73
OCI107,000-3.60178,2872.698,522,1113.18
셀트리온275,500-2.13960,1994.45112,924,1253.03
부광약품20,400-2.8665,7163.804,234,1882.84
일양약품34,150-1.7331,3177.041,721,0902.58
호텔신라90,000-2.39313,5536.939,290,9012.57
금호석유화학192,500-2.531,408,19318.8814,948,0292.48
두산퓨얼셀48,400-2.2238,5711.538,021,7492.43
한전기술48,150-3.8942,4562.393,857,6091.99
GKL15,700-1.2643,6218.021,931,8801.93
삼양식품87,800-0.7919,8586.281,279,7201.90
인스코비4,32514.578800.01686,1711.79
씨에스윈드80,100-2.44300,5558.815,912,2981.77
CJ CGV28,750-2.8746,4652.571,942,7591.72
한화솔루션38,700-2.27564,86715.4112,955,9341.70
종목명주가등락율(%)공매도액(만원)공매도율(%)대차잔고액(만원)대차잔고율(%)
셀트리온275,500-2.13960,1994.45112,924,1253.03
HMM39,150-3.69100,3460.4564,919,6674.13
LG디스플레이20,800-3.48971,07811.9750,027,6426.31
현대자동차217,000-0.91654,3723.5132,678,4790.70
삼성바이오로직스983,0001.13683,4054.8120,547,0590.33
아모레퍼시픽220,500-1.78388,53610.8317,527,9871.32
삼성중공업6,170-2.68179,1775.7315,810,5893.73
금호석유화학192,500-2.531,408,19318.8814,948,0292.48
LG생활건강1,444,0001.62498,0127.0614,773,6560.66
신풍제약66,800-6.96867,6693.5914,668,3194.31
SK이노베이션248,5002.691,440,1985.3214,506,4950.65
LG화학896,0002.051,345,0333.7914,318,3710.24
한화솔루션38,700-2.27564,86715.4112,955,9341.70
카카오146,000-1.022,591,3428.2912,739,6100.20
포스코케미칼155,0001.311,070,66114.5512,592,2281.05
한국조선해양119,000-0.8393,6402.2510,713,9721.22
롯데관광개발18,900-2.0756,8846.669,874,8717.25
두산중공업20,800-4.15215,1781.679,809,8390.89
넷마블127,000-3.791,398,73025.519,808,5330.85
삼성전자74,400-3.3813,590,0493.009,771,2790.02

여기서 대차잔고액은 높은데 공매도율은 낮은 종목으로는 HMM이 있습니다. HMM의 공매도 흐름을 살펴보면 다음과 같습니다.

HMM 공매도

7월달을 보면 공매도율이 무려 25% 가까이 있었다는 것을 알 수 있습니다. 이 공매도 물량을 언제 상환할 지는 모르겠지만 최근 공매도율은 낮아진 것으로 보입니다.

여기에 BDI 역시 높은 상황이라 HMM이 다시 올라갈 여지도 있어 보입니다.

BDI

주요 MSCI 지수 차트 한꺼번에 보기

MSCI 지수는 모건스탠리캐피탈인터내셔널(MSCI)에서 발표하는 선진국/신흥국, 지역, 국가 기준의 주식 종합 지수입니다. MSCI 지수는 많은 펀드들이 추종하고 있어서 주식투자에 있어서 매우 중요한 지수입니다.

한국의 코스피, 미국의 S&P 500, 일본의 닛케이, 중국의 상해종합지수, 홍콩의 항셍지수 등 각 국가별로 주식 종합 지수가 존재합니다. 그럼 “왜 굳이 MSCI 지수가 필요하지?”라는 의문이 생길 수 있습니다. 각 국가에서 주식종합지수를 만드는 방법이 다르기 때문에 획일화된 방법으로 각 국가의 지수를 만들어야할 필요가 생겼습니다. 이에 모건스탠리캐피탈인터내셔널(MSCI)에서 이 역할을 수행하는 것입니다.

MSCI는 국가별 뿐만 아니라 지역(아시아, 아메리카, 유럽 등) 별로 또는 선진국/신흥국 별로 주식종합지수를 만들기도 합니다.

매우 다양한 MSCI 지수들 중에서 한국 주식 투자에 주로 참고해야 할 주요 MSCI 지수들의 차트를 퀀티랩에서 한꺼번에 볼 수 있습니다. 시장지표 / MSCI 메뉴에서 다은과 같은 차트들을 볼 수 있습니다.

MSCI

  • MSCI WORLD는 23개 선진 국가 주식 시장을 대상으로 합니다.
  • MSCI WCWI는 23개 선진 국가와 27개 신흥 국가 주식 시장을 대상으로 합니다.
  • MSCI EM은 26개 신흥 국가 주식 시장을 대상으로 합니다.
  • 그 외는 각 국가별 지수 입니다.

각 지수에 포함된 국가 수, 종목, 비중 등은 변경될 수 있습니다.

한국/미국 금리 차트 보기

앞서 퀀티랩에서 해외증시, 환율, 원자재 차트를 볼 수 있다고 소개 드렸는데, 중요한 지표인 금리가 빠져 있었습니다. 이제 한국과 미국 금리 차트도 퀀티랩에서 확인할 수 있습니다.

시장지표 / 금리 메뉴에서 금리 관련 차트들을 볼 수 있습니다.

금리

현재는 한국 기준 금리, 미국 기준 금리, 미국 10년물 국채 금리를 볼 수 있는데 앞으로 한국 국채 금리를 포함해 다양한 금리 데이터도 추가될 예정입니다.

추가되었으면 하는 데이터가 있다면 메일, 카페 등의 채널을 통해 요청해 주시면 최대한 서비스에 반영하도록 하겠습니다.

해외증시, 환율, 원자재 차트 한눈에 보기

퀀티랩에서 해외증시, 환율, 원자재 차트들을 볼 수 있습니다. 이러한 시장 지표들의 추세를 잘 확인하면 주식 투자에 큰 도움이 될 것입니다.

퀀티랩의 시장지표 메뉴를 누르면 나오는 해외증시, 환율, 원자재 하위 메뉴로 차트들을 볼 수 있습니다.

해외증시변동성지수 VIX다우산업, 나스닥종합, S&P 500, 니케이 225, 상해종합, 항셍, 영국 FTSE 100, 프랑스 CAC 40, 독일 DAX 30을 볼 수 있습니다. VIX는 S&P 500 지수 옵션의 30일 뒤의 기대 변동성을 입니다.

해외증시

환율 페이지에서는 미달러, 유로, , 위안, 홍콩달러 환율을 볼 수 있습니다.

환율

원자재 페이지에서는 대표적인 원자재지수인 GSCI를 비롯해 다양한 원자재 선물의 차트들을 한눈에 보여줍니다.

원자재

대신증권 크레온 API로 매수/매도 주문 넣고 확인하기

이번 포스트에서는 대신증권 크레온 API로 주식 주문을 내고 실시간으로 체결을 확인하고 주문 내역을 조회하는 방법을 다룹니다.

먼저 매수 또는 매도 주문을 내는 방법을 알아보겠습니다. 주문은 크레온 API의 CpTrade.CpTd0311 모듈을 사용하면 됩니다.

다음과 같이 order() 함수를 선언하고, action, code, amount를 매수/매도 구분, 주문할 종목 코드, 주식 수로 각각 입력 받도록 했습니다. 물론 더 다양한 입력을 받을 수 있게 이 함수를 수정할 수 있습니다.

import win32com.client
class Creon:
def __init__(self):
self.orderevent_handler = None
def order(self, action, code, amount):
if not code.startswith('A'):
code = 'A' + code
account_no, account_gflags = self.init_trade()
self.obj_CpTrade_CpTd0311.SetInputValue(0, action) # 1: 매도, 2: 매수
self.obj_CpTrade_CpTd0311.SetInputValue(1, account_no) # 계좌번호
self.obj_CpTrade_CpTd0311.SetInputValue(2, account_gflags[0]) # 상품구분
self.obj_CpTrade_CpTd0311.SetInputValue(3, code) # 종목코드
self.obj_CpTrade_CpTd0311.SetInputValue(4, amount) # 매수수량
self.obj_CpTrade_CpTd0311.SetInputValue(8, '03') # 시장가
result = self.obj_CpTrade_CpTd0311.BlockRequest()
if result != 0:
print('order request failed.', file=sys.stderr)
status = self.obj_CpTrade_CpTd0311.GetDibStatus()
msg = self.obj_CpTrade_CpTd0311.GetDibMsg1()
if status != 0:
print('order failed. {}'.format(msg), file=sys.stderr)
def buy(self, code, amount):
return self.order('2', code, amount)
def sell(self, code, amount):
return self.order('1', code, amount)

매수할 때는 buy() 함수를 호출해서 action2로 지정하고, 매도할 때는 sell() 함수를 호출해서 action1로 지정하도록 했습니다.

여기서는 시장가로 매수/매도를 하도록 했는데 지정가, 최유리지정가, 최우선지정가 등으로 변경할 수 있습니다. 이 부분은 CpTrade.CpTd0311 문서에서 SetInputValue8 - (string) 주문호가구분코드 항목을 함고하시기 바랍니다.

이렇게 매수 또는 매도 주문을 넣고 체결 되었을 때 다음과 같이 이벤트를 받을 수 있습니다.

class Creon:
def subscribe_orderevent(self, cb):
obj = win32com.client.Dispatch('Dscbo1.CpConclusion')
handler = win32com.client.WithEvents(obj, OrderEventHandler)
handler.set_attrs(obj, cb)
self.orderevent_handler = obj
obj.Subscribe()
def unsubscribe_orderevent(self):
if self.orderevent_handler is not None:
self.orderevent_handler.Unsubscribe()
self.orderevent_handler = None
class OrderEventHandler(EventHandler):
def OnReceived(self):
item = {
'계좌명': self.obj.GetHeaderValue(1),
'name': self.obj.GetHeaderValue(2),
'체결수량': self.obj.GetHeaderValue(3),
'체결가격': self.obj.GetHeaderValue(4),
'주문번호': self.obj.GetHeaderValue(5),
'원주문번호': self.obj.GetHeaderValue(6),
'계좌번호': self.obj.GetHeaderValue(7),
'상품관리구분코드': self.obj.GetHeaderValue(8),
'종목코드': self.obj.GetHeaderValue(9),
'매매구분코드': self.obj.GetHeaderValue(12),
'체결구분코드': self.obj.GetHeaderValue(14),
'체결구분코드': self.obj.GetHeaderValue(14),
'체결구분코드': self.obj.GetHeaderValue(14),
'현금신용대용구분코드': self.obj.GetHeaderValue(17),
}
self.cb(item)

subscribe_orderevent() 함수를 호출해서 체결 이벤트를 실시간으로 받아올 수 있습니다. 매수/매도 주문이 체결되면 지정된 콜백 함수 cb로 체결 정보를 전송합니다. 이를 위해서 OrderEventHandler 클래스를 선언했고, 이 클래스의 OnReceived() 함수에서 체결 정보를 cb에 전송합니다.

다음과 같이 지금까지 주문한 내역을 확인할 수도 있습니다.

class Creon:
def __init__(self, account_no=''):
self.obj_CpTrade_CpTd5341 = win32com.client.Dispatch('CpTrade.CpTd5341')
def get_trade_history(self):
account_no, account_gflags = self.init_trade()
self.obj_CpTrade_CpTd5341.SetInputValue(0, account_no)
self.obj_CpTrade_CpTd5341.SetInputValue(1, account_gflags[0]) # 상품구분
_fields = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 22, 24]
_keys = [
'상품관리구분코드', '주문번호', '원주문번호', '종목코드', '종목이름',
'주문내용', '주문호가구분코드내용', '주문수량', '주문단가', '총체결수량',
'체결수량', '체결단가', '확인수량', '정정취소구분내용 ', '거부사유내용',
'채권매수일', '거래세과세구분내용', '현금신용대용구분내용', '주문입력매체코드내용',
'정정취소가능수량', '매매구분',
]
result = self.request(self.obj_CpTrade_CpTd5341, dict(zip(_fields, _keys)), cntidx=6)
return result

주문 이후에 get_trade_history() 함수를 호출하면 다음과 같이 매수/매도 주문에 대한 정보들을 받아올 수 있습니다. 여기서는 삼성전자를 10주씩 매수->매도->매수한 다음 get_trade_history() 함수를 호출한 결과 입니다.

{'data': [{'상품관리구분코드': '10', '주문번호': 6095, '원주문번호': 0, '종목코드': 'A005930', '종목이름': '삼성전자', '주문내용': '정규장현금매수', '주문호가구분코드내용': '시장가', '주문수량': 10, '주문단가': 0, '총체결수량': 10, '체결수량': 10, '체결단가': 82430, '확인수량': 0, '정정취소구분내용 ': '정상주문', '거부사유내용': '', '채권매수일': '', '거래세과세구분내용': '', '현금신용대용구분내용': '', '주문입력매체코드내용': 'C8', '정정취소가능수량': 0, '매매구분': '매수'}, {'상품관리구분코드': '10', '주문번호': 6099, '원주문번호': 0, '종목코드': 'A005930', '종목이름': '삼성전자', '주문내용': '정규장현금매도', '주문호가구분코드내용': '시장가', '주문수량': 10, '주문단가': 0, '총체결수량': 10, '체결수량': 10, '체결단가': 82500, '확인수량': 0, '정정취소구분내용 ': '정상주문', '거부사유내용': '', '채권매수일': '', '거래세과세구분내용': '', '현금신용대용구분내용': '', '주문입력매체코드내용': 'C8', '정정취소가능수량': 0, '매매구분': '매도'}, {'상품관리구분코드': '10', '주문번호': 6121, '원주문번호': 0, '종목코드': 'A005930', '종목이름': '삼성전자', '주문내용': '정규장현금매수', '주문호가구분코드내용': '시장가', '주문수량': 10, '주문단가': 0, '총체결수량': 10, '체결수량': 10, '체결단가': 82500, '확인수량': 0, '정정취소구분내용 ': '정상주문', '거부사유내용': '', '채권매수일': '', '거래세과세구분내용': '', '현금신용대용구분내용': '', '주문입력매체코드내용': 'C8', '정정취소가능수량': 0, '매매구분': '매수'}]}

퀀티랩 systrader 프로젝트에서 전반적인 시스템 트레이딩 코드를 공개하고 있습니다. 앞으로 시스템 트레이딩에 필요한 주요 기능들을 퀀티랩 Github systrader 리포지토리에서 오픈소스로 개발해 나갈 예정입니다.

SysTrader의 주요 TODO 태스크는 다음과 같습니다.

  • 주요 시스템 트레이딩 기능 구현
  • 딥러닝 모델 기반 자동 매매
  • PyQt5 기반의 GUI 개발
  • 매매 현황 리포팅

관심 있으신 모든 분들께서 이 프로젝트에 참여해 주시면 감사하겠습니다. SysTrader는 모든 개미들을 위한 견고한 시스템 트레이딩 솔루션이 되는 것을 목표로 합니다.

2021년 신규 상장 공모주

2021년은 많은 대어급 기업들의 IPO(기업공개, initial public offering)가 예정되어 있습니다. 며칠 전 있었던 SK아이이테크놀로지의 청약은 엄청난 흥행으로 마쳤습니다. 확정 공모가는 105,000원이고 청약 경쟁률은 288:1에 달했습니다.

이번 포스트에서는 2021년에 공모일정이 나와있고 앞으로 공모가 예정되어 있는 기업들을 알아보겠습니다.

다음 표는 공모일정이 나와있는 기업들 입니다. SK바이오사이언스SK아이이테크놀로지가 엄청난 흥행으로 공모를 마친 바 있습니다.

종목명신규상장일공모시작공모종료희망공모가확정공모가청약경쟁률
아모센스202106152021061613,300~16,300
엘비루셈20210611202106022021060312,000~14,000
에이디엠코리아20210525202105262,900~3,300
제주맥주20210513202105142,600~2,900
진시스템202105132021051416,000~20,000
삼영에스앤씨20210511202105127,800~10,000
NH스팩19호(유가)20210511202105122,000~2,000
삼성스팩4호20210511202105122,000~2,000
샘씨엔에스20210510202105115,000~5,700
라온테크202105102021051112,800~15,800
씨앤씨인터내셔널20210517202105062021050735,000~47,500
에이치피오20210514202105032021050422,200~25,40022,200
하이스팩6호2021051020210428202104292,000~2,0002,0007.63:1
SK아이이테크놀로지(유가)20210511202104282021042978,000~105,000105,000288.17:1
쿠콘202104192021042031,000~40,00045,0001596.32:1
해성티피씨20210412202104139,500~11,50013,0002053.27:1
이삭엔지니어링20210412202104139,500~11,50011,5002262.09:1
유진스팩6호20210330202103312,000~2,0002,000236.23:1
유안타스팩8호20210325202103262,000~2,0002,00084.91:1
엔시스202103222021032313,000~16,50019,0002573.60:1
자이언트스텝20210315202103169,000~11,00011,0002342:1
제노코202103152021031627,000~33,00036,0002095.45:1
라이프시맨틱스20210311202103129,000~12,50012,5001774.57:1
SK바이오사이언스(유가)202103092021031049,000~65,00065,000335.36:1
바이오다인202103082021030922,500~28,70030,00048.36:1
디비금융스팩9호20210305202103082,000~2,0008.56:1
네오이뮨텍20210304202103055,400~6,400664.65:1
프레스티지바이오로직스20210302202103038,700~12,400126.06:1
싸이버원20210302202103037,600~8,3001880.43:1
나노씨엠에스202102252021022614,500~18,5001243.48:1
하나머스트스팩7호20210223202102242,000~2,000237.46:1
IBKS스팩15호20210218202102192,000~2,000101.73:1
뷰노202102162021021715,000~19,5001102.7:1
씨이랩202102152021021623,000~31,000195.53:1
유일에너테크202102152021021611,000~14,000683.55:1
오로스테크놀로지202102152021021617,000~21,0001033.82:1
피엔에이치테크202102032021020414,000~17,0001528.76:1
하나금융스팩17호20210129202102012,000~2,000168.68:1
아이퀘스트20210127202101289,200~10,6002853.34:1
프레스티지바이오파마(유가)202101252021012625,000~32,000237.13:1
와이더플래닛202101252021012612,000~15,0001357.98:1
레인보우로보틱스20210125202101267,000~9,0001201.26:1
신한스팩7호20210125202101262,000~2,0007.45:1
솔루엠(유가)202101212021012213,700~15,5001147.76:1
핑거202101212021012213,000~15,000939.39:1
씨앤투스성진202101192021012026,000~32,000674.04:1
모비릭스202101192021012010,500~14,0001485.51:1
선진뷰티사이언스202101182021011910,100~11,5001987.74:1
엔비티202101122021011313,200~17,6004397.67:1
한국스팩9호20210112202101132,000~2,00046.54:1

SK바이오사이언스의 경우 따상에 성공하고 이후 주가가 큰폭으로 하락했다가 일부 회복한 상태입니다. 이번 SK아이이테크놀로지도 따상할 것이란 예측이 많은 상황입니다.

기업공개가 예정된 종목들도 이렇게 많이 있습니다. 이들 중에서 특히 크래프톤, 카카오벵크, 한컴라이프케어, 아주스틸, 카카오페이에 관심이 갑니다.

기업명청구일당기순이익(백만)매출액(백만)자본금(백만)주업종
에스앤디202104307,35956,5371,518기타 식품 제조업
비트나인20210428-10,22611,5764,110응용소프트웨어 개발 및소프트웨어
에이비온20210428-10,4761,9947,168자연과학 및 공학 연구개발업
라이콤202104273,47530,6041,469통신 및 방송 장비 제조업
차백신연구소20210426-6,2407811,194의약품 제조업
카카오페이(유가)20210426-25,051284,37156,683기타 금융업
리파인2021042316,06754,1641,300부동산 중개, 자문 및 감정평가업
바이오플러스202104239,70324,3676,239기초 의약물질 및 생물학적 제제
실리콘투202104235,71699,3984,214상품 종합 도매업
와이엠텍202104233,86617,0372,387전동기, 발전기 및 전기 변환 ·
엠로202104233,38940,3022,687소프트웨어 개발 및 공급업
아주스틸(유가)2021042211,709569,79411,2261차 철강 제조업
한컴라이프케어(유가)2021041627,690151,8423,937기타 의료용 기기 제조업
원티드랩20210416-9,17414,6481,988소프트웨어 개발 및 공급업
카카오뱅크(유가)20210415113,636804,1572,048,251은행 및 저축기관
브레인즈컴퍼니202104153,73414,8291,742시스템 소프트웨어 개발 및 공급업
엑셀세라퓨틱스20210413-10,1245404,368의료용품 및 기타 의약 관련제품
바이젠셀20210409-10,45503,772의약품 제조업
크래프톤(유가)20210408556,2671,670,4274,278소프트웨어 개발 및 공급업
일진하이솔루스(구.일진복합소재)(유가)2021040715,579113,52514,525기타 운송장비 제조업
큐라클20210401-28,61005,657자연과학 및 공학 연구개발업
플래티어202103312,68539,3763,207소프트웨어 개발 및 공급업
에브리봇20210330-90249,1652,614가정용 기기 제조업
오에스피202103223,31315,5673,458동물용 사료 및 조제식품 제조업
맥스트20210309-8,9211,9833,751소프트웨어 개발 및 공급업
루켄테크놀러지스20210204-1,49132,6675,494기타 전기장비 제조업
셀비온20210204-3,5183504,434의약품 제조업
에스디바이오센서(유가)202101261,39973,72846,659의료용 기기 제조업
레몬헬스케어20201228-22,3652,0424,458소프트웨어 개발 및 공급업
딥노이드20201214-8,6062352,156소프트웨어 개발 및 공급업
디앤디파마텍20201013-6,42104,018자연과학 및 공학 연구개발업

특히 크래프톤, 카카오뱅크의 경우 각각 5,500억, 1,100억의 당기순이익을 기록하고 있는 만큼 현재도 이익이 높은 회사라 청약 공모 시 엄청난 경쟁이 예상됩니다. 남아있는 IPO들 잘 챙겨서 수익 얻으시길 응원합니다.

대신증권 크레온 API로 실시간 주가 데이터 받기

이번 포스트에서는 대신증권 크레온 API를 이용한 실시간 주가를 획득하는 방법을 다룹니다. 여느 때와 같이 언어는 파이썬으로 진행합니다.

크레온 API는 문서화가 비교적 잘되어 있고 사용성이 좋습니다. [증권사 API 장단점 비교][/htsapi.html] 포스트에서 주요 증권사 API의 장단점을 비교해 놓았으니 참고하시기 바랍니다.

실시간 주가를 얻어오기 위한 모듈은 Dscbo1.StockCur이며 이에 대한 문서는 여기에서 확인할 수 있습니다.

실시간 데이터는 Publish/Subscribe 방식으로 데이터를 획득합니다. 크레온에서 실시간 주가 데이터를 발행(Publish)하고 사용자는 실시간 주가를 원하는 종목을 구독(Subscribe)합니다. 사용자는 크레온이 발행한 데이터를 콜백(callback)을 통해 받습니다.

그럼 파이썬으로 실시간 주가 데이터를 구독하는 함수와 데이터를 획득하는 콜백 함수를 구현해 보겠습니다.

import win32com.client
class Creon:
def __init__(self):
self.stockcur_handlers = {} # 주식/업종/ELW시세 subscribe event handlers
def subscribe_stockcur(self, code, cb):
if not code.startswith('A'):
code = 'A' + code
if code in self.stockcur_handlers:
return
obj = win32com.client.Dispatch('DsCbo1.StockCur')
obj.SetInputValue(0, code)
handler = win32com.client.WithEvents(obj, StockCurEventHandler)
handler.set_attrs(obj, cb)
self.stockcur_handlers[code] = obj
obj.Subscribe()
def unsubscribe_stockcur(self, code=None):
lst_code = []
if code is not None:
if not code.startswith('A'):
code = 'A' + code
if code not in self.stockcur_handlers:
return
lst_code.append(code)
else:
lst_code = list(self.stockcur_handlers.keys()).copy()
for code in lst_code:
obj = self.stockcur_handlers[code]
obj.Unsubscribe()
del self.stockcur_handlers[code]
class StockCurEventHandler:
def set_attrs(self, obj, cb):
self.obj = obj
self.cb = cb
def OnReceived(self):
item = {
'code': self.obj.GetHeaderValue(0),
'name': self.obj.GetHeaderValue(1),
'diffratio': self.obj.GetHeaderValue(2),
'timestamp': self.obj.GetHeaderValue(3),
'price_open': self.obj.GetHeaderValue(4),
'price_high': self.obj.GetHeaderValue(5),
'price_low': self.obj.GetHeaderValue(6),
'bid_sell': self.obj.GetHeaderValue(7),
'bid_buy': self.obj.GetHeaderValue(8),
'cum_volume': self.obj.GetHeaderValue(9), # 주, 거래소지수: 천주
'cum_trans': self.obj.GetHeaderValue(10),
'price': self.obj.GetHeaderValue(13),
'contract_type': self.obj.GetHeaderValue(14),
'cum_sellamount': self.obj.GetHeaderValue(15),
'buy_sellamount': self.obj.GetHeaderValue(16),
'contract_amount': self.obj.GetHeaderValue(17),
'second': self.obj.GetHeaderValue(18),
'price_type': chr(self.obj.GetHeaderValue(19)), # 1: 동시호가시간 예상체결가, 2: 장중 체결가
'market_flag': chr(self.obj.GetHeaderValue(20)), # '1': 장전예상체결, '2': 장중, '4': 장후시간외, '5': 장후예상체결
'premarket_volume': self.obj.GetHeaderValue(21),
'diffsign': chr(self.obj.GetHeaderValue(22)),
'LP보유수량':self.obj.GetHeaderValue(23),
'LP보유수량대비':self.obj.GetHeaderValue(24),
'LP보유율':self.obj.GetHeaderValue(25),
'체결상태(호가방식)':self.obj.GetHeaderValue(26),
'누적매도체결수량(호가방식)':self.obj.GetHeaderValue(27),
'누적매수체결수량(호가방식)':self.obj.GetHeaderValue(28),
}
self.cb(item)

이렇게 Creon 클래스에 실시간 주가를 구독하는 함수인 subscribe_stockcur와 구독을 취소하는 unsubscribe_stockcur 함수를 구현했습니다. subscribe_stockcur 함수에서 발행되는 주가 데이터를 처리하기 위한 StockCurEventHandler 클래스를 이어서 정의하였습니다.

subscribe_stockcur 함수에서 구독하는 종목마다 StockCurEventHandler를 할당해 주었습니다. 크레온이 주식 데이터를 발행하면 StockCurEventHandlerOnReceived 함수가 호출됩니다.

여기서 필요한 데이터를 획득할 수 있습니다. 여기서는 이렇게 획득한 데이터를 StockCurEventHandler 객체를 생성할 때 인자로 넘겨준 cb 함수로 전달하고 있습니다.

다음과 같이 종목명과 가격을 출력하는 간단한 cb 함수를 선언하고 NAVER와 미래에셋증권 두 종목의 실시간 주가를 구독해 보았습니다.

from quantylab.systrader.creon import Creon
c = Creon()
def cb(item):
print(item['name'], item['price'])
c.subscribe_stockcur('035420', cb)
c.subscribe_stockcur('006800', cb)
# ...
c.unsubscribe_stockcur()

그러면 이런식으로 종목명과 주가가 출력되는 것을 볼 수 있습니다.

NAVER 389500
미래에셋증권 9990
미래에셋증권 10000
NAVER 390000
NAVER 389500
NAVER 389500
미래에셋증권 9990
NAVER 389500
NAVER 389500
미래에셋증권 9990
미래에셋증권 9990
미래에셋증권 9990
미래에셋증권 10000
미래에셋증권 9990
NAVER 390000
NAVER 389500
NAVER 389500
미래에셋증권 9990

퀀티랩 systrader 프로젝트에서 실시간 주가 확인 외에도 다양한 크레온 API 기능을 연결하고 있습니다. 퀀티랩 Github systrader 리포지토리에서 전체 코드를 확인할 수 있습니다. 문의는 이 리포지토리 이슈로 또는 네이버 카페로 주세요.

파이썬으로 DART에서 재무제표 수집하기

이번 포스트에서는 전자공시시스템(DART)에서 제공하는 재무제표를 파이썬으로 다운로드하고 파싱하는 방법을 다룹니다.

DART에서 재무제표를 얻어오는 방법은 다양한데 여기서는 두 가지 방법을 다룹니다.

첫 번째로 단일회사 주요계정 API를 활용한 방법입니다.

DART Open API를 사용하려면 인증키가 필요합니다. 인증키 획득 방법은 이 포스트에서 확인하세요.

다음은 단일회사 주요계정 API를 호출하여 재무제표 정보를 획득하는 함수 입니다. 인증키, 회사 고유번호, 사업연도, 보고서 코드를 입력하여 재무제표를 받아올 수 있습니다.

def get_fs(crtfc_key, corp_code, bsns_year, reprt_code):
# 단일회사 주요계정
# crtfc_key API 인증키 STRING(40) Y 발급받은 인증키(40자리)
# corp_code 고유번호 STRING(8) Y 공시대상회사의 고유번호(8자리)
# ※ 개발가이드 > 공시정보 > 고유번호 API조회 가능
# bsns_year 사업연도 STRING(1) Y 사업연도(4자리)
# ※ 2015년 이후 부터 정보제공
# reprt_code 보고서 코드 STRING(5) Y 1분기보고서 : 11013
# 반기보고서 : 11012
# 3분기보고서 : 11014
# 사업보고서 : 11011
api = 'https://opendart.fss.or.kr/api/fnlttSinglAcnt.json'
params = {
'crtfc_key': crtfc_key,
'corp_code': corp_code,
'bsns_year': bsns_year,
}
data = []
reprt_name = REPRT_NAMES.get(reprt_code, "")
params['reprt_code'] = reprt_code
res = self._request(api, params=params)
if res is None:
return None
if res.status_code != 200:
return None
item = json.loads(res.text)
if item.get('status', '') != '000':
return None
for _item in item.get('list'):
_item['corp_code'] = corp_code
_item['reprt_code'] = reprt_code
_item['reprt_name'] = reprt_name
data.append(_item)
return data

get_fs(crtfc_key, '00266961', 2015, '11011')와 같이 호출하면 다음과 같은 결과를 받아올 수 있습니다.

[{'account_nm': '자산총계', 'bfefrmtrm_amount': '9,881,190,909,324', 'bfefrmtrm_dt': '2018.12.31 현재', 'bfefrmtrm_nm': '제 20 기', 'bsns_year': '2020', 'corp_code': '00266961', 'frmtrm_amount': '12,299,527,120,786', 'frmtrm_dt': '2019.12.31 현재', 'frmtrm_nm': '제 21 기', ...}, {'account_nm': '부채총계', 'bfefrmtrm_amount': '3,932,050,396,031', 'bfefrmtrm_dt': '2018.12.31 현재', 'bfefrmtrm_nm': '제 20 기', 'bsns_year': '2020', 'corp_code': '00266961', 'frmtrm_amount': '5,795,601,052,206', 'frmtrm_dt': '2019.12.31 현재', 'frmtrm_nm': '제 21 기', ...}, ...]

DART Open API 재무정보 일괄 다운로드

Section titled “DART Open API 재무정보 일괄 다운로드”

두 번째는 재무정보 일괄 다운로드로 한꺼번에 전체 기업의 재무제표 데이터를 받아오는 방법입니다. Open DART 사이트에서 공시정보 활용마당 / 재무정보 일괄다운로드를 클릭하면 다음과 같은 테이블을 볼 수 있습니다.

재무정보 일괄다운로드

여기서 다운로드 하면 해당 연도와 분기의 네 종류의 재무제표를 압축파일로 다운 받을 수 있습니다. 여기서는 다운로드, 압축해제를 포함하여 파이썬에서 재무제표를 읽어오는 방법을 다룹니다.

다음은 Selenium으로 다운로드 버튼을 클릭하여 파일을 다운로드하고 압축을 해제하는 코드입니다.

options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
"download.default_directory": self.job_base,
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
browser = webdriver.Chrome(executable_path=os.path.join(settings.QUANTYLAB_BASE, 'drivers/chromedriver'), chrome_options=options)
try:
browser.get('https://opendart.fss.or.kr/disclosureinfo/fnltt/dwld/main.do')
elem = browser.find_element_by_css_selector('table.tb01')
for elem_a in elem.find_elements_by_link_text('다운로드'):
filename = re.findall(r'.*\(.*\'(.+)\'\).*', elem_a.get_attribute('onclick'))[0]
# 파일 다운로드
elem_a.click()
time.sleep(10)
# 압축파일 로드
filepath = os.path.join(base, filename)
z = zipfile.ZipFile(filepath)
for info in z.infolist():
# 한글 파일명 인코딩 수정
_filename = info.filename.encode('cp437').decode('euc-kr')
_filepath = os.path.join(base, _filename)
if os.path.exists(_filepath):
continue
info.filename = _filename
# 압축해제
z.extract(info, base)
z.close()
except Exception as e:
print(str(e))
finally:
browser.quit()

이렇게 압축해제까지 하면 2020_1분기보고서_04_현금흐름표_20210211.txt과 같은 파일들이 생성되어 있을 것입니다.

이 텍스트 파일은 다음과 같이 pandas로 쉽게 DataFrame으로 읽어올 수 있습니다. 다만 sepencoding을 다음과 같이 적절하게 정해주는 것이 중요합니다.

df = pd.read_csv(filepath, sep='\t', encoding='cp949')

여기서 당기, 당기 1분기, 당기 반기 등의 다양한 컬럼이 생기는데 저는 이들을 당기로 통합하여 정리했습니다.

다음은 포괄손익계산서의 일부 항목을 나타낸 것입니다.

항목명결산기준일보고서종류당기
영업수익2018-12-31사업보고서5,586,904,533,355
영업이익(손실)2018-12-31사업보고서942,532,561,543
당기순이익(손실)2018-12-31사업보고서627,901,873,332

그런데 재무제표를 볼 때 항목의 흐름을 보는 것이 중요합니다. 예를 들어 영업 이익이 꾸준히 증가하고 있는지를 보고 싶은 것입니다.

그래서 동일 항목에 대해서 결산기준일 순서대로 DataFrame을 재구성하고자 합니다. 이를 위해 DataFramepivot 함수를 사용합니다.

df_pivot = df.pivot(values='value', index='항목명', columns='결산기준일')

동일 항목이지만 항목명이 다르게 적혀있는 경우가 있어서 이를 맞춰주는 처리를 했습니다.

그럼 다음과 같이 동일 항목의 값을 분기 순서대로 볼 수 있습니다.

항목명2015-12-312016-03-312016-06-302016-09-302016-12-312017-03-312017-06-302017-09-302017-12-312018-03-312018-06-302018-09-302018-12-312019-03-312019-06-302019-09-302019-12-312020-03-312020-06-302020-09-30
매출액3,251,157,100,000937,280,220,152987,281,364,2951,013,075,223,7704,022,629,619,9821,082,247,281,1961,129,631,366,8471,200,676,275,2204,678,468,928,0321,309,059,864,2481,363,615,953,3321,397,713,834,6745,586,904,533,3551,510,861,770,2821,630,275,004,3951,664,815,000,0786,593,400,065,2441,732,064,462,0971,902,467,957,4911,360,779,374,259
영업이익762,203,849,000256,827,536,675272,663,961,847282,298,051,5251,102,040,475,792290,797,289,304285,213,522,180312,084,238,4441,179,187,806,331256,980,563,870250,583,189,279221,718,402,565942,532,561,543206,244,504,954128,334,709,480202,086,039,366710,070,173,513221,495,078,328230,597,573,115291,726,798,004
당기순이익516,986,279,000165,036,146,535213,223,506,226198,000,157,034759,072,951,187210,876,050,870171,420,229,303215,798,264,368770,101,670,207153,751,654,038281,758,577,70168,386,763,908627,901,873,33287,585,903,29027,756,852,97585,268,053,088396,821,062,465134,874,581,86590,682,203,810235,342,965,699

퀀티랩 단타 모델 - 딥러닝으로 내일의 주가 방향을 예측하는게 가능할까?

기존의 퀀티랩 모델은 중/장기 투자를 목적으로 하는 딥러닝 모델입니다. 이 포스트에서는 데이트레이딩(일명 단타)를 위한 모델 구축에 대해 다룹니다.

이 글은 기계학습에 대한 기초 지식을 요합니다.

단타를 독려하는 것이 아니니 오해 없으셨으면 좋겠습니다.

우선 데이트레이딩에 대해 알아봅시다. 데이트레이딩에 대한 정의는 제각각이지만 대부분 다음 원칙을 가지고 있습니다.

  • 하루 안에서 모든 거래를 마친다. (오버나잇 하지 않는다.)
  • 종목을 발굴한다.
  • 현금을 많은 비중으로 둔다. (Ex. 90% 현금 보유)
  • 목표 수익률, 손절 라인을 설정한다. (1~2%의 낮은 손익률로 잡는다.)
  • 미수는 자제한다.
  • 장이 안좋을땐 관망한다.

데이트레이딩은 많은 지표들을 보고 종목을 발굴하고 하루동안 수십, 수백번의 매매를 하면서 수익을 내기위해 노력합니다. 매매를 위해 기술적 분석이 주로 사용되는데 기술적 분석 기법은 너무나도 다양해서 나열하기도 어렵습니다.

단타에서 주요 결정 사항 중 하나인 “어떤 종목을 노릴 것인가?”를 해결하기 위한 딥러닝 모델을 구축했습니다. 모델은 파이썬으로 구축했으며 사용한 프레임워크, 라이브러리는 다음과 같습니다.

  • TensorFlow 2.4 (with Keras)
  • Scikit-learn 0.22.1

학습데이터는 약 100개의 자질과 2.5M개의 인스턴스로 구성했습니다. 지도학습(Supervised Learning)으로 레이블(label)은 다음 거래일의 등락률의 sigmoid로 정했습니다. 그 수식은 다음과 같습니다.

y = sigmoid(next_close / today_close - 1)

자질들은 자세히 다루기 어렵지만 크게 다음 종류의 자질군으로 구성됩니다.

  • 종목 주가
  • 종목의 기본적 분석 지표
  • 종목의 기술적 분석 지표
  • 국내 주식 시장 지수
  • 해외 주식 시장 지수
  • 주요국 환율
  • 원자재 가격
  • … (기타 등등)

자질 값들의 스케일(Scale)이 달라서 Standardization 했습니다. 세 가지 스케일러(Scaler)를 시도해 봤는데 그 중에서 Robust Scaler를 채택했습니다.

신경망 아키텍처는 기본적인 Dense(Fully Connected) Layer를 다음과 같이 쌓았습니다.

model = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation='linear'),
tf.keras.layers.Dense(128, activation='linear'),
tf.keras.layers.Dense(64, activation='linear'),
tf.keras.layers.Dense(1, activation='sigmoid'),
])

이렇게 마지막 레이어의 활성화 함수(Activation Function)을 Sigmoid로 정해서 0과 1사이의 값으로 Prediction 하도록 했습니다. 직관적으로는 Prediction 값이 0.5 이상(초과)이면 내일 오늘보다 주가가 오를 것이라 판단하는 것이고 0.5 이하(미만)이면 주가가 내릴 것이라 판단하는 것입니다.

이렇게 학습한 모델로 테스팅 데이터를 넣어서 내일의 주가 방향을 얼마나 잘 맞추는지 알아보았습니다. 테스팅 데이터는 20210101~20210305 동안의 인스턴스이며 당연히 학습 데이터에 없는 인스턴스들 입니다.

Prediction 값을 score라고 하겠습니다. score가 0.5, 0.6, 0.7, 0.8, 0.9 이상일 때의 Accuracy를 다음과 같이 확인했습니다.

  • score 0.5 이상: 313,319개 인스턴스에서 정확도 57.99%
  • score 0.6 이상: 51,390개 인스턴스에서 정확도 68.81%
  • score 0.7 이상: 10,962개 인스턴스에서 정확도 84.22%
  • score 0.8 이상: 3,864개 인스턴스에서 정확도 89.73%
  • score 0.9 이상: 113개 인스턴스에서 정확도 49.56%

1

Score가 마냥 높다고 정확도가 높아지는 것은 아니였습니다. 0.8 까지는 높아지다가 0.9 이상에서는 정확도가 오히려 급격하게 감소했습니다. 정확도가 가장 높은 범위를 찾아봤습니다.

Score 0.83 이상 0.835 미만의 295개 인스턴스에서 정확도 94.58%를 얻을 수 있었습니다.

2

여기에 포함된 Score Top 50 종목들은 다음과 같습니다.

동전주, 거래대금이 적은 종목은 제외(Filter Out)했습니다.

datenameclosescorediffratio_nextday
20200325삼강엠앤티2,3200.8350-0.43%
20200324E123,6500.83508.03%
20200325휴비스3,6250.83501.10%
20200325미창석유공업47,8500.83491.78%
20200409빙그레54,2000.8349-0.55%
20200323엘티씨5,1300.83498.38%
20200325갤럭시아머니트리1,9250.83490.78%
20200325한솔제지9,0000.83492.89%
20200325KC그린홀딩스2,5950.83495.97%
20200325이월드2,7300.834828.21%
20200325푸른기술5,9440.83475.82%
20200325신화인터텍1,6550.83478.76%
20200619아진엑스텍4,1230.83473.10%
20200325신세계건설16,4500.83478.81%
20200325애니플러스1,0300.83464.85%
20200323노랑풍선5,7200.83465.77%
20200325미래에셋생명2,5700.83469.14%
20200323유티아이7,0600.83467.51%
20200325스카이이앤엠1,5050.83451.33%
20200422코오롱생명과학41,1000.83453.53%
20200324디와이2,5000.83449.60%
20200325HSD엔진2,2200.83443.60%
20200325가온전선12,1000.83436.20%
20200325슈피겐코리아32,3000.8343-2.94%
20200323동국S&C1,1950.834310.88%
20200325케이씨티1,2100.83437.02%
20200325태림포장2,4550.83424.07%
20200325서플러스글로벌1,2500.83422.00%
20200325태웅4,2200.8342-1.66%
20200324노랑풍선6,0500.834210.74%
20200323일진다이아11,0000.834217.27%
20200324일진디스플1,8920.834111.89%
20200325하나마이크론3,7250.83416.58%
20200325파워넷2,2400.83414.69%
20200325홈캐스트2,4000.83403.12%
20200325유니온1,9400.83402.06%
20200325SCI평가정보1,4550.83404.12%
20200325우노앤컴퍼니2,5150.834029.82%
20200325화승알앤에이1,3000.83393.08%
20200324웨이브일렉트로8,5630.833914.56%
20200325잇츠한불9,5300.83398.60%
20200325파인디앤씨1,0000.83385.50%
20200323서연1,5550.833829.90%
20200323화신1,3900.83384.68%
20200325신도리코21,2000.83370.94%
20200323큐렉소2,4600.83376.71%
20200325휴스틸4,8050.83374.06%
20200325예림당1,7500.83379.71%
20200325빛샘전자3,2200.83376.21%
20200325정원엔시스1,0700.833714.02%

그럼 어제(20210304)의 상위 종목들 살펴보겠습니다.

datenameclosescorediffratio_nextday
20210304일양약품35,0000.6188-1.14%
20210304수산아이앤티28,5500.5753-5.43%
20210304대한그린파워1,4000.55327.50%
20210304진양산업4,3650.51960.46%
20210304이녹스11,0000.51742.27%
20210304인지컨트롤스18,6000.5040-3.23%
20210304웅진씽크빅2,6350.49853.04%
20210304세원셀론텍1,9950.4923-1.50%
20210304기가레인1,8250.4921-1.37%
20210304파루1,4500.49170.69%

최근 장이 안좋아서 그런지 Score 가장 높은게 0.6 정도입니다. 그럼 오늘 날짜의 Score 상위 종목에는 어떤 종목들이 있을까요?

datenameclosescore
20210305팬엔터테인먼트7,6700.8676
20210305풍강3,9900.8056
20210305중앙에너비스9,2000.5439
20210305플리토13,9000.5383
20210305한국주강1,7800.5381
20210305일양약품34,6000.5241
20210305극동유화3,4750.5151
20210305한일진공1,0400.5141
20210305인성정보2,3150.5056
20210305텔콘RF제약5,2700.4999

다음 거래일에 이 종목들이 어떤 움직임을 보일지 지켜보면 재미있을 것 같습니다.

어디까지나 투자는 본인이 결정하는 것입니다. 퀀티랩에서 제공하는 정보는 참고만 하시길 당부드립니다.

[2021-02-26] 딥러닝 모델 종목추천

퀀티랩 AI 주식 종목 랭킹 모델을 개선했습니다. 다양한 자질을 추가했고 학습 방식도 많이 변경했습니다. 백테스팅 결과 기존의 모델에 비해 더 나은 결과를 얻을 수 있었습니다.

특이 사항으로 거래 대금이 적은 종목에 약간의 패널티를 부여했습니다. 너무 거래가 적은 종목들은 피하자는 의도입니다.

개선한 모델의 2021년 2월 26일자 상위 랭크 종목들은 다음과 같습니다.

1

이들 중에 특히 주가가 많이 내려와 있는 KT&G, 한국전력이 눈에 뜁니다.

매일 업데이트 되는 랭킹 결과를 퀀티랩에서 확인하세요. 퀀티랩 AI 매매내역 페이지에서는 퀀티랩 AI의 수익률 차트, 현재 보유 종목, 매매 내역을 볼 수 있습니다.

요증 인플레이션 우려와 함께 미국 금리 인상이 앞당겨질 수 있다는 추측이 많아서 주식 시장이 좋지 않습니다. 잘 대응하셔서 성투하세요.

어디까지나 투자는 본인이 결정하는 것입니다. 퀀티랩에서 제공하는 정보는 참고만 하시길 당부드립니다.