전체 글 102

금융 분석을 위한 파이썬 프로그래밍 - 01. 라이브러리, 데이터프레임, 인덱싱

Step 1. 라이브러리 우리가 개발을 할 때, 모든 코드를 한 땀 한 땀 장인의 정신으로 구현해야 한다면 실력과 무관하게 금세 지쳐버릴 것입니다. 우리가 작성하려고 하는 코드가 매우 정형적이고 일반적으로 자주 쓰이는 것들이라면 누군가는 반드시 함수나 클래스 형태로 이미 구현해두었을 것입니다. 그리고 우리는 이것을 라이브러리라는 형태로 가져와서 쓸 수 있습니다. 심지어 무료로 말입니다. ​ 야후 파이낸스에 있는 주가 정보도 라이브러리라는 것을 사용하면 손쉽게 가져올 수 있습니다. 누군가 이미 그러한 작업을 한 적이 있고, 개발한 코드를 모두가 사용할 수 있게 공개해둔 것이지요. 참고로 아래 이미지, 깃허브라는 코드 저장소에서 실제 구현된 코드를 눈으로 볼 수도 있습니다. yfinance라는 이름의 라이브..

Google Firestore로 경제 매크로 데이터 올리기

Step 0. 파이어스토어 서비스 계정 생성 파이어스토어는 구글에서 제공하는 클라우드 기반 NoSQL 데이터베이스다. 따라서 구글 클라우드 계정이 있어야 하며, 만약 처음이라면 GCP에 접속 후 IAM 관리자에서 서비스 계정을 생성해 준다. 계정을 생성하면 자동으로 인증키 파일(.json)이 다운로드 된다. 해당 파일을 가지고 아래와 같이 인증 후 데이터베이스 객체를 생성해 주자. ​ Step 1. 데이터 전송하기 먼저, 파이어스토어에 전송할 데이터를 확인한다. 이제 데이터를 전송할텐데, 파이어스토어에 데이터가 저장되는 방식은 다음과 같다. 데이터베이스 최상단(루트)에 collection을 생성할 수 있고, 각 collection에는 문서를 집어넣는다. 문서 안에는 필드-필드값 쌍으로 이루어진 데이터를 ..

파이썬 주식 시장 동향 분석 - 자연어처리 감성분석

주식 시장에는 기본적으로 주식을 팔고자 하는 사람과 사고자 하는 사람, 이렇게 크게 두 유형이 있다. 팽팽한 줄다리기 끝에 팔고자 하는 사람이 더 많으면 공급 초과로 가격은 하락하게 된다. ​주가에 영향을 주는 요소는 금융 애널리스트의 예측, 기관 예측, 경제 위기, 그리고 이를 전달하는 뉴스 매체 등으로 셀 수 없이 많지만 결국 그 종착지에는 대중의 움직임이 있다. 그러한 대중의 움직임이 파는 쪽에 더 치우치면 가격은 떨어지고, 사는 쪽에 치우치면 가격은 상승한다. 그렇다면 우리는 지금 이 시간, 대중의 움직임이 어느 방향으로 기울고 있는가를 분석해 볼 수 있다. 그 대상은 특정 종목이나 특정 국가가 될 수도 있고 주식 시장 자체가 될 수 있다. 본 분석은 후자, 주식 시장 자체에 대해 사람들이 어떻게..

주식 가격과 뉴스 기사의 상관 관계에 대하여 - NVIDIA 뉴스 감성 분석

Step 1. 데이터 추출 1-1. 뉴스 기사 수집 먼저 investing.com에서 엔비디아 관련 기사를 수집한다. python requests 패키지를 사용해 post 방식으로 데이터를 가져올 것이다. ​엔비디아 관련 뉴스 기사를 검색했을 때, 네트워크 XHR 탭에서 SearchInnerPage가 뉴스 데이터를 반환하는 것을 확인할 수 있다. 따라서 SearchInnerPage의 헤더 정보를 확인해 요청 데이터를 넣는 payload와 header를 만들어주고, requests.post() 함수를 통해 데이터를 받는다. 실습에서는 최근 300개의 뉴스 기사를 불러와 데이터 프레임으로 만들어줬다. 1-2. 주가 정보 수집 주가 데이터는 간단하게 yahoofinance 데이터를 가져오는 yfinance 패..

파이썬 이더리움 가격 예측 - 회귀모형

