프로그래밍 10

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

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

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

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

금융 분석을 위한 파이썬 프로그래밍 - 보충자료 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() 함수로 변수가 가리키는 데이터를 출력할 수 있..

Elastic Search - 외부 호스팅 개방

외부에서 엘라스틱서치 클러스터에 접속하기 위해서는 config/elasticsearch.yml 파일에서 network.host: “_stie_” (혹은 internet-ip) 를 입력해줘야 한다. 그런데, 이렇게 수정하고 실행하면 부트스트랩 에러가 발생한다. 이 부분을 해결하려면 /etc/security/limits.conf 파일과 /etc/sysctl.conf 파일 수정 통해 리소스 제한을 영구적으로 풀어줘야한다. 수정 내용은 아래 이미지 참고) 수정했다면, 리눅스 시스템을 다시 올린다. $sudo shutdown -r 추가로, config 파일에 discovery.seed_hosts로 호스트 설정도 해줘야 한다. 이렇게 외부 호스트를 열고 실행시, 내부에서는 이제 localhost로는 접속이 안되고,..

Python Django - blog, admin

장고걸스 튜토리얼을 참고했습니다. manage.py 가 있는 파일 경로로 들어가서 아래 명령어를 실행한다. % python manage.py startapp blog - manage.py 파일이 있는 경로에서 blog 파일을 생성한다. 그럼 이렇게 blog라는 이름의 폴더가 생성되고, apps.py 파일, migrations 폴더를 포함해 여러 가지 항목들이 패키지로 설치된 것을 확인할 수 있다. (*참고) 장고 걸스에서 가져온 현재 디렉터리 모습 blog 모델을 생성했다면 이 App이 설치되었다고 알려줘야한다. mysite에서 다시 settings.py를 실행한다. INSTALLED_APPS를 찾아서 'blog'를 추가해준다. 이렇게 'blog' 앱이 설치된 것을 인식시켜줬다면, 다음으로 blog에 대..

맥(Mac) 터미널 경로설정 - 아나콘다(Anaconda), 2020년 5월 10일 기준 updated

오랜만에 맥에 아나콘다를 설치하고 가상 환경을 띄우려는데, 에러가 발생했다. 구글링 해보면 대부분 export PATH="/Users/username/anaconda/bin:$PATH"로 설정하면 된다 는 내용이 많다. 동일하게 시도했을때, 아래와 같이 에러가 발생한다. 초기화도 해보았으나 No action taken. 이라는 모호한 내용이 출력된다. 구글링 해보니 2019년 말 기준 맥 터미널이 zsh환경이 default로 잡히면서 몇 가지 업데이트로 인해 경로를 다르게 설정해주어야 한단다. 우선 경로는 conda.sh 파일이 있는 폴더로 찾아본다. ~~ anaconda3/etc/profile.d 경로 하위에 conda.sh 가 있기 때문에 아래와 같이 export 해준다. 이제 아래와 같이 작성하고,..

JavaScript - 함수 Parameter vs Argument

함수의 목적은 '재사용' 이다. 아주 간단한 sum() 함수를 살펴보자. function sum(x, y){ return x + y } console.log(sum(1,2)) //3 console.log(sum(2,4)) //6 console.log(sum(4,6)) //10 console.log(sum(10,20)) //30 이 함수를 통해서 계산(합산)하고자 하는 데이터를 얼마든지 입력하고 그 결과를 반환받을 수 있다. 좀 더 복잡한 함수를 생각해보자. function impulse(x,y,z){ return ((x+y)-z)*x*y*z } console.log(impulse(3,2,1)) //24 console.log(impulse(6,5,4)) //840 console.log(impulse(30,..

JavaScript - const(), freeze()

생활코딩 이고잉님 강의(JavaScript Immutability) 수강 중 정리한 내용입니다. 자바스크립트의 높은 자유도로 인해 의도적으로 수정을 제한하는 문법이 생겨났는데, const와 freeze다. const는 변하지 않는 값. 상수를 지정하는 키워드로 let과 반대되는 개념이다. (const와 let이 등장하지 않았던 시절의 var와 비교해볼 수도 있다.) const 키워드를 통해 한번 값이 지정되면 그 값은 변할 수 없다. 값이 특정 메모리에 위치한다는 것을 생각했을 때 const로 지정된 '이름(name)' 을 변경할 수 없다는 의미다. const가 나오기 이전 ES5에서 객체의 자유도에 제한을 주기 위한 메소드 freeze()가 등장했는데, const과 자주 비교되는 메소드다. const가..

JavaScript - DOM(Document Object Model) 제어

DOM(Document Object Model) DOM은 브라우저가 제공하는 객체(BOM-Browser Object Model) 중 하나로 BOM의 가장 상위 객체인 Window의 하위 객체라고 볼 수 있다. 넓은 의미로 DOM은 웹브라우저가 HTML 문서를 인식하는 방식을 말하며 객체 참조를 통해 이루어진다. DOM이 제공하는 기능은 C(create), R(read), U(update), D(delete) 4가지다. DOM을 사용해보자. javaScript로 Html을 조작하기 위해 DOM을 사용해서 접근할 수 있다. let elmts = document.getElementsByTagName('div'); 이렇게 getElements라는 복수 형태를 사용하면 변수 elements는 배열 형태로 div를..

JavaScript - 6 원칙

우아한형제들 김민태님의 '자바스크립트 부트캠프(패스트캠퍼스)' 수강 중, 허가를 받고 정리한 내용입니다. 1. 코드 중간중간에 데이터를 넣지 마라. 코드는 읽는 시간이 작성하는 시간보다 훨씬 길다. 따라서 읽고 이해하기 쉽게 데이터는 데이터대로 따로 배치하는 것이 좋다. 그래서 간단한 수식 하나라도 변수를 통해, 네이밍을 해주는 것이 중요하다. 처음 코딩에 입문할 때 변수를 따로 선언해주는 것이 더 복잡하게 느껴지고 코드의 길이도 길어지는 것 같아 의식의 흐름대로 작성하는 경우가 많은데, 그렇게 되면 추후에 수정하거나 변경할 일이 생기면 알아보기도 어려울뿐더러 수정은 더더욱 어렵다. 그러니 변수 선언과 적절한 네이밍은 습관처럼 연습하자. 2. if, switch문을 남발하지 말자. 코드에 대한 정확한 이..

1