오늘은 퀀트와 관련된 많은 기업들에서의 주요업무인 HFT의 개념과 특징에 대해 심도있게 알아보았다.

 

 

 

[ 개념 ]

 

High - Frequency Trading : 고빈도 매매

 

수학적 모델을 활용하여 시장에서 이익을 얻기위한 차익거래전략을 세우고 한 초 이하 단위의 알고리즘 트레이딩 형태의 매매를 의미한다.

소위 '밀리초단타'를 의미하는 것 같다.

일반적으로 고성능 컴퓨터로 프로그램을 사용하여 빠른속도로 거래를 실행하고, 알고리즘은 시장 데이터를 분석하고 몇 분의 1초 안에 거래를 실행하도록 설계되어있다. 이를 통해, 매우 작은 가격의 차이를 이용하여 대량의 거래에서 이익을 얻는것을 목표로 한다.

 

 

 

 

 

[ 추가개념 ]

 

DMA (Direct Market Access)

* 투자자가 주식 및 파생상품 주문 시, 증권사의 주문처리 적정성 점검을 간소화하여 자동으로 거래소에 주문이 전달하는 방법을 의미

-> 즉, 주문 방식이 브로커(증권사)의 실질적 브로커가 주문대행 개입없이 자동으로 거래소에 전달한다.

* 경유하지 않고 다이렉트로 주문하기 때문에 투자자의 경우 주문처리가 유연하고 속도가 향상된다.

* 고객 주문의 기밀이 보장되고, 거래비용이 절감되는 효과가 있다.

* 세계적으로 금융IT가 본격화되면서 뉴욕거래소, 런던거래소, 도쿄거래소 등 60여개 거래소에서 DMA를 허용하고 있다. 국내에서는 지난해 6월말 기준 증권 및 선물사 50개사가 DMA를 이용한 매매주문 서비스를 고객에게 제공하고 있다.

 

 

홈트레이딩시스템(HTS) 

* 증권사를 거쳐 주문이 체결되는 시스템 -> DMA과는 다른 개념 

 

 

 

 

 

[ HFT 특징 ]

* 고성능 컴퓨터로 매우 짧은 시간안에 대용량의 트랜잭션을 발생시키므로, 이 안에 시장상황을 분석하고 이에 맞추어 주문을 하기 위한 복잡한 알고리즘을 필요로 한다.

* 방대한 양의 시장데이터를 처리하고 밀리초 단위로 거래를 실행한다.

* 정교한 알고리즘은 HFT의 중요한 구성요소이다. 변화하는 시장 상황에 지속적으로 적응하기 위해서는 머신러닝 기술이 융합되어야 한다.

* 일반적으로 HFT는 높은 회전율과 높은 주문/체결 비율을 보인다.

* 시장에 유동성을 공급하고 작은 매수-매도호가 간의 차이(Bid-Ask Spread)들을 단숨에 제거한다.
-> 즉, HFT로 인해 Bid-Ask Spread는 증가하게 된다.

* HFT로 좋은 성과를 내는 기업에는 Tower Research, Citadle LLC, Virtu Financial 사 등이 있다.

* 경쟁업체보다 빠른 속도로 거래를 수행하고 금융시장에서 경쟁 우위를 확보하기 위해서 고속 데이터 피드 및 낮은 지연시간의 거래플랫폼과 같은 최첨단 기술에 많은 투자가 필요하다.

 

 

 

 

[ HFT 장점 ]

HFT의 주요 장점은 빠른 속도로 거래를 수행할 수 있다.

이를 통해 작은 가격 변동의 차익을 이용하여 대량의 거래에서 이익을 창출한다.

시장의 유동성을 제공할 수 있으며, 다른 시장 참여자들의 거래비용을 줄이는 데 도움이 될 수 있다.

탁월한 알고리즘 개발에 성공한다면 변화하는 시장에 적합하게 대응이 가능하다.

 

 

 

 

[ HFT 리스크 ]

HFT알고리즘은 매우 복잡하며 결함이나 오류에 취약할 수 있다.

또한 HFT가 작동하는 속도는 규제기관이 모니터링하고 제어하는 것을 어렵게 할 수 있다.

 

 

 

 

[ 시장에 미치는 영향 ]

금융 시장에서 시장의 유동성을 증가시키고 매수-매도호가 간의 차이(Bid-Ask Spread)를 감소시킨 공로를 인정받았다.

한편, 시장의 변동성을 크게 만들고, 시장이 불안정한 시기에 이를 더욱 악화시키는 역할을 할 수 있다.

 

 

 

 

 

 

[ 생각 정리 ]

HFT가 뭔지 자세히 알아보지 않고 이것을 도입하여 개인프로젝트를 해봐야겠다고 생각했던 내가 부끄러웠다.

고성능컴퓨터로 복잡한 알고리즘을 사용한 밀리초단타라니..

하지만 밀리초까진 아니더라도 파이썬으로 나만의 전략을 만들어, 초단타로 간단히 구현해볼 수 있을 것 같다.

초단타로 자동매매봇을 만들어, "이런식으로 돌아가는구나.." 하는 전체적인 파이프라인을 몸소 익혀보려고 한다.

 

오늘은 새로 시작할 AI , 알고리즘 트레이딩 프로젝트의 방향을 설정하려고 한다.

 

저번 포스팅에선 내가 되고자하는 퀀트에 대해 알아보았고 나의 생각을 적어보았다.

https://jayindustry.tistory.com/58

 

[AI트레이딩] AI퀀트의 개념과 나의 생각