많은 딥러닝 입문 도서, 유튜브 콘텐츠 등에서 주가 예측을 소재로 삼고 있다. 자극적이고, 흥미로울 뿐 아니라 예측 결과는 경이로울 정도로 정확해 보여서 주식에 관심 있는 많은 사람들의 관심을 받게 된다. 다음과 같이 'AI가 예측한 주가'라고 하는 시뮬레이션 결과를 보신 적이 있지 않은가? 위 결과는 실제로 모델을 학습시켜 예측한 결과물이며, 심지어 복잡한 딥러닝이 아닌 기본적인 단순 통계모델인 회귀 모형을 사용했다. 딥러닝을 잠깐 접해본 분들은 이 그래프를 보고 '에이, over-fitting 됐네'라거나, '미래 데이터를 학습에 사용했네'라고 지적할 수 있다. 하지만 해당 모델은 over-fitting이 생길 만큼 복잡한 모델을 쓰거나 loss를 과하게 줄이지 않았으며(단순 회귀모형 사용), 위에 ..

파이썬 비트코인 가격 예측 - 1차, 2차, 3차 지수 평활

본 내용은 작년 1월에 교육용으로 준비했던 자료입니다. 데이터를 통해 어떻게 미래 동향을 파악할 수 있는지 확인하고, 현재의 비트코인 가격과 비교해 보시면 좋겠습니다. 예측 결과는 실제 결과와 매우 상이할 것입니다. 과거 데이터만으로 미래를 예측하는 것의 한계를 시사합니다. ​ Step 1. 데이터 전처리 데이터는 2016년 12월 8일부터 2022년 1월 8일까지의 비트코인 일별 종가를 사용한다. 본 실습에서는 미리 확보해둔 데이터를 사용했지만, 꼭 동일한 데이터로 진행할 필요는 없다. 웹에 공개된 데이터가 많으니 비트코인이든 주가 데이터든 직접 스크래핑이나 다운로드 방식으로 데이터 확보를 해보시면 좋겠다. 여기서 종가 데이터만 가져오고 날짜의 경우 datetime 타입으로 변환한 다음 인덱스로 지정해..

Elastic Stack을 활용한 글로벌 경제 매크로 대시보드 구축

Step 0. 파이프라인 Elastic Stack은 Elastic Search를 중심으로 Beats, Logstash, Kibana를 활용해 데이터 파이프라인을 구축하는 일련의 설계 방식이다. 파이프라인의 구성은 다음과 같다. 구성 : Beats : 데이터 수집 및 전송 Logstash : 데이터 전처리(필터링) Elasticsearch : 데이터 저장 및 관리 Kibana : 데이터 시각화 다음은 파이프라인의 동작 방식이다. 동작 : Yahoo Finance에서 각 주요 국가의 시장지수와 금, 은, 유가 등의 각종 매크로 데이터를 추출한다. 추출한 데이터를 Beats로 읽어들여 Logstash로 보내 문자열 처리를 거친 다음, Elastic search로 적재하고, Kibana로 대시보드를 그린다. 먼..

Feature Importance

Feature Importance and Permutation Feature Importance reference : Feature selection : feature importance vs permutation importance Permutation feature importance(sklearn.org) The Mathematics of Decision Trees, Random Forest and Feature Importance in Scikit-learn and Spark 머신러닝의 해석 2편 - 1. 트리 기반 모델의 Feature Importance 속성 랜덤 포레스트에서의 변수 중요도(Variable Importance) 3가지 Feature Importance(변수 중요도) - 트리 기..

sklearn - classification_report()

sklearn.metrics.classification_report reference : scikit-learn.org, sklearn.metrics.classification_report, document scikit-learn.org,sklearn.metrics.f1_score, document stackoverflow, How to interpret classification report of scikit-learn?,LaSul Answered Accuracy(정확도), Recall(재현율), Precision(정밀도), 그리고 F1 Score, eunsukimme Document : sklearn.metrix.classification_report(y_true, y_pred, *, Labels=N..

pandas - corr()

df.corr(method='s') reference document : pandas.DataFrame.corr 비선형 상관관계 : 스피어만 상관계수, 켄달타우 pandas 데이터프레임 객체에 대해 corr()함수를 사용할 수 있다. corr()은 누락값을 제외하고 전체(dataframe) 컬럼들 간의 상관도를 계산한다. 계산에 사용되는 상관계수의 default값은 pearson 상관계수로, 모든 변수가 연속형이고 정규분포를 띄는 경우 사용할 수 있다. 만약 정규분포를 따르지 않는 변수가 포함되어 있다면 보편적으로 spearman 상관계수를 사용한다. spearman 상관계수는 비모수적 방법 (모수를 특정 분포로 가정하여 접근하는 방법론) 으로써 값에 순위를 매기고 순위에 대해 상관계수를 구하는 방식이다..