전체 글 102

주식 차트만 보는 기술적 분석의 무용론

아래 차트를 보면 어떤 생각이 드는가? 전고점을 뚫으면 우상향 할 것이고, 뚫지 못하면 박스권이 형성될 것이라 믿는가? 그렇다면 이 그래프는 어떤가? 완전히 추세가 꺾여 가망이 없어 보이는가? 안타깝게도 둘 다 정규분포로부터 발생시킨 완벽한 무작위 데이터다. 즉, 차트만 보고 우상향 한다, 박스권이다, 추세가 꺾였다 등의 기술적 분석은 아무 근거가 없다는 것이다. 정규분포로부터 발생시킨 무작위 데이터라 함은 아래와 같이 일간 수익률을 평균이 0, 분산이 1인 랜덤한 숫자를 누적해서 쌓아 올린 것을 의미한다. 이를 연결한 것이 총 500일 치의 일간 수익률 분포다. 그리고 이것을 누적해서 쌓아 올리면(cumulative sum) 위에서 봤던 500일간의 누적 수익률, 즉 약 2년 간의 주식차트를 로그변환시..

2. 도메인/금융 2023.04.14

주가 데이터 분석을 위한 로그 변환의 의미, ln(1+return)과 return의 실질적 근사(+파이썬 코드)

주가 데이터를 그대로 분석하기에는 여러 가지 제약이 있다. 단일 주가를 분석할 때에는 그 자체로 정상성이 확보되어 있지 않다는 점, 여러 주가를 비교분석할 때에는 각 종목마다 분포(스케일)가 다르다는 점이 대표적이다. 따라서 일반적으로 금융 시장 매크로를 분석하거나 머신러닝 모델을 구축할 때 price가 아닌 return을 활용하는 경우가 많다. 더 나아가 논문 수식이나 자료를 찾다 보면 단순히 net return(이하 return)을 쓰기보다 로그를 취한 ln(1+return)이 빈번하게 등장한다. 직관적으로 ln(1+return)은 return과 (거의) 같다. 정확히 말하면 로그 수익률 ln(1+return)은 연속복리 개념을 가정하므로 실제로는 수익률 단위가 분, 초, 밀리세컨드 이하로 내려가야만..

TF-IDF 행렬의 특이값 분해를 통한 LSA(Latent Semantic Analysis)의 구현과 빈도 기반 토픽 모델의 한계

Step 1. 토픽모델링이란 토픽모델링은 특정 문서의 확률적 카테고리를 나누는 비지도학습 방법론이며 기본적인 컨셉은 다음과 같다. 문서는 단어의 조합이다. 문서 내 함께 등장하는 단어는 서로 연관성이 있다. 모든 문서에서 자주 등장하는 단어는 특수한 의미를 내포하지 않는다. 반면, 그렇지 않은 단어는 특수한 의미를 내포한다. 즉, 모든 문서에서 자주 등장하지 않으면서 특정 단어들과 함께 등장하는 단어들은 서로 유사한 의미를 내포한다. 그러므로 단어의 조합인 문서는 의미가 있는 단어들의 비중에 따라 카테고리(Topic)가 결정된다. 우리는 이러한 컨셉의 프로세스에 따라 1.문서를 단어 조합으로 가공하고, 2~5.문서 내 각 단어들의 의미를 부여한 다음, 6.문서의 토픽을 결정해보도록 하자. Step 2. ..

단어의 의미를 고려한 문장 유사도 측정 방법 - 기저 벡터와 선형 변환

Step 1. 문장의 유사도를 구하는 방법 두 문서의 유사성은 어떻게 측정할 수 있을까? 문장의 길이? 아니면 주어, 동사, 목적어 등의 문법 구조? 그것보다는 얼마나 공통 '단어'를 많이 포함하고 있는가? 가 더 합리적으로 보인다. 실제로 수많은 전통적인 텍스트마이닝 방법론들은 이러한 단어 기반 유사도 측정 방식을 따르며, 현재 딥러닝, AI 시대에도 역시 문장 구조와 속성을 분석할 때 단어는 핵심 요소다. 이렇게 단어를 기준으로 문장 유사도를 구하기 위해서는 단어를 숫자로 변환해 줄 필요가 있다. 즉, 유사도 혹은 거리를 수학적으로 계산하기 위해 문장을 일종의 좌표평면 상에 놓을 수 있어야 하고 문장이 좌표평면에 놓이기 위해서는 문장을 구성하고 있는 단어들을 스칼라 혹은 벡터값으로 변환해줘야 하는 것..

벡터자기회귀 모형(VAR)을 활용한 다변량 예측 모델링 - 국내 주요 기업 주가 및 거래량 예측