오늘은 AI 퀀트와 관련된 프로젝트를 진행하기 앞서, 퀀트에 대한 관련 개념들을 알아보고자 한다. 미래 내가 되고싶은 유망한 퀀트 트레이더가 되기 앞서 관련된 다양한 경험들을 많이 쌓아야

jayindustry.tistory.com

 

퀀트의 역할을 정말 다양한데 그중에 내가 되고자하는 직무는 트레이딩 전략을 만드는 퀀트이다.

이번 프로젝트를 하면서 내가 되고자하는 퀀트의 역량을 끌어올리고자 한다.

 

 

 

 

[ 목적 ]

 

1. 퀀트 트레이더가 되기 위한 필요 역량을 갖춘다.

: 기업에서 요구하는 파이썬, 알고리즘, 머신러닝, 차트기법, AWS 등의 필수 기술들을 내것으로 습득시킨다.

 

2. 전체 파이프라인을 직접 경험해본다.

: 알고리즘이나 전략 등을 수립하고 백테스팅하고 API, AWS를 사용하여 직접 오토봇을 만들고 자동 트레이딩하는 과정
: 기존에 진행했던 머신러닝 회귀예측 프로젝트를 응용하여 특정종목의 가격데이터를 학습시켜 가격 혹은 상승/하락을 예측하는 모델을 만들어 볼 수도 있다.

 

3. 실전엔 어떤 지식들이 더 중요한지 우선순위를 매기고 공부할 수 있다.

 

4. 감정소모없이 나의 수익률을 더욱 안정적으로 끌어올린다.

 

 

[ 퀀트 트레이더가 되기위해 키워야할 역량 및 해야할 것 ]

 

퀀트 트레이더가 되기 위해 키워야할 역량은 크게 '통계학'과 '금융지식'이며 요즘에는 '머신러닝' 지식 또한 중요하다고 한다.

다양한 알고리즘들로 다양한 전략을 수립해야하는 트레이더의 직업 특성상 이러한 지식들을 잘 융합하여 전략을 수립하여야 한다.

 

현직 퀀트 종사자분들의 글들을 찾아 읽어보면..

CFA(공인재무분석사), 금융투자분석사 등의 금융관련 자격증을 소지하면 취업의 스펙에 도움은 되나,

실질적인 퀀트의 실력을 키우는데는 직접 스스로 하나하나 공부하는 것이 훨씬 도움이 된다고 한다.

 

 

즉, 자격증을 따는것이 목표가 아니라 공부를 진정한 내 것으로 체화시켜,

리어에 직접 적용시킬 수 있는 지식을 쌓아야한다는 것이다.

 

 

처음부터 끝까지 관련 프로젝트를 직접 진행하면서

그 과정속에서 스스로 필요한 금융지식도 찾아 공부하고, 관련 알고리즘과 머신러닝 지식들을 습득하는 것이

퀀트라는 직무의 실질적인 실력향상에는 매우 좋다고 많은 분들이 말한다.

 

 

 

[ 기업에서 원하는 기본적인 주요기술 및 역량 ]

 

  • AWS 
  • Python 혹은 R
  • API
  • Linux
  • Websocket 기반 고빈도 투자전략 개발
  • 퀀트 전략, 알고리즘 개발
  • HFT
  • 꼼꼼한 개발기획 + 개발능력
  • 문제해결능력, 분석력
  • 가상자산 시장에 대한 높은이해도 + 투자 경험
  • 영어논문 해석능력
  • 데이터 분석에 있어 높은 이해도
  • 금융시장에 대한 관심
  • 증권사 DMA 트레이딩 개발경험
  • LP / Market Making / Arbitrage 트레이딩 경력자
  • HFT 데이터 분석을 통한 트레이딩 전략 아이디어 구상부터 분석툴 개발, 알고리즘 개발, 테스트, 운용
  • 기본적인 딥러닝 알고리즘 개발경험 CNN,LSTM,Resnet등
  • Bert, GPT 등 transformer 계열 딥러닝 알고리즘 개발 및 운영경험
  • CFA, 투자자산운용사 등 금융관련 자격증 소지자
  • LLM(transformer 기반) 개발 (단순 LLM 개발 외에 실제 주식, 선물옵션 시계열 데이터 기반의 투자전략 개발)

 

 

 

[ 정리 ]

* 정말 다양한 시도를 해보려고 한다.

주로 파이썬이나 Pinescript언어를 사용하여 가상화폐 트레이딩을 해볼것이다.

 

트레이딩뷰 trading view라는 사이트에서는

가상화폐,주식 차트와 정보를 제공해주고 차트 전략을 수립하여 백테스팅 등을 해볼 수 있다.

 

먼저 이 사이트에서는 Pine script라는 언어를 사용한다.

직접 여러 차트지표로 전략들을 만들고 백테스팅을 해보며 전략을 몇 가지 수립한다.

 

그리고 이 언어를 사용하여 거래소와 연동이 가능하다면 오토트레이딩을 해볼 계획이다.

 

만약 불가하다면, 이 언어로 만든 전략들을 최대한 파이썬으로 바꾼 후,

API와 AWS를 활용하여 거래소와 연동 후, 자동 트레이딩을 해볼 것이다.

이 과정에서 AWS에 대해 많은 공부 후 사용할 것이다.

 

* 추가로 내가 이전에 진행한 회귀모델을 통하여 가상화폐 종목들의 다음날 가격의 up / down을 예측해보고싶다.

 

* 관련기업들에서 HFT에 대한 역량을 많이 언급하는데

이 HFT에 대해 많은 공부를 하며 이를 프로젝트에 활용할 수 있다면 직접 다뤄보고싶다.

 

* 딥러닝을 어떻게 퀀트 트레이딩에 활용할 수 있을지 주요 모델들을 서칭해보고 공부해보려고한다.

