반응형

전체 글 66

한국투자증권 OpenAPI 사용하기(2) - KIS Developers

지난 글에서는 한국투자증권의 api를 쉽게 사용할 수 있게 만들어진 mojito 사용법을 알아보았습니다. 하지만 아쉽게도 mojito에 모든 기능들이 다 구현되어 있지는 않아서 추가로 필요한 기능들은 스스로 추가해 주어야 합니다. 그래서 이번에는 현재(2024/02/25) mojito 버전(0.1.6)에 구현되어 있지 않은 기능을 추가하는 방법을 알아보겠습니다. 그러기 위해서는 먼저 mojito를 가상환경에 설치해 주시고, KIS developers에 접속하시면 됩니다. 이번 글에서는 '호가 정보'와 '주문 체결 조회'를 하는 메서드를 추가해 보겠습니다. 우선 호가 정보를 불러오는 함수를 먼저 만들어보겠습니다. API 문서의 국내주식시세->주식현재가 호가/예상 체결에 들어가 보면 호가 정보를 불러오는 u..

퀀트투자 2024.02.25

PPO paper 리뷰

Proximal Policy Optimization (PPO ([1]))는 OpenAI에서 작성한 논문으로 현재(2023년 12월)까지도 많이 사용되는 안정적인 알고리즘이다. 앞서 리뷰했던 TD3([2]) 글에서 말했던 것처럼 actor-critic 방법은 GAN과 같이 network 2개를 한 번에 학습시키는 방법이라 2개의 상당히 어려운 방법이다. 특히 가치함수의 불안정성이 학습에 영향을 미쳐 TD3에서도 이를 해결하기 위해 가치함수를 더 많이 학습하는 방법을 사용한다. PPO는 on-policy로 정책을 업데이트하면서 안정적으로 actor-critic을 학습할 수 있는 방법을 제안한다. PPO는 TRPO(Trust Region Policy Optimization ([3])) 방법을 근사하여 푼 방법..

TD3 paper 리뷰

TD3 (Addressing function approximation error in actor-critic methods ([1])) TD3라고 알려진 방법은 Double-Q learning에서 network를 2개 만들어 maximization bias를 피하는 방법을 쓰는 것이 이전 글에서 소개한 DDQN에서 target network를 학습 network에서 복사해서 사용하는 것보다 좋다고 주장한다. 하지만 기존처럼 Q-learning이 아닌 Actor-critic을 전제로 한다. 저자는 Actor-critic에는 overestimation bias와 가치함수 추정치의 분산 문제가 있어 학습을 불안정하게 만든다고 주장한다. 실제 실험 결과를 보면, DDPG 알고리즘도 overestimation b..

DQN 부터 DDPG 까지 정리

DQN (Deep Q Learning [1]) DQN은 sensory input (image 등)으로부터 정책을 곧바로 배우는 첫 번째 심층강화학습 모델이다. 그만큼 강화학습 분야에서 근본이 되는 논문이다. 여러 방법을 사용해서 기존에 있던 문제들을 해결하여 좋은 성능을 낸 논문이다. DQN이 해결한 3가지 문제. 1) Sensory input을 RL agent에 적용. 기존에는 차원의 저주 때문에 이미지나 시그널 등의 데이터를 RL에 사용하기 어려웠다. 하지만 DQN이 나오기 전 AlexNet과 같은 잘 작동하는 CNN이 등장한 때라 이 문제를 해결할 수 있었다. 2) Experience replay를 활용해 샘플 간 시간적 연관성을 줄임. MDP는 순차적으로 진행이 되고, 최근의 경험들은 서로 연관성..

퀀트 리밸런싱 테스트: 시가에 살까 종가에 살까?