Step 1. VAR 이란? VAR이란 Vector Autoregression, 벡터자기회귀 모형을 의미한다. 기본적인 자기회귀모형이 단변량 시계열 예측에서 사용된다면 벡터자기회귀모형은 다변량 예측에 사용된다. 즉, 2개 이상의 같은 기간에 대한 데이터셋이 서로 다른 변수로 서로 영향을 주는 관계인 경우 벡터자기회귀 모형을 사용한다. 단변량 예측에 사용되는 자기회귀 모형 AR, ARMA, ARIMA의 경우 특정 시점의 과거가 현재에 영향을 미치는 단방향 모형일 수 밖에 없다. 이와 달리 VAR은 각 시계열 변수가 서로 영향을 주며 이를 고려해 각 변수의 미래값을 전체 시계열 변수의 과거값으로부터 예측하므로 양방향 모형이다. 이러한 방향성은 변수간 관게를 보여주는 것이기도 하다.(VAR의 인자로 주어지는 ..

금융 분석을 위한 파이썬 프로그래밍 - 보충자료 02. 파이썬 데이터 시계열 차트 시각화(matplotlib, subplots)

데이터를 시각화하는 도구는 여러 가지가 있습니다. 특히 시계열 데이터의 경우 엑셀이나 스프레드시트, PPT만으로도 충분히 의도하는 내용을 차트로 만들어낼 수 있습니다. 따라서 '굳이' 파이썬으로 시각화를 하고자 한다면 단순히 파이썬으로 분석, 시각화까지 이어서 진행할 수 있는 연속성 외에도 파이썬이 주는 자유도와 자동화로 인한 편의를 충분히 활용해야 합니다. 파이썬을 사용하면 반복문과 함수를 손쉽게 활용하고, 프로그래밍을 통해 여러 차트를 동시에 그려낼 수 있습니다. 이를 극대화해주는 함수가 subplots()입니다. ​ Step 1. 레이아웃 설정 먼저, matplotlib.pyplot 패키지를 plt라는 이름(alias, 별칭)으로 불러옵니다. plt를 통해 아래와 같이 전체 레이아웃을 subplot..

금융 분석을 위한 파이썬 프로그래밍 - 보충자료 01. 파이썬 기초 문법(자료형, Data type)

파이썬에는 여러 가지 자료형, 즉 데이터 타입이 존재합니다. 그중에서도 우리는 단일 데이터를 표현해 주는 int, float, bool, str(엄밀히 말하면 연결된 char입니다만 char 자료형은 현 단계에서 접할 일이 많지 않습니다. 그래서 문자열 str을 단일 데이터 표현형으로 대체합니다.)과 다중 데이터를 표현해 주는 list, dict, set, 그리고 마지막으로 벡터 및 행렬 표현을 위한 numpy, pandas까지 빠르게 다뤄보도록 하겠습니다. ​ Step 1. 단일 데이터 표현 1-1. int int 자료형은 정수를 표현할 수 있습니다. 변수에 1이나 2와 같은 정수를 담아주면 파이썬은 해당 변수의 자료형을 int로 인식합니다. print() 함수로 변수가 가리키는 데이터를 출력할 수 있..

금융 분석을 위한 파이썬 프로그래밍 - 04. 머신러닝 예측 모델링

본 장에서는 기계학습 방법론에 대해 간단히 알아본 다음, 파이썬 패키지로 제공되는 주요 기계학습 알고리즘을 사용해 보도록 하겠습니다. Step 1. 데이터 불러오기 이번에도 역시 테슬라 주가를 불러오는 것부터 시작합니다. ​ Step 2. 예측값 정의 2-1. 기계학습 기계학습은 함수를 만드는 방식 중 하나입니다. y=ax+b라는 함수가 있습니다. 만약, 출력값이 입력값 대비 항상 2배가 되어야 하는 함수를 구해야 한다면 단순하게 a=2, b=0으로 설정하면 됩니다. 하지만 출력값이 입력값 대비 언제는 2배가 될 수도 있지만, 경우에 따라 1.5배가 되거나 어쩌면 -2배도 될 수도 있다면 함수를 어떻게 정의해야 할까요? 이때는 확률적 방법론을 사용해야 합니다. 경우에 따라 확률적으로 1.5배가 되거나 -..

금융 분석을 위한 파이썬 프로그래밍 - 03. 회귀 분석, 정규성 검정, 상관 분석, 쌍체 검정

Step 1. 데이터 불러오기 이제 데이터 불러오는 작업은 익숙해졌을 것입니다. 지난 글과 동일하게 야후파이낸스 패키지로 2010년 상장일부터 최근까지의 테슬라 주가를 가져오겠습니다. (작성시점 : 2022-07) ​ Step 2. 데이터 분할 우선, 전체 기간의 데이터(종가)를 확인하겠습니다. 데이터를 봤을 때, 2020년 전후로 움직임에 많은 차이가 있는 것 같습니다. 2020년 이전에는 매우 잔잔했던 반면 그 이후는 급등과 급락을 반복하고 있습니다. 최근 2년간 테슬라 주가는 유례없는 움직임을 보이고 있습니다. 데이터를 분석할 때는 분석하고자 하는 대상이 분명해야 합니다. 여기서는 '2020년 이전과 이후, 테슬라 주가 추세는 통계적으로 차이가 있는가?'를 확인하고자 합니다. 눈으로 봤을 때는 당연..

금융 분석을 위한 파이썬 프로그래밍 - 02. 차트 시각화, 시계열 분해, 자기상관분석

Step 1. 데이터 불러오기 이제 데이터 불러오는 것은 어렵지 않습니다. yfinance 라이브러리를 사용해 테슬라(TSLA) 주가 정보를 가져오겠습니다. stocks 인스턴스를 생성했고, 객체 내에 내장된 history() 함수로 2010년부터 최근 데이터까지 가져왔습니다. (작성 시점: 2022-07) ​ Step 2. 차트 시각화 파이썬에서 사용하는 대표적인 시각화 라이브러리는 matplotlib과 seaborn이 있습니다. 여기서는 matplotlib을 사용해 차트를 그리는 법을 배워보겠습니다. 참고로 seaborn은 matplotlib을 기반으로 더 다양한 색상과 통계 차트를 제공하고 있으니, 검색해 보시길 권장 드립니다. 처음 보는 라이브러리를 사용하게 되면 어떻게 구현되어 있는지 깃허브 등..