가능하다면 간단하게 실전적용도 해보고싶다.

 

 

프로젝트를 진행하면서 다양한 변수로 인해 방향성이 수정될 수 있으나,

퀀트 역량과 필수 기술을 익힌다는 주요 기둥은 절대 흔들리지 않고 잡고 나아가려고 노력할 것이다.

 

오늘은  AI 퀀트와 관련된 프로젝트를 진행하기 앞서, 퀀트에 대한 관련 개념들을 알아보고자 한다.

 

미래 내가 되고싶은 유망한 퀀트 트레이더가 되기 앞서 관련된 다양한 경험들을 많이 쌓아야한다고 생각한다.

 

"지피지기 백전백승"

 

퀀트와 관련된 모든 개념과 필요역량 등을 낱낱히 파헤쳐볼 필요가 있다고 생각했다.

먼저 퀀트의 사전적 개념에 대해 알아보자.

 

 

 

 

퀀트란?

나무위키에서 퀀트의 개념은 다음과 같다.

 

"퀀트는 기본적으로 영어 단어의 뜻대로 ‘양적인’, ‘정량적인’ 행위 등을 뜻하나, 여러 가지 뜻을 지닌 다의어이다. 이런 뜻대로 금융 업계에서는 통계학과 수학에 기반하여 정량적인 전략을 짜는 행위를 퀀트투자라고 일컽는다. 셀사이드의 트레이더와 애널리스트, 유수의 바이사이드 헤지펀드, 자산운용사 등 자본력이 풍부하고 정보 동원력이 높은 업체에서 주로 사용한다"

 

퀀트(quant)란?

quantitative(계량적, 측정할 수 있는)와 analyst(분석가)의 합성어로, 수학과 통계에 기반해 투자모델을 만들거나 금융시장 변화를 예측하는 것을 말한다. 이들은 시장 분석과 매매 알고리즘을 설계해 컴퓨터 프로그램을 제작하는데, 주식 거래를 주로 AI가 도맡는다

 

나는 약 5년간 가상화폐 트레이딩을 꾸준히 해왔다.

전문적으로 알고리즘을 짜서 했던것은 아니다.

 

나는 이 퀀트의 개념 중, 이러한 동산(움직이는 자산)을 AI 알고리즘 기법들을 통하여

보다 안전하고 꾸준하게 수익을 내어준다는 메리트에 치명적인 매력을 느꼈다.

 

 

 

퀀트의 분야들

 

찾아보니 오늘날 퀀트는 수많은 하위분야를 포괄하는 광범위한 용어였다.

즉, 다음과 같이 다양한 분야에서 일한다.

 

1. 계산금융(Computational Finance)

: 편미분 방정식, 수치해석 등 재무 모델링에 응용할 수 있는 계산방법

2. 경제학

3. 일반적 금융 : 금융에 응용할 수 있는 정량적 방법론 개발

4. 수리금융 : 확률론, 기하학 등의 방법으로 재무의 수학 및 분석적 방법

5. 포트폴리오 운용 : 증권선택, 자산배분, 투자전략, 성과측정 등의 업무 수행

6. 자산가격 결정 : 증권, 파생상품 및 구조화 상품의 평가 및 헤징

7. 리스크관리 : 트레이딩, 은행, 기업 등의 분야에서의 재무 위험 측정 및 관리

8. 트레이딩 및 시장 미시구조 : 시장 미시구조, 유동성, 거래소 및 트레이딩 설계, 자동 매매, 마켓 메이킹 등

 

 

 

 

퀀트로써 할 수 있는 직무

 

자, 그럼 퀀트로서 할 수 있는 직무는 구체적으로 어떤것들이 있을까?

 

 

1. 파생상품 모델을 만드는 퀀트

파생상품 거래.

특히 이색 파생상품 거래는 글로벌 금융위기를 앞두고 폭발적으로 증가했고,

이후 몇 년간의 불확실성으로 인해 다시 성장하기 시작.

 

글로벌 금융위기 이전에는 이색파생상품 등 복잡한 상품을 만드는데 중점을 두었지만,

금융위기 이후에는 복잡성 대신 가격모형의 현실성과 견고성을 높이는데 중점을 두었다.

 

" 프라이싱 퀀트 "

 

파생상품 가격책정 모델에서 일하는 퀀트를 일컫는다.

 

 

 

2. 새로운 제품을 만드는 퀀트

금융공학.

금융 혁신은 종종 새로운 금융상품을 만들어 내는데, 

요즘엔 새로운 이색상품 대신, 금융 서비스 회사들이 구조화 상품을 만드는 경우가 많다.

 

이들은 특정 투자자산의 수익을 기반으로 맞춤형 위험-수익 목표를 달성하기 위해 패키지된 금융상품이다.

구조화 상품은 재무 예산 및 투자를 위한 법률적 제약하에서 특정 시장에 대한 전망 및 원하는 위험 프로파일에 대한 노출을 제공할 수 있다.

 

구조화 상품을 다루는 전문가는 일반적으로 퀀트보다는 구조자(structurers)라고 부르지만,

퀀트와 구조자의 작업은 상당히 비슷하다.

 

 

3. 트레이딩 전략을 만드는 퀀트

파생상품의 가격을 측정하는 퀀트는 위험중립을 가정한다.

트레이딩 전략을 만드는 퀀트는 현실세계를 다룬다.

 

이들의 필요스킬셋은 파생상품을 다루는 퀀트와는 사뭇 다른데, 

파생상품 퀀트는 편미분 방정식이나 스토캐스틱같은 수학이 많이 필요하나,

 

