전체 글 61

한국투자증권 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개를 한 번에 학습시키는 방법이라 상당히 어려운 방법이다. 특히 가치함수의 불안정성이 학습에 영향을 미쳐 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는 순차적으로 진행이 되고, 최근의 경험들은 서로 연관성을 가질 수..

RL 기초 개념 정리

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

한국투자증권 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

해석 가능한 신경망 (Interpretable Neural Network)

안녕하세요! 오늘은 '해석 가능한 신경망'에 대해 알아보는 시간을 가져볼까 합니다. 머신러닝에 관심이 많은 분들이라면 한 번쯤 들어보셨을 이야기인데요. 왜 해석 가능한 신경망이 필요한가요? 머신러닝 모델, 특히 딥러닝 모델은 '블랙박스'라는 별명이 있죠. 이는 모델의 내부 동작 방식이 복잡하고 불투명하기 때문입니다. 하지만 이런 불투명성은 신뢰성 저하를 가져오며, 오류 발생 시 원인 분석을 어렵게 만듭니다. 특히 의료, 금융 등과 같이 중요한 분야에서는 심각한 문제를 일으킬 수 있죠. 그래서 '왜' 그런 결과가 나왔는지 이해하고 설명할 수 있는 '해석 가능한 신경망'이 필요하게 되었습니다. 해석 가능한 신경망을 어떻게 만드나요? 해석 가능한 신경망을 만드는 방법에는 여러 가지가 있습니다. 대표적으로 fe..

데이터를 수식으로 변경! Symbolic Regression 이란?

Intro AI는 많은 데이터와 큰 모델을 사용하며 발전을 이루어왔습니다. 하지만 항상 black-box라는 한계로 신뢰하지 못한다는 치명적 단점을 가지고 있습니다. 최근에는 많은 데이터를 학습한 덕분에 좋은 성능을 내는 Large language model(LLM)이 많이 공개되고 있지만 여전히 엉뚱한 답변을 내놓는 hallucination이 나타나는 경우가 많이 있습니다. 이런 문제를 해결하기 위해 interpretable AI에 대한 연구가 많이 이루어지고 있습니다. 이번 글에서는 그중 한 갈래인 symbolic regression에 대해 소개하려고 합니다. Symbolic Regression 이란? Symbolic regression은 input x, output y에 대한 set이 있을 때 이 ..