-
주가 예측 프로그램: python금융퀀트/자산평가&프로그램매매 2022. 6. 11. 16:11반응형
주가 예측 기본 방향
오늘 주가지수를 알고 내일 하루 동안의 변화율을 예측할 수 있다면, 내일의 주가를 합리적으로 추측해 볼 수 있다. 이런 추측을 수십 번 수백 번 해서 그 결괏값을 평균을 내면, 어느 정도 높은 확률로 내일의 주가를 예측할 수 있을 것이다. ( 이를 몬테카를로 시뮬레이션을 통한 주가 예측이라고 하며, 상세한 개념 설명은 "몬테카를로시뮬레이션의 직관적인 이해"를 참조하면 되고, 그 적용은 "일주일 뒤 코스피 지수는?: 몬테카를로시뮬레이션 실습"을 참조하면 된다. )
오늘 주가지수는 이미 주어진 것이고, 내일 하루 동안의 변화율을 추측하는 것인데, "내일 하루 동안의 변화율"이라는 값이 정규분포를 이룬다고 가정하면 추측이 가능해진다.
정규분포를 이룬다는 것
정규분포를 이룬다는 것은 단순하게 아래의 그래프와 같은 분포를 가지는 것이라고 생각하면 된다.
그림 1의 x 축은 말 그대로 x 변수 값이고 y 축은 x 가 분포할 확률을 나타낸다. x 값을 random 하게 고를 때, 그림 1에서 처럼 정규분포를 이룰 경우 x 값은 평균값일 확률이 가장 높고, 평균에서 먼 값이 나타날 확률은 점점 줄어든다. 그런데 데이터의 표준편차( 변동성이라고 생각하면 된다.)가 커질수록 평균에서 멀어지는 경우가 많다는 뜻이므로 그림 1의 빨간색 그래프처럼 극단적인 x 값이 나타날 확률이 높아지는 것이다.
이를 내일 주가의 변동성 예측에 적용해보자. 과거 일일 주가의 변화율의 평균을 구해서 위 그림 1처럼 기준점을 잡고, 주가 변동의 표준편차를 구해서 주가의 변화율의 변동성이 큰지 작은 지를 본다. 그러면 일일 주가의 변화율이 그림 1의 까만색 그래프에 가까운지 빨간색 그래프에 가까운지를 판단할 수 있다. 만약 주가의 변화율이 그림 1의 빨간색에 가깝다면, 다음날의 일일 주가의 변화율은 더 클 확률이 높고, 그림 1의 까만색에 가깝다면, 다음날의 일일 주가의 변화율은 더 작을 확률이 높을 것이다.
주가 시뮬레이션 프로그램
위의 정규분포 가정을 가지고 이제 우리는 수십, 수백 번을 시뮬레이션한 뒤 그 값을 평균하면, 우리는 미래 일주일 동안의 주가에 대한 합리적인 예측치를 구할 수 있다. 그 수십, 수백 번의 확률적 예측을 사람 손으로는 할 수가 없고 아래 링크( 구글 드라이브)에 프로그램을 만들어 놨으니 다운로드하여서 활용하길 바란다.
주가예측 프로그램 (https://drive.google.com/file/d/1wsI3MzldjYi7NqC2Xz1lLhkTaQBbK2NS/view?usp=sharing)
예제: 삼성전자 주가 예측
프로그램 구조
프로그램을 켜면 아래와 같은 화면이 보일 것이다.
그림 2에서 위쪽 칸이 변수를 입력하는 칸이고 아래쪽 칸이 결과가 나오는 칸이다. 위쪽 칸에 변수를 모두 입력하고 아래쪽에 "시뮬레이션" 버튼을 누르면 2일 차 ~ 8일 차 주가가 시뮬레이션되어서 나온다.
일일 변화율의 평균과 표준편차 구하기
그림 2에서 위쪽 칸은 채우기 쉽다. 2022.06.10 일 이후 7 영업일 동안의 삼성전자 주가를 예측하고 싶다고 하면, 일단 초기 주가지수는 2022.06.10 삼성전자 종가인 63,800을 넣으면 된다. 시뮬레이션 수는 말 그대로 시뮬레이션 돌리는 횟수이고 100이나 1,000을 넣으면 된다. 그런데 문제는 일일 변화율의 평균과 표준편차이다.
일일 변화율의 평균과 표준편차를 구하려면 일단 일일종가 데이터를 시계열로 구해야 하는데 개인별로 증권사 시스템에서 받아도 되고, 인포맥스에서 받아도 되고, KRX에서도 제공해준다. 이번에는 KRX에서(http://data.krx.co.kr/) 데이터를 받아서 작업했다.
위 그림과 같이 들어가서 표시한 부분을 클릭해서 엑셀로 일일 등락률을 정리할 수 있다. (이번에는 2020년 1월 2일 데이터부터 사용했다.)
평균과 표준편차를 구할 범위에 엑셀의 AVERAGE 함수(평균)와 STDEV.S 함수(표준편차)를 사용하여 아래 그림과 같이 손쉽게 평균과 표준편차를 구할 수 있다.
주의할 점은 주식의 평균과 표준편차가 아니라 등락률의 평균과 표준편차를 구해야 한다는 것이고(전일 종가에 변화율을 곱해서 다음 주가를 예상할 것이므로), % 단위를 모두 일반적인 단위로 전환해 줘야 한다는 것이다. 아래 작업 파일을 첨부했으니 참조하면 될 것 같다.
시뮬레이션 결과 보기
초기 주가지수 : 63,800, 시뮬레이션 횟수: 1,000, 등락률의 표준편차: 0.0168879297, 등락률의 평균: 0.00036534를 입력하면 아래와 같은 결괏값을 구할 수 있다.
일주일 뒤에 삼성전자 주식은 오른다고 나오는데... 뭐 미래를 100 % 예측할 수는 없으니...
반응형'금융퀀트 > 자산평가&프로그램매매' 카테고리의 다른 글
금리스왑(IRS) 평가: Bootstrapping 이용 (0) 2023.02.15 MACD를 이용한 매매 : MySQL 활용 (0) 2022.09.27 스플라인 보간법 기본개념 : 큐빅 스플라인 보간법 2 (4) 2022.06.05 스플라인 보간법 기본개념 : 큐빅 스플라인 보간법 1 (0) 2022.06.05 일주일 뒤 코스피 지수는?: 몬테카를로시뮬레이션 실습 (0) 2022.05.22