트레이딩 전략을 만드는 퀀트는 통계학이나 머신러닝 같은 역량이 더 필요하다.

 

 

 

 

트레이딩 퀀트의 스킬셋

트레이딩 퀀트는 스킬셋에 따라 종류가 다양하다고 한다.

 

1. 하나 혹은 두 개의 수익성있는 거래전략을 개발하는 케이스

이러한 방식으로 경력을 쌓은 몇몇 성공적인 퀀트가 있다.

하지만 개별 전략은 알파감소의 영향을 받으며 오늘날 작동하는 것이 내일 작동하지 않을 수 있기에, 

확률적으로 매우 드물다.

 

2. 일반적인 방법론 및 프레임워크

많은 퀀트들이 새로운 거래전략을 신속하게 만들고 기존 거래전략에 적용할 수 있는 방법론과 소프트웨어 개발에 많은 공을 들인다.

회사들이 전략을 대량으로 맏늘 수 있는 이른바 '공장'을 구성하고, 다른이들은 소프트웨어나 데이터같은 서비스를 트레이딩 회사에 제공한다.

 

트레이딩 퀀트의 대부분 시간을 거래전략과 아이디어 백테스트하는데 사용한다.

 

 

 

 

트레이딩 퀀트의 시간별 거래유형

거래 전략을 만들 때, 퀀트로서의 직업의 성격은 거래빈도 / 보유시간 및 자산군에 따라 크게 다르다.

고빈도매매(hft)회사에서 일하는 퀀트는 밀리 초, 마이크로 초 또는 나노 초마다 도착하는 틱 데이터에 대한 전략을 만든다.

반면, 장기로 투자하는 퀀트는 시간 또는 일간 수익률을 다룬다.

 

 

 

 

 

생각 정리

 

퀀트가 되고자 한다면, 단순히 역할이 아니라 본질을 살펴봐야겠다고 생각했다.

왜냐하면 생각보다 이 직업의 직무가 너무 다양하기 때문이다.

이름뿐만 아니라 전략, 스킬셋 등이 너무도 다르고 광범위하다.

 

퀀트가 되기위한 좋은 학위는 수리 금융 박사 학위를 취득하거나 금융권 관련 자격증인 CFA, 투자자산운용사 등의 자격증이 있다고 한다.

하지만 이러한 것들이 퀀트의 역량을 기르는데 큰 도움이 될까? 라는 의문이 생기기도 했다.

 

오히려 AI 또는 나만의 기법들을 섞어가며 직접 트레이딩을 해보고 전략들을 보고 배우고 적용시키며 나만의 포트폴리오를 구현해보고싶다는 생각이 들었다. 즉, 자격증 시험이 아닌 스스로 직접 해보는 것이다.

 

퀀트라는 직군의 본질을 온전히 음미하려면 직접 체험해보는 것이 가장 정확하지 싶다.

결국 이 분야는 금융권이다.

 

내가 생각하는 금융시장이란,

자격증, 박사 학위가 아닌 스스로 적극적으로 나서서 돈을 벌려고 하는 자에게 손을 들어주는 것이라 생각한다.

 

즉, 자격증과 학위를 위한 공부가 아닌 처음부터 끝까지 프로젝트를 완주하여 온전히 나의 실력을 위한 공부를 해야겠다고 다짐하게 되었다.

 

오늘은 내가 관심있는 AI퀀트 트레이딩 분야와 관련된 뉴스를 찾아보았다.

 

금융계에서는 이미 심장부에서부터 기술혁명이 일어나고 있다고 한다.

알고리즘 트레이딩 및 리스크 관리 차원에서 로봇 ai가 미치는 영향은 다음과 같다.

 

AI는 전통적인 트레이딩과 리스크 관리 방식을 지능형 알고리즘으로 변화시키며,

머신러닝과 딥러닝을 활용해 과거 데이터를 분석하고 빠른 속도로 거래를 체결한다. 

 

AI의 도입은 금융 기관에게 운영 효율성을 향상시키는 장점을 제공하며, 전문가들은 더 전략적인 결정을 내릴 수 있다. 

특히, AI는 높은 빈도의 거래에서 뛰어난 성능을 보여주며, 복잡한 패턴과 추세를 파악하는 데 유용하다. 

 

리스크 관리에서는 로봇 AI를 활용해 실시간으로 위험을 감시하고 평가하며, 재무 예측에는 딥러닝을 활용하여 정확한 예측을 제공한다고 한다.

 

하지만, 금융에서 AI를 활용함에 있어서 시장 조작과 플래시 크래시 같은 위험 요소, 그리고 윤리적 문제도 고려해야 한다. AI의 투명성과 설명 가능성에 대한 요구가 증가하고 있으며, 양자 컴퓨팅의 도입은 AI의 기능을 더욱 강화시킬 잠재력을 가지고 있다.

 

즉, 인공지능을 활용한 트레이딩 뿐만 아니라 리스크관리, 재무예측의 기능을 주로 해준다.

하지만 윤리적 고려사항 또한 생각해봐야한다.

 

오늘은 저번포스팅에 이어 바이낸스 거래소 API를 사용하여 내 잔고조회부터 선물, 현물 오더 코드를 작성해보았다.

 

1. 잔고조회

 

 

동네 카페에서 진행중인 터라, IP를 추가해놓지 않아, 발생한 에러이다.

바이낸스 로그인 후, IP설정에서 카페 IP를 추가하면 정상 작동한다.

 

 

 

2. 매수 / 매도 오더

 

 

간단한 매수, 매도 주문을 넣는 코드이다.

아래처럼 매수 오더가 들어가는 모습을 볼 수 있다.

 

 

 

3. 주문취소

 

 

