본문 바로가기

전체 글

(41)
주식 정규화 전 EDA - 주식은 60일 거래일 동안 얼마나 오르고 떨어질까 딥러닝 모델링을 위해서는 데이터를 정규화 해주는 것이 좋습니다. 정규화를 안해도 학습이 되는 경우가 있긴합니다. 그러나 딥러닝은 gradient descent 방식을 통해 학습을 합니다. 정규화를 진행시켜주어야 이러한 학습이 잘 작동을 하고, 대부분의 경우 아주 쉬운 문제일지라도 정규화를 해주지 않으면 학습이 안 될 수도 있습니다. 주식 데이터도 딥러닝을 통해 학습하기전에 정규화를 해주는 것이 좋겠죠. 그렇다면 어떤 방식으로 정규화를 해야할까요? 라는 문제는 다음에 포스팅하겠습니다. 어떻게 정규화를 할지를 고민하다가, EDA를 하게 되었지만 글 순서는 반대가 되었군요. 저는 주식의 데이터를 0~1로 정규화 하고자 합니다. 그리고 Min-max 방식으로 진행할 것인데, 그렇다면 어떤 값을 min과 max값..
시계열 데이터 분석에 딥러닝을 사용할 이유 3가지 주식 데이터는 시간에 따른 데이터가 존재하는 시계열 데이터 입니다. 그래서 시계열 데이터를 분석할 때 사용하는 방법을 주식 데이터에도 적용하곤 합니다. 데이터를 전처리 하는 과정에서 시차(lag)를 고려하기도 하고, ARIMA 모형, 회귀 모델 등을 이용합니다. 딥러닝 방식으로는 LSTM을 사용합니다. 그렇기 때문에 시계열 데이터 분석에 딥러닝을 사용하는 이유를 알 게 된다면, 주식 데이터를 분석할때도 유용하게 활용할 수 있겠죠. 참고한 글에서는 이유로 3가지를 말합니다. 이 세가지 이유에 대해 글에서 설명한 내용, 그리고 저의 생각이나 경험들을 바탕으로 이유에 대해 글을 써보도록 하겠습니다. 1. Deep learning neural networks are capable of automatically ..
LightGBM으로 주식 모델링 해보기 [머신러닝] - Classification, 머신러닝으로 모델링이 가능한가? 이번에는 전 글에 이어서 주식 모델링을 분류 방식으로 해결해보도록 하겠습니다. 분류 문제는 두가지 방식으로 진행하겠습니다. 1) 전날에 비해 금일 종가가 상승 or 하락 2) 전날에 비해 금일 종가가 3% 이상 상승 or 그 외 1번은 바로 이해가 되실겁니다. 2번 같은 문제를 만든 이유는, 좀더 특별한 신호를 찾아볼 수 있을까? 라는 의미에서 만들었습니다. 1번 문제의 경우에는 전체 데이터 셋에서 거의 반반으로 볼 수 있습니다. 2번째 문제의 경우에는 1700개의 row 중 184개, 즉 약 10%의 row만 해당하는 군요. 이정도면 시도는 해볼 수 있겠습니다. 위 정보를 바탕으로 label을 만들어준뒤에 모델링을 하도록 합니다. . label_tf = np.where(data[1:1741]["Adj"..
LightGBM으로 주식 모델링 해보기 [머신러닝] - Regression 머신러닝 기법에는 회귀분석, 의사결정나무 등 많은 기법이 있습니다. 데이터의 종류, 데이터의 갯수, task 종류 등을 고려해서 머신러닝 기법을 선택해야 합니다. 그 상황에 가장 적합한 머신러닝 기법을 선택하는 것이 실력 이겠죠. 그래도 일반적으로 사용되는 기법들이 있습니다. 회귀문제에서는 회귀분석을 가장 먼저 사용해보고, 분류 문제에서는 트리모형, Xgboost 등을 먼저 사용해봅니다. 사용하는 방법도 쉽고 좋은 성능을 보여주기 때문입니다. 오늘 주식 모델링에서 사용할 머신러닝 알고리즘은 LightGBM 입니다. LightGBM은 2년 전에 마이크로소프트에서 논문으로 내놓은 알고리즘 입니다. 그 이전까지 분류 알고리즘의 최강자 였던 XGBoost와 비교해서 예측 성능은 비슷하거나 더 좋고, 속도도 빠르..
기술적 분석 (5) - DMI (Directional Movement Index) 이번에 살펴볼 지수는 DMI 입니다. 시장의 방향성과 추세의 강도를 계량화 한 지표로, 전일 대비 현재 주식 가격을 비교한 선이라고 할 수 있습니다. 구하는 원리나 공식이 복잡하므로 천천히 알아보도록 하겠습니다. DMI 지수에서 확인할 부분은 위에 표현된 DI Plus, DI Minus 입니다. ADX는 DMI를 확인할 때 보통 같이 확인하는 지표인데 뒤에서 설명 드리겠습니다. DI 두개를 구하기 위해서는 DM, TR 이라는 것을 계산해야 합니다. - DM (Directional Movement) 상승 추세 일때는 금일의 고가가 반드시 전일의 고가 보다 높아야 하고, 하락 추세 일때는 금일의 저가가 반드시 전일의 저가 보다 낮아야 한다고 가정하고 계산합니다. - 전일의 고가 보다 금일의 고가가 높을시 :..
기술적 분석 (4) - 스토캐스틱 (Stochastic Oscillator) 이번에 살펴볼 지표는 스토캐스틱(Stochastic Oscillator) 입니다. '모 변호사'가 마법의 지표라고도 불렀던 지표 입니다. 주로 차트의 추세를 파악하는데 사용합니다. 최근 N일간의 최고가와 최저가의 범위 내에서 현재 가격의 위치를 백분율로 표시한 지표입니다. 스토캐스틱 지표는 Fast와 Slow로 나뉘고, 각각의 %K, %D를 구합니다. Fast는 주가에 너무 민감하게 반응하기 때문에 스캘핑 등 아주 짧은 주기의 단타를 하시는 분들만 사용하고, 일반적으로 Slow를 매매에 활용하게 됩니다. Fast Fast %K = {(현재가 - N기간 중 최저가) / (N기간 중 최고가 - N기간 중 최저가)} * 100 Fast %D = Fast %K를 M기간 (지수)이동평균 Slow Slow %K =..
기술적 분석 (3) - 불린저 밴드(Bollinger Bands) 이번에 소개해 드릴 지표는 불린저 밴드 입니다. 이평선, MACD 처럼 상당히 인지도가 있는 지표 입니다. 존 볼린저라는 미국의 유명한 재무분석가가 1980년대에 만들었다고 합니다. 주가가 이평선을 중심으로 일정한 범위(표준편차) 안에서 움직인다는 전제로 개발 되었습니다. 통계적으로 보면 어떤 분포가 정규분포를 따를때, 평균값을 기준으로 앞 뒤 2 표준편차 이내에 약 95%의 샘플이 존재합니다. 따라서 이 표준편차 밖에 값이 있을 확률이 5% 정도 입니다. 볼린저 밴드는 이러한 통계를 배경으로 만들어졌습니다. 구성 요소는 중심선, 상한선, 하한선 입니다. 1) 중심선 - 이동평균선 (일반적으로 20일선) 2) 상한선 - 이동평균선 + 2표준편차 3) 하한선 - 이동평균선 - 2표준편차 볼린저 밴드 20,..
기술적 분석 (2) - MACD 이번에 소개드릴 지표는 MACD 입니다. MACD는 이동평균선 다음으로 인기가 많은 지표입니다. [MACD는 보통 지수 이동평균선을 이용하여 계산하므로, 이하 지평선은 지수 이동평균선을 의미합니다.] 이평선이 서로 멀어지고(확산) 가까워지는(수렴) 것을 반복하는 성질을 이용, 나타내는 지표라고 할 수 있습니다. 즉 이평선 간의 차이를 보기 쉽게 나타내는 지표 입니다. MACD를 사용할 때 보통 3가지의 값들을 계산 합니다. 1) MACD : 단기 이평선 값(보통 12일) - 장기 이평선 값(보통 26일) 2) MACD Signal : MACD값의 (보통 9일) 이평선. 3) MACD Histogram : MACD - MACD Signal 위 그림에서 보면, 위쪽은 주식 가격, 아래가 MACD 입니다. M..