- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
stat(통계) R 언어 [R lang 크롤링] 금융 데이터 분석 주가 데이터 가져오기 in R
2023.12.11 00:58
[R lang 크롤링] 금융 데이터 분석 주가 데이터 가져오기 in R
tqk와 tidyquant 패키지를 사용한 주가 가져오기
데이터 분석이 많이 사용되는 분야 중에 하나가 금융 분야일 것이다. 금융 분야에서는 매우 중요한 것이 리스크 관리이다. 20세기 후반부터 급격히 많이진 다양한 금융 파생 상품의 관리가 복잡해지면서 이 파생 상품을 비롯한 금융권의 다양한 위험을 이를 보다 과학적으로 관리할 필요가 생겼고 이를 수학적, 통계학적, IT적으로 관리하는 방법론으로 유용하게 활용되는 것이 금융 공학이다. 이처럼 수학, 통계, IT 프로그래밍을 기반으로 금융 투자의 가치를 판단하는 사람들을 퀀트(Quantitative Analyst)라고 한다.
하지만 전문적인 퀀트가 아니라면 복잡한 파생상품들의 분석이 필요없을 것이다. 많은 사람들은 주식에 관심이 많고 주식 분석만 해도 큰 문제는 없을 것이다. 그렇다면 R로 우리나라의 주식 가격을 어떻게 가져올 수 있을까? 이에 대해 알아보겠다.
우리나라 주가 가져오기 : tqk 패키지(출처 : https://github.com/mrchypark/tqk)
tqk
패키지는 우리나라의 코스피, 코스닥에 상장된 주가를 가져오는 패키지이다. 이 패키지는 아직(22년 6월) CLAN에 등록되지 못했다. 따라서 Github에 등록된 패키지를 설치해야 한다. 이를 위해서 먼저 remote
패키지가 필요하다.
if (!require('tqk')) {
remotes::install_github("mrchypark/tqk")
library(tqk)
}
tqk
패키지에서는 두 개의 함수를 제공한다.
code_get()
: 한국 주식의 코드를 가져옴tqk_get()
: 한국 주식 코드에 따른 주식 값을 가져옴
다음과 같이 삼성전자의 주식 코드와 주식값을 가져올 수 있다.
## 먼저 한국 주식의 코드값을 가져온다.
code <- code_get()
head(code, 10)
## # A tibble: 10 x 3
## market name code
## <chr> <chr> <chr>
## 1 코스닥 넥스트칩 396270
## 2 코스닥 삼성스팩6호 425290
## 3 코스닥 엔에이치스팩23호 422040
## 4 코스닥 교보12호스팩 421800
## 5 코스닥 레이저쎌 412350
## 6 코스닥 보로노이 310210
## 7 코스닥 위니아에이드 377460
## 8 코스닥 케이비제21호스팩 424140
## 9 코스닥 비플라이소프트 148780
## 10 코스닥 범한퓨얼셀 382900
## 삼성전자 코드값을 가져온다.
sse_code <- code |> filter(name == '삼성전자') |>
select(code) |>
pull()
sse_code
## [1] "005930"
samsung <- tqk_get(sse_code, from='2022-01-01', to='2022-06-30')
tail(samsung, 10)
## # A tibble: 10 x 7
## date open high low close volume adjusted
## <date> <dbl> <dbl> <dbl> <dbl> <int> <dbl>
## 1 2022-06-17 59400 59900 59400 59800 29053450 59800
## 2 2022-06-20 59800 59900 58100 58700 34111306 58700
## 3 2022-06-21 58700 59200 58200 58500 25148109 58500
## 4 2022-06-22 59000 59100 57600 57600 23334687 57600
## 5 2022-06-23 57700 58000 56800 57400 28338608 57400
## 6 2022-06-24 57900 59100 57700 58400 23256103 58400
## 7 2022-06-27 59000 59900 58300 58800 18122236 58800
## 8 2022-06-28 59200 59500 58700 59400 13540538 59400
## 9 2022-06-29 58500 58800 58000 58000 14677138 58000
## 10 2022-06-30 57200 57600 57000 57000 18833333 57000
미국 주가 가져오기 : tidyquant 패키지
이번에는 미국 주식시장에 상장된 주식의 주가를 가져오는 방법을 알아보자. 미국 주가를 가져오는 패키지는 여러개가 있지만 이 중 tidyverse
생태계를 사용하는 tidyquant
를 사용하도록 하겠다. tidyquant
에서 주가를 가져오는 함수는 tq_get()
이다.
tidyquant
를 사용하여 미국에 상장된 ’KT’주가와 다우존스 지수를 가져오는 방법은 다음과 같다.
if (!require('tidyquant')) {
install.packages("tidyquant")
library(tidyquant)
}
KT_stock_prices <- tq_get("KT", from='2022-01-01', to='2022-06-30')
KT_stock_prices |> tail(10)
## # A tibble: 10 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 KT 2022-06-15 13.9 14.0 13.8 13.9 1102300 13.9
## 2 KT 2022-06-16 13.7 13.7 13.5 13.6 1312000 13.6
## 3 KT 2022-06-17 13.9 14.0 13.7 13.8 1899600 13.8
## 4 KT 2022-06-21 14.0 14.2 13.9 14.1 1178700 14.1
## 5 KT 2022-06-22 13.9 14.0 13.8 14.0 564500 14.0
## 6 KT 2022-06-23 14.0 14.1 13.9 14.0 548200 14.0
## 7 KT 2022-06-24 14.2 14.4 14.2 14.4 666100 14.4
## 8 KT 2022-06-27 14.5 14.5 14.4 14.4 802800 14.4
## 9 KT 2022-06-28 14.4 14.4 14.2 14.2 822600 14.2
## 10 KT 2022-06-29 14.1 14.2 14.1 14.1 511400 14.1
tq_get("DOW", from = "2019-01-01") |> tail(10)
## # A tibble: 10 x 8
## symbol date open high low close volume adjusted
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 DOW 2022-06-16 55.7 56.0 54.7 55.4 7641800 55.4
## 2 DOW 2022-06-17 55.2 56.0 54.0 54.8 12735300 54.8
## 3 DOW 2022-06-21 56.3 56.7 54.9 55.0 6391700 55.0
## 4 DOW 2022-06-22 52.3 52.8 51.6 52.3 10383100 52.3
## 5 DOW 2022-06-23 52.2 52.7 50.4 51.1 9662000 51.1
## 6 DOW 2022-06-24 51.5 53.8 51.2 53.1 9107700 53.1
## 7 DOW 2022-06-27 52.9 53.3 52.0 52.2 7507300 52.2
## 8 DOW 2022-06-28 52.8 54.2 52.3 52.5 5169400 52.5
## 9 DOW 2022-06-29 52.7 53.0 51.3 52.0 4385700 52.0
## 10 DOW 2022-06-30 51.2 51.7 50.9 51.6 1411603 51.6
tq_get()
에서 첫 번쨰 매개변수로 사용되는 회사명을 확인하기 위해서는 tq_exchange()
를 사용할 수 있다. 다만 미국의 주식 시장도 우리나라의 코스피, 코스닥으로 구분되듯이 뉴욕증권거래소(NYSE), 나스닥증권거래소(NASDAQ), 아멕스(AMEX)로 구분되어 있다.
tq_exchange_options()
## [1] "AMEX" "NASDAQ" "NYSE"
tq_exchange("NYSE") |> head(10)
## # A tibble: 10 x 7
## symbol company last.sale.price market.cap country ipo.year industry
## <chr> <chr> <dbl> <dbl> <chr> <int> <chr>
## 1 A Agilent Techn~ 117. 35093715959 "Unite~ 1999 "Electric~
## 2 AA Alcoa Corpora~ 44.8 8257767672 "" 2016 "Metal Fa~
## 3 AAC Ares Acquisit~ 9.84 1230000000 "" 2021 "Business~
## 4 AAIC Arlington Ass~ 3.21 95216664 "Unite~ NA "Real Est~
## 5 AAIC^B Arlington Ass~ 21 NA "Unite~ NA ""
## 6 AAIC^C Arlington Ass~ 22.5 NA "Unite~ NA ""
## 7 AAIN Arlington Ass~ 23.8 0 "Unite~ NA ""
## 8 AAM^A Apollo Asset ~ 24.3 NA "Unite~ NA ""
## 9 AAM^B Apollo Asset ~ 25.1 NA "Unite~ NA ""
## 10 AAN Aarons Holdin~ 14.6 446813069 "" 2020 "Diversif~
주가와 관련되어 tidyquant
에서 제공하는 함수중에 유용한 것이 tq_index()
이다. 이 함수에 매개변수로 미국에서 사용되는 주가지수를 넣어주면 해당 주가지수를 구성하는 주식의 종류가 리턴된다. 미국 주가의 전반적인 상승과 하락을 측정하기 위해 많이 사용되는 다우존스지수(DOW)는 미국 우량기업 30개의 지수이고 S&P 500 지수는 미국 신용평가사 S&P Global이 미국에 상장된 시가총액 상위 500개 기업의 주식들을 모아 지수로 구성하였다. tq_index()
에서 검색 가능한 인덱스의 종류는 tq_index_options()
로 검색된다.
tq_index_options()
## [1] "DOW" "DOWGLOBAL" "SP400" "SP500" "SP600"
tq_index("DOWGLOBAL")
## # A tibble: 155 x 8
## symbol company identifier sedol weight sector shares_held local_currency
## <chr> <chr> <chr> <chr> <dbl> <chr> <dbl> <chr>
## 1 COP ConocoPhi~ 20825C10 2685~ 0.0124 Energy 13127 USD
## 2 XOM Exxon Mob~ 30231G10 2326~ 0.0124 Energy 13563 USD
## 3 CVX Chevron C~ 16676410 2838~ 0.0116 Energy 7639 USD
## 4 SLB Schlumber~ 80685710 2779~ 0.0102 Energy 27336 USD
## 5 NTR-CA Nutrien L~ BDRJLN BDRJ~ 0.0100 Mater~ 11765 CAD
## 6 BA-GB BAE Syste~ 026349 0263~ 0.00990 Indus~ 95314 GBP
## 7 HSBA-GB HSBC Hold~ 054052 0540~ 0.00988 Finan~ 142581 GBP
## 8 WMB Williams ~ 96945710 2967~ 0.00986 Energy 30212 USD
## 9 UNH UnitedHea~ 91324P10 2917~ 0.00968 Healt~ 1813 USD
## 10 MRK Merck & C~ 58933Y10 2778~ 0.00953 Healt~ 9949 USD
## # ... with 145 more rows
tq_index("DOW")
## # A tibble: 30 x 8
## symbol company identifier sedol weight sector shares_held local_currency
## <chr> <chr> <chr> <chr> <dbl> <chr> <dbl> <chr>
## 1 UNH UnitedHea~ 91324P10 29177~ 0.110 Health~ 5712801 USD
## 2 GS Goldman S~ 38141G10 24079~ 0.0644 Financ~ 5712801 USD
## 3 HD Home Depo~ 43707610 24342~ 0.0582 Consum~ 5712801 USD
## 4 MSFT Microsoft~ 59491810 25881~ 0.0553 Inform~ 5712801 USD
## 5 MCD McDonald'~ 58013510 25507~ 0.0526 Consum~ 5712801 USD
## 6 AMGN Amgen Inc. 03116210 20236~ 0.0521 Health~ 5712801 USD
## 7 V Visa Inc.~ 92826C83 B2PZN~ 0.0424 Inform~ 5712801 USD
## 8 CAT Caterpill~ 14912310 21802~ 0.0390 Indust~ 5712801 USD
## 9 JNJ Johnson &~ 47816010 24758~ 0.0376 Health~ 5712801 USD
## 10 HON Honeywell~ 43851610 20204~ 0.0368 Indust~ 5712801 USD
## # ... with 20 more rows
[출처] https://2stndard.tistory.com/104
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.