4. 선물 현재가 및 과거데이터

비트코인의 선물 현재가이다.

 

 

비트코인 선물의 과거 데이터들을 나열한다.

 

 

 

선물 과거데이터 값은 단순히 가격만 나오는 것이 아닌, 시작가,최고가,최저가,볼륨 등의 정보도 나온다.

 

 

 

 

 

4. 선물 오더북(호가창)

 

 

5. 선물 주문과 취소

위는 XRP리플 선물을 주문하는 코드이고 아래는 그 주문을 취소하는 코드이다.

취소할땐 아래처럼 주문아이디를 적어줘야한다.

 

 

 

정리

오늘은 저번에 이어 간단한 가격조회, 현물 및 선물 오더 / 취소코드에 대해 간단하게 알아보았다.

바이낸스 라이브러리는 바이낸스 공식 깃허브에서 더욱 자세한 설명이 나와있으니 참조하면 좋을 것 같다.

https://binance-docs.github.io/apidocs/#change-log

 

Binance API Documentation

Change Log 2019-09-20 New returned values in response to GET /fapi/v1/account: maxWithdrawAmount, openOrderInitialMargin, positionInitialMargin New returned values in response to GET /fapi/v1/positionRisk: liquidationPrice General Info General API Informat

binance-docs.github.io

 

이렇게 라이브러리를 사용하여 나만의 학습데이터를 만드는데 좋은 정보들을 얻을 수 있다.

만약 내가 매매하는데 필요한 지표들도 조회하는 기능이 있다면 나만의 전략을 도입하여 자동매매를 실현할 수 있다.

 

개인적으로 실전에서는 트레이딩뷰의 pine 스크립트를 사용했었는데,

과연 파이썬으론 어떻게 구현할 수 있을지 매우 기대된다.

바이낸스 거래소에서 API를 받아, 바이낸스에서 제공하는 파이썬 라이브러리를 사용해보았다.

 

가상화폐 메이저급 해외거래소인 바이낸스에서는 API를 제공하여

트레이더들에게 다양한 정보를 손쉽게 접할 수 있도록 하였다.

 

오늘은 바이낸스에서 API를 받아, 라이브러리를 사용하여

여러가지 가격 및 지표정보를 받아오는 코드를 사용해 보았다.

 

 

[ 개요 ]

 

 

 

 

 

[ 내용 ]

 

1. 세팅하기

 

먼저 바이낸스 거래소에서 api를 사용할 때, api_key와 api_secret key정보를 해당 아이디별로 제공한다.

api를 사용하여 라이브러리 및 트래이딩을 하려면 이 key값들이 필요하다.

이는 절대 공개해서도 안되고 분실해서도 안된다.

 

그래서 나는 csv파일에 저장해놓고 그 파일을 읽어,

2번째와 4번째 줄에 있는 key와 secret key정보를 변수에 저장하고 사용하였다.

 

그리고 Client라는 바이낸스 라이브러리를 임포트했다.

 

 

2. Show tickers

 

 

바이낸스에 상장되어있는 모든 가상화폐의 심볼과 현재가격을 불러온다.

데이터프레임으로 저장하여 아래처럼 예쁘게 볼 수 있다.

 

 

 

 

아래는 특정 종목의 가격만 가져오는 코드이다.

시계열 데이터들이므로 1초마다 현재가를 갱신하여 출력하는 코드도 작성해 보았다.

 

 

결과

 

 

3. 일봉데이터 조회

 

 

1d : 특정 종목의 1일봉 단위로 해당 날에 대한 다양한 지표정보를 제공한다.

이를 5m으로 바꾸면 5분봉의 정보를 제공한다.

기간의 범위 또한 조정가능하다.

 

 

 

4. 호가창 조회

이렇게 특정 종목에 대한 현재 호가창 상황 또한 볼 수 있다.

추후, 매도창과 매수창은 나눠서 한눈에 구분할 수 있게 전처리를 해야겠다고 생각했다.

 

이렇게 다양한 라이브러리를 하나하나 공부해나가면서

머신러닝 모델들에 넣어 예측할 지표 등의 정보들을 수집하여,

학습데이터를 만드는 것이 1차 목적이다.

 

또한 RSI, MMA, MoneyFlowIndex등의 실제 트레이딩에서 쓰이는 다양한 지표들을 조합한

알고리즘들을 개발하여 실전 트레이딩에 사용하는 것 또한 2차 목표이다.

 

이렇게 최종적으로 모든 분석을 조합하여 가격 또는 업/다운을 예측하는 모델을 만들어보려고한다.

 

오늘은 챗GPT가 바보가 되어가고 있다는 흥미로운 제목의 기사를 가져와보았다.

 

간단한 코드 성능 개선과 코드 공부할 때 주로 사용하는 챗GPT4인데,

바보가 되어간다니.. 충격적인 기사제목이었다.

 

내용은 다음과 같다.

 

오픈 AI의 챗GPT는 대규모언어모델 LLM으로써 수학문제를 푸는데 있어서는 의사면허 시험을 통과할 정도의 정확도를 가진다.

허나, 가끔 간단한 수학문제풀이에 대한 정확도가 급격히 떨어지는 drift현상도 있다고 한다.

 

나도 GPT4를 계속 사용하다보면 실제로 얘 왜 갑자기 멍청해졌지?라는 느낌을 받을 때가 한번씩 있었다.

말귀를 못알아먹고 코드도 약간 엉망으로 제시해주는 경우가 정말 가끔 있어서 무슨 느낌인지 공감은 갔다.

 

미국 스탠퍼드 대학, UC버클리 연구팀은 실제로 수학문제, 코드생성, 미국 의사면허시험, 시각적 추론, 민감한 질문 등에 대한 응답의 신속성 및 정확성을 분석조사했다.

 