최근 퀀터스를 사용해서 백테스트를 진행해 보다가 직접 돌려보고 싶어서 전략에 대한 past history 데이터를 받아서 실험을 해보았습니다. 그러다 발견한 재미있는 사실을 공유하고자 글을 작성했습니다. 우선 전략은 성장+가치 소형주(PER, PSR, POR, PGPR, 순이익, 영업이익, 매출총이익, 매출액), 성장+가속 성장 소형주( 순이익, 영업이익, 매출총이익, 매출액) 2가지를 사용해서 진행해 보았습니다. 기간은 최근 10년만 보기 위해 2013년 1월부터 진행했습니다. 리밸런싱은 월별로 진행하였습니다. 초기 자금은 100원으로 설정했고 (편의를 위해) 세금이나 수수료 등을 고려하지 않았습니다. 퀀트는 리밸런싱을 진행하는데 이 리밸런싱은 시가 or 종가 언제 진행하는 것이 좋을까? (월별 첫 거..

퀀트투자 2023.12.01

RL 기초 개념 정리

RL을 공부하다 나오는 개념들을 따로 공부하다 보면 궁금한 것들이 생기고 앞의 내용들을 다시 살펴보곤 하는데, 그러면서 찾아본 내용과 알게 된 내용들을 흐름에 맞게 간단히 정리해 보았다. 환경(에 대한 정보)을 아는가 모르는가. Model based 방법: 환경에 대한 정보를 알고 있는 경우 (예를 들면 오목 게임 같은 경우 내가 어떤 수를 두었을 때 미래에 펼쳐질 경우의 수들을 계산 가능한 것과 같은 경우) 사용하는 방법이나 현실에서는 거의 없으므로 이 방법은 사용하기 어려움. (근사하는 방법도 있으나 부정확할 경우 오류가 커질 수 있음.) Model free 방법: 환경에 대한 정보를 모르는 경우 사용되며, 현실에 적용하기 적합하다. 그러므로 대부분의 알려진 방법들이 이에 해당한다. Model fre..

도파민과 투자 마인드

우연히 보게 된 도파민과 시간의 흐름에 대한 유튜브([1])를 보며 배운 것들과 느낀 점을 작성해 보았습니다. 우리가 나이를 먹을수록 시간이 빨리 간다는 인식은 뇌 과학적 관점으로 설명됩니다. 어린 시절에는 새로운 경험이 많아 시간이 천천히 흐르는 느낌을 준다고 합니다. 각 순간이 참신하고 새롭게 느껴져 시간의 인식을 늘려주는데 반해, 우리가 성숙해지고 경험이 쌓이게 되면서, 반복적인 일상이 우리의 삶을 지배하면서 시간을 빨리 흘러갔다고 느껴지게 만듭니다. 저도 매일 회사->집->회사를 무한 루프 돌며 살아가고 있는 현재, 시간이 매우 빠르게 흘러갔다고 느껴집니다. 영상에서 보면 도파민이 시간적 경험에서 중요한 역할을 한다고 합니다. 불확실한 세상에서 우리의 뇌는 예측과 일치하는 결과가 나올 때 도파민을..

퀀트투자 2023.11.09

한국투자증권 OpenAPI 사용하기(1) - mojito

자동 매매 프로그램을 만들기 위해 다양한 증권사의 API를 사용한 적이 있습니다. 키움, 대신, 이베스트 등을 사용했었는데, 사용하기 쉬운 느낌은 아니었습니다. 사용해 본 적도 없는 PyQT나 이벤트 처리 등을 하는 게 낯설어 처음엔 좀 헤매기도 했습니다. 그런데 드디어 한국투자증권이 Rest API 기반의 오픈 API 서비스를 제공하기 시작했습니다. 이를 모히토(mojito) ([1])라는 라이브러리로 사용하기 쉽게 만들어 주신 고마운 분도 계십니다. 이 라이브러리를 사용하면 파이썬 기초만 아시는 분들도 자동 매매 프로그램을 만들 수 있을 정도로 좋아 보여 이를 활용해서 퀀트 투자를 할 수 있는 방법에 대해 알아보겠습니다. 당연히 한투증권의 api를 사용하기 위해서는 계좌 개설 및 open api를 사..

퀀트투자 2023.11.04

일봉 데이터를 주봉, 월봉으로 변환하기 (with python)

FinanceDataReader([1]) 라이브러리를 사용하면 다양한 주식 혹은 index 등에 대한 일봉 데이터를 가져오기 쉽습니다. 하지만 투자를 할 때 주봉, 월봉도 고려하고 싶어 집니다. 이를 위해 python을 사용해 일봉 데이터를 변환하는 방법을 알아보겠습니다. 주가 데이터는 보통 dataframe 으로 나타내고, python에는 이를 처리하기 위한 pandas라는 강력한 툴이 있습니다. 이 pandas에는 resample([2])이라는 강력한 method도 있습니다. 이 method 에는 'rule'이라는 변수를 넣어야 하는데, 데이터를 resample 할 기준에 대한 값으로, 'Y', 'M', 'W', 'D', 'H', 'T'(min) 등이 들어갈 수 있습니다. 예를 들어 'W'로 값을 넣..

퀀트투자 2023.10.28

대신증권 API로 데이터 가져오기 (분봉, 일봉) with python

퀀트 혹은 백테스팅을 위해서는 과거 주가 데이터는 필수입니다. 이를 수집하기 위한 많은 방법이 있는데, 일봉 데이터를 얻으려면 FinanceDataReader([1])를 사용하여 일봉 데이터를 가져오는 방법이 가장 간단해 보입니다. 하지만 분봉 수준의 데이터는 증권사 api를 사용해야 합니다. 키움, 이베스트, 대신 증권 등에서 모두 이를 지원하는데 대신 증권에서 제공하는 api가 가장 많은 데이터를 가져올 수 있어 이를 이용하여 가져와보겠습니다. 1) 우선 대신증권 api를 이용하는 만큼 CYBOS Touch 어플에서 비대면 계좌개설을 해야하고, 정회원 ID 등록도 마쳐야 합니다. (https://www.creontrade.com/g.ds?m=2222&p=2015&v=2885 페이지 참조). ID 등록..

퀀트투자 2023.10.28
반응형