파이썬 40

파이썬을 활용한 애플 주가수익률 예측 분석 - (3). 교차 검증 및 모델 선택

본 시리즈는 주가 데이터의 자기 상관(Auto-Correlation) 특성을 억제하고, 동시간대 연관 자산(Cross-Sectional) 수익률 및 지연 수익률을 통한 미래 주가 수익률 예측하는 내용을 담고 있다. 본 장에서는 (1). 데이터 확인 및 예측 안정성 확보, (2). 변수간 상관분석 및 예측변수 정상성 검정에 이어 예측 모델을 구현하는 세 번째 실습을 진행한다. 실습은 회귀(Regression) 예측을 위한 다양한 모델들을 일괄 구현한 다음, 교차검증(K-Fold Cross Validation)을 수행함으로써 각각의 성능을 비교 분석하는 방식으로 진행된다. Step 1. Train-Test Dataset Split 데이터는 이전 장에서 구축한 df_Xy를 사용한다. 예측 변수는 y, 애플 ..

파이썬을 활용한 애플 주가수익률 예측 분석 - (2). 변수간 상관분석 및 예측변수 정상성 검정

본격적으로 모델링을 수행하기 전에 변수간 상관관계가 어떤지, 예측변수의 정상성이 확보되었는지 확인할 필요가 있다. 특정 설명변수가 예측변수와 상관관계가 강하거나 특정 설명변수 간 상관관계가 강하다면 해당 변수를 유심히 살펴야 한다. 전자의 경우 예측변수에 후행하는 것은 아닌지, 후자의 경우 동일한 외생변수를 갖거나 둘 사이에 상호 인과성이 존재하는 것은 아닌지 등을 확인하고, 해당 변수를 소거하거나 집계를 통해 시점 혹은 분포를 변환해줘야 한다. 또한, 예측변수 내에 설명변수들로 하여금 예측변수를 추정하기 어렵도록 하는 특정 분포(추세, 계절성)의 존재 여부 역시 확인해야 한다. 예측변수 자체가 시간에 따라 그 분포(평균, 표준편차)를 달리한다면 단일변수를 통한 회귀분석은 물론 다중변수 모델링은 제대로 ..

파이썬을 활용한 애플 주가수익률 예측 분석 - (1). 데이터 확인 및 예측 안정성 확보

본 시리즈는 파이썬으로 시계열 자기상관 특성 및 마켓, 안전자산, 대체자산 등과의 동시간대 연관성을 분석하고 Apple Inc(AAPL) 주가를 예측한다. 튜토리얼 작성을 위해 금융전략을 위한 머신러닝(한빛미디어), 실전 시계열 분석(한빛미디어) 외 야후파이낸스 및 FRED API 공식문서 등을 참고하였으며 작업 과정에서 추가로 참고하게 되는 자료들은 이후 각 편 내에 서술하도록 하겠다. 1편에서는 간단히 데이터를 불러와 누락된 분포를 살피고, 시계열 기간을 동일하게 맞춘다. 그 다음, 예측에 필요한 데이터를 추출하기 위한 시계열 분석 작업을 간단히 수행하도록 한다. Step 1. Import Packages numpy와 pandas를 포함해 seaborn, matplotlib은 데이터 분석을 위해 언제..

주가 데이터 분석을 위한 로그 변환의 의미, 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..

금융 분석을 위한 파이썬 프로그래밍 - 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년 이전과 이후, 테슬라 주가 추세는 통계적으로 차이가 있는가?'를 확인하고자 합니다. 눈으로 봤을 때는 당연..

1 2 3 4