조사 결과, GPT4의 간단한 수학문제에 대한 정확도가 2023년 3월부터 6월까지 정확도가 급락하였음을 볼 수 있었다.
. (논문: How Is ChatGPT’s Behavior Changing over Time?, arxiv)

출처 : http://www.itnews.live/?p=37103

 

이러한 드리프트 drift현상은 AI모델이 매우 복잡한 모델의 일부를 개선하려고 할 때, 모델의 다른 부분의 성능이 저하되는 현상이라고 한다.

이렇게 AI모델을 미세조정하여 특정방향으로 강화하면 다른 영역에서 후퇴할 위험이 있어, AI모델을 지속해서 개선하기는 매우 어렵다고 한다.

 

이 연구팀은 GPT4에서 드리프트 문제를 예상했으나, 생각보다 빠른 시기에 발생하여 매우 놀랐다고 하였다.

 

이와 관련하여 크립토폴리탄(암호화폐 전문 미디어)는 이러한 AI 드리프트 문제는 프롬프트 엔지니어링이라는 급성장 중인 트렌드와 관련있을 수 있다고 주정했다. 즉, 사용자가 프롬프트를 만들어 AI로부터 특정 응답을 끌어내는 프롬프트 엔지니어링에 대응하기 위해 취해진 우발적 결과일 수 있다는 것이다.

 

끝으로 연구팀은 GPT4.0, GPT3.5 모두에서 일부 개선사례도 있었다면서 이러한 대규모언어생성 모델에 대해 수천 개의 질문을 던져 체계적인 테스트를 거치며, 시간에 따라 성능의 변화를 지속적으로 분석하고 있다고 밝혔다.

 

 

[ 소감 ]

나 또한 예전에 팀프로젝트를하며 OpenAI의 GPT4.0과 3.5의 API를 가져와서, 프롬프트 엔지니어링을 진행한 적이 있다.

여러 한의원의 데이터를 종합하여 해당한의원을 위한 경영피드백 질문을 생성해주는 목적을 위해서였다.

이러한 사용자의 사용이 AI모델로 하여금 이러한 현상을 이끌어 낼 수 있다는 생각이 참신하게 다가왔고, 정말 인간의 뇌와 비슷하다는 생각이 들었다. 인간도 여러 요구사항이 한번에 들어오고 복잡해지면 뇌에 과부하가 오듯이 말이다.

 

위에서도 언급했듯, 실제로 GPT4.0을 코드와 학습목적으로 자주 사용하는 나에게 이러한 Dift현상을 가끔 경험해본적이있다.

이게 기사에서 말한 dift현상인지는 잘 모르겠으나, 비교적 쉬운 코딩 Task를 요구했는데도 "얘답지 않게 엉망으로 생성해주네?"라고 느낀적이 있다. 대규모 언어 생성모델은 계속 학습시키면  마냥 똑똑해질줄만 알았는데 이러한 변수들이 문제점이 될 줄은 몰랐다.

역시 이 분야는 끊임없이 변수를 예측하고 고민하고 비판적인 사고력 또한 습관적으로 들여야겠다고 생각했다. 

 

 

 

 

 

 

[ 프로젝트 소개 ]

 

Playground는 Kaggle에서 주최한 마케팅 비용 예측 경진대회이다.

이번 프로젝트의 목표는 머신러닝을 활용하여 Kaggle 경진대회, Playground 마케팅비용 예측이다.

 

 

 

프로젝트 설명

https://www.kaggle.com/competitions/playground-series-s3e11/overview

 

Regression with a Tabular Media Campaign Cost Dataset | Kaggle

 

www.kaggle.com

 

 

미국의 유명한 대형마트 체인점들의 각 마트정보와 각 고객들에 대한 정보를 주고,

각 고객들의 정보에 따라 개인별 마케팅 예상비용이 얼마나 소요될지 예측하는 대회이다.

 

 

 

 

[ 개요 ]

 

1. 먼저 LGBM회귀모델로 전체적인 기능구현을 한번 돌려본다.

2. 관련된 개념들을 공부하며 성능향상에 도움이 되는 기능들을 도입한다. (평가지표,옵튜나,kfold등등)

3. 회귀모델들을 여러개 선정하여 각각을 학습 및 검증해본다.

4. 전처리 및 피쳐엔지니어링으로 모델학습을 위한 최적의 데이터셋을 만든다.

5. 하이퍼파라미터 튜닝 후, 교차검증을 진행한다.

6. 다른 머신러닝 회귀모델들을 여럿 활용하여 최종적으로 스테킹 앙상블을 진행한다.

-> 지속적으로 피쳐엔지니어링, 튜닝, 교차검증 진행

 

 

 

[ 내용 ]

모두 링크입니다. 클릭!

[머신러닝] 회귀예측 1 - 프로젝트 소개 및 LightGBMRegressor 모델활용
[머신러닝] 회귀예측 2 - 평가지표 MSLE , RMSLE

[머신러닝/딥러닝] 회귀예측 3 - 스태킹 앙상블(Stacking Ensemble) 설명 및 실전코드
[머신러닝] 회귀예측 4 - 모델학습코드 : 리팩토링
[머신러닝] 회귀예측 5 - 모델학습/성능평가코드 : 리팩토링 2
[머신러닝/딥러닝] 회귀예측 6 - 1차 피쳐엔지니어링 실전코드
[머신러닝/딥러닝] 회귀예측 7 - 2차 피쳐엔지니어링
[머신러닝/딥러닝] 회귀예측 8 - 3차 피쳐엔지니어링
[머신러닝/딥러닝] 회귀예측 9 - 하이퍼파라미터튜닝(optuna,kfold)/옵튜나,교차검증
[머신러닝/딥러닝] 회귀예측 10 - 하이퍼파라미터튜닝2(optuna,kfold)/옵튜나,교차검증
[머신러닝/딥러닝] 회귀예측 11 - 머신러닝 모델학습함수와 메서드 (partial, trials_dataframe(), optuna, k-fold)
[머신러닝/딥러닝] 회귀예측 12 - 스태킹앙상블
[머신러닝/딥러닝] 회귀예측 13 - 스태킹앙상블2, KNN 하이퍼파라미터 튜닝
[머신러닝/딥러닝] 회귀예측14 - VIF, 다중공선성, EDA
[머신러닝/딥러닝] 회귀예측 15 - 스태킹앙상블3, Cat,XGB,LGBM,KNN
[머신러닝/딥러닝] 회귀예측 16 (최종제출) - Cat,XGB,LGBM,스태킹앙상블

 

 

 

 

 

피드백 및 쟁점

 

- 왜 스태킹앙상블이 더 점수가 낮게 나왔는가?

 

여러 모델들을 사용하여 스태킹앙상블을 한 결과보다 CatboostRegressor 단독모델의 결과가 더 좋게 나왔다.

왜 이런결과가 나왔을까?

 

스태킹앙상블의 특징 때문이 아닐까 생각했다.

 

스태킹앙상블 자체가 기존의 모델들의 결과물을 가져다가 그대로 모아서 새로운 학습데이터셋을 만드는 방법이다.

만약 a,b,c모델로 스태킹앙상블 할 때, a가 70점, b가 90점, c가 50점이 나온다고 가정해보면

b를 메타모델로 하고 a,c의 결과로 학습데이터셋을 만들어보자.

 

그럼 70점짜리 결과물과 50점짜리 결과물을 짬뽕시켜서 학습데이터가 만들어진다.

대충 평균이라고 가정해보면 정확도 60점짜리 결과물을 가지고 b로 최종학습시키는 느낌이다.

 

b 혼자만 학습시키면 애초에 90점이 나오는데 오히려 정확성을 교란시키는 격이 되지않나 싶다.

 

 

 

 

- 내가 하고싶은 트레이딩 투자에 어떻게 적용가능한가?

[머신러닝/딥러닝] 머신러닝으로 비트코인 가격예측하기

 

 

 

- 일상에서 적용할 수 있는점은?

로또번호같은 독립적인 확률을 가지는 경우를 제외하면 정말 여러상황에 적용할 수 있을 것이다.

각 변인마다 약간의 상관관계들이 있다면 말이다.

예를들어 이전의 날씨 및 강수데이터들을 토대로 다음날의 강수량을 예측한다던지,

클로로필, 산소농도 등의 수집데이터를 통해 수질오염도 계산 등이 있다.

 

 

 

- 어떤 점들을 보완/수정할 수 있겠는가?

피쳐엔지니어링이 중요한 것 같다. 각각 모델마다 피쳐엔지니어링을 진행하면 더 나은 결과값이 나올 것이다.

회귀예측에 유리한 다른 앙상블기법을 사용해 볼 수 있을 것이다.

다른 팀의 공유된 코드들를 참고하여 연구해보면 좋은 공부가 될 것 같다.

 

 

 

 

깃허브

 

https://github.com/seokjunHwang

 

 

 

 

 

 

 

 

 

 

오늘은 저번시간까지 완료한 회귀예측 프로젝트 최종제출을 포스팅해보도록 하겠다.

 

이 포스트에서는 캐글 컴피티션에 최종test검증 및 최종제출까지 한 과정을 올려본다.

추후, 지금까지 했던 이 회귀예측 시리즈 1~16까지를 최종정리하는 포스트를 올려보도록 하겠다.

 

 

< 지난 포스팅 >

https://jayindustry.tistory.com/51

 

[머신러닝/딥러닝] 회귀예측 15 - 스태킹앙상블3, Cat,XGB,LGBM,KNN

오늘은 최종적으로 스태킹앙상블 회귀예측 프로젝트를 마무리하는 날이다. 최근까지의 진행사항을 정리해보겠다. 저번까지 베이스모델을 다음 3개로 고정시켜놓고, : LGBM,XGB,CatBoost 메타모델로

jayindustry.tistory.com

 

 

 

[ 개요 ]

 

1. 제출용 테스트데이터셋 전처리

2. 하이퍼파라미터 튜닝된 베이스모델 3개 (LGBM,XGB,Cat)를 가지고 테스트데이터셋을 통해 타겟밸류(cost) 결과값 예측

3. 예측값 csv로 저장

4. 저장한 예측값들을 concat하여 stacking ensemble을 위한 데이터셋 만들기

5. 하이퍼파라미터 튜닝된 메타모델 Catboost(**bestparams)를 가지고 4번 데이터셋의 cost 예측

6. Kaggle에서 원하는 submission.csv형태로 최종결과물을 전처리하여 저장

7. 로컬에도 저장하여, Kaggle 컴피티션에 최종제출 및 채점

8. 스태킹앙상블없이 진행한 이전의 결과물과 비교

 

 

 

 

[ 내용 ]

 

1. 제출용 테스트데이터셋 전처리

 

 

최종 test데이터셋이 모델들을 학습했던 트레인데이터셋 컬럼들과 맞게 전처리 되었다.

 

 

 

 

2. 하이퍼파라미터 튜닝된 베이스모델 3개 (LGBM,XGB,Cat)를 가지고 테스트데이터셋을 통해 타겟밸류(cost) 결과값 예측

 

 

예측하고 그 예측값들을 Csv로 저장하는 과정까지를 하나의 함수로 만들었다.

 

 

3. 예측값 csv로 저장

 

 

 

4. 저장한 예측값들을 concat하여 stacking ensemble을 위한 데이터셋 만들기

마지막에 이 두 함수들을 실행하였다.

 

3개의 베이스모델의 결과값들이 예쁘게 컨캣되었다.

이제 이 데이터셋을 최종테스트 메타모델의 예측을위한 데이터로 사용한다.

 

 

 

 

5. 하이퍼파라미터 튜닝된 메타모델 Catboost(**bestparams)를 가지고 4번 데이터셋의 cost 예측

+

6. Kaggle에서 원하는 submission.csv형태로 최종결과물을 전처리하여 저장

 

 

 

 

캐글에서 원하는 제출형식으로 잘 전처리가 되었다.

 

 

 

 

7. 로컬에도 저장하여, Kaggle 컴피티션에 최종제출 및 채점

 

Kaggle Notebook의 오른쪽메뉴탭에 캐글환경에 저장된 최종 submission.csv를 로컬환경에 저장한다.

 

 

이렇게 로컬에 저장하는 이유는 다음과 같다.

 

캐글 컴피티션에는 제출하는 방법이 여러가지 있다.

바로 Submit 버튼을 눌러 제출하면, 간편하나 모든 코드를 다시 Running하여 제출하게 되므로 시간이 매우 오래걸린다.

하지만 이렇게 결과파일만 업로드하는 방식으로 제출하면, 그 결과물을 가지고 채점만 하게 되므로 매우 빠르다.

 

 

 

이렇게 해당 컴피티션의 Leaderboard에서 Late Submission을 누르고,

 

 

여기에 제출파일을 올리고 서브밋하면 된다.

 

 

8. 스태킹앙상블없이 진행한 이전의 결과물과 비교

 

 

이번에 진행한 스태킹 앙상블을 사용한 결과

 

 

이전에 진행한 LGBM, CatBoost, XGBoost 따로따로 제출했을 때 결과

3개의 모델 중, CatBoost가 가장 좋은 손실함수값이 나왔었다.

당시 약 1000명 중, 326등을 하였다.

 

이번에 진행한 스태킹앙상블보다 더 좋은 결과값이었다.

 

참고로 이 경진대회의 1~3등의 점수는 아래와 같다.

 

RMSLE 0.001점에 따라 매우 큰 순위편차를 보임을 알 수 있다.

 

 

이 다음 포스팅에서 최종적인 프로젝트 정리와 느낀점, 피드백 등을 적어보도록 하겠다.

 

오늘은 최종적으로 스태킹앙상블 회귀예측 프로젝트를 마무리하는 날이다.

 

최근까지의 진행사항을 정리해보겠다.

 

저번까지 베이스모델을 다음 3개로 고정시켜놓고,

: LGBM,XGB,CatBoost

 

메타모델로 하이퍼파라미터 튜닝된 CatBoost와 KNN을 사용하여 결과를 비교해보았다.

 

 

< 지난 포스팅 >

 

https://jayindustry.tistory.com/45

 

[머신러닝/딥러닝] 회귀예측 13 - 스태킹앙상블2, KNN 하이퍼파라미터 튜닝

오늘은 지난시간에 고민했던 부분들을 모두 직접 시도해보았다. 저번포스팅에서는 하이퍼파라미터 튜닝을 한 3개의 모델을 가지고 LGBM을 최종 메타모델로하여 스태킹 앙상블을 진행하였다. 하

jayindustry.tistory.com

 

 

결과만 가져오면 다음과 같다.

CatBoost

 

KNN

 

 

그래서 오늘은 마지막으로 베이스모델과 메타모델을 바꿔서 진행해보았다..!

 

 

 

[ 개요 ]

 

Try 7 스태킹 앙상블

- 베이스모델: XGB,Cat,KNN

- 메타모델: LGBM  

 

베이스모델 3개를 각각 옵튜나 + k fold로 하이퍼파라미터 튜닝 및 학습 후,

스태킹앙상블 기법으로 메타모델을 LGBM으로 정하여 최종 예측을 진행한다.

 

 

 

[ 내용 ]

 

총 4개모델의 하이퍼파라미터 튜닝코드는 이번 프로젝트 "[회귀예측]" 시리즈에 모두 포스팅되어 있으니 참고하면 좋을것이다.

 

kaggle노트북을 매번 edit할때마다 런하면 너무 오래걸리므로,

이전에 했던 하이퍼파라미터 튜닝에서 나온 베스트값들을 변수로 저장해놓았다.

 

 

그리고 각각을 학습시킨 후,

아래와 같이 검증해보았다.

 

 

베이스모델은 3개로 선정하였으나,

위 코드에서는 4개 모두 하이퍼파라미터 튜닝하고 검증한 것이다.

마지막 메타모델에서 사용될 스태킹 데이터셋에서는 여기서의 LGBM예측값을 뺄 예정이니 상관없다.

 

 

 

아래는 각각의 모델들을 따로 하이퍼파라미터 튜닝했을 때의 결과이다.

 

 

 

 

이들의 예측결과값들을 각각 csv파일로 저장하여 로딩한 후, 

병합하여 최종모델이 학습및검증데이터로 사용할 수 있도록 전처리한다.

 

 

 

 

 

이제 이 데이터셋을 가지고 LGBM 하이퍼파라미터 튜닝 후,

베스트 params로 학습시켜 최종결과를 비교한다.

 

 

 

 

 

[ 결과 ]

 

 

 

 

[ 최종 결과 비교]

+ Recent posts