원래는 주식 데이터를 krx 사이트에서 직접 크롤링하여 csv 파일을 로드하는 방식을 사용하였다. 하지만, 일일이 크롤링하는 작업에 불편함을 느껴 fdr 라이브러리를 사용하는 방식을 시도하게 되었다.
2. FDR 라이브러리 vs KRX 크롤링
FDR 라이브러리
장점
FDR 라이브러리를 사용했을 때 좋은 점은, csv 파일을 다운 받을 필요 없이 라이브러리 자체에서 데이터를 불러올 수 있다는 것이다. 단점
하지만, 이번 프로젝트는 기술 지표를 계산할 때 종가 데이터가 아닌 시가총액 데이터를 사용한다는 데에서 문제가 발생했다. FDR 라이브러리는 종가 데이터는 지원하지만 시가총액 데이터는 없기 때문이다.
KRX 크롤링
장점
반면, KRX 사이트에서 직접 크롤링을 하게 되면 종가, 시가총액 데이터는 물론 FDR 라이브러리에서 지원하지 않는 다양한 주식 데이터를 수집할 수 있다. 단점
하지만, csv 파일로 저장하기 때문에 데이터 수집이 늘어날 수록 용량도 커지고 크롤링을 자동화하지 않았기 때문에(아직 서버를 못 받은 상황) 자동화 전까지는 수작업으로 데이터를 수집해야 한다는 문제가 있다. 그리고 주식 데이터 분석에 사용되는 부분은 한정적이기 때문에 모든 KRX 데이터를 수집하는 것은 사실 불필요하다.
3. 당시의 내 생각
팀원들과 고민 끝에 FDR 라이브러리에서 최대한 필요한 데이터를 끌어온 후 기존에 갖고 있던 csv 파일에서 시가총액 데이터만 추출하여 FDR + 크롤링 Dataframe을 만들어 보자는 의견이 나왔다.
개인적으로는 이미 수집한 데이터가 충분하다고 판단하여서(23년치 데이터가 있었음) 이것만으로 일단 우리가 만들고자 하는 인공지능 모델을 최적화 한 후, 이것을 train data로 사용하면 어떨까 했다. .
그리고 아직 수집하지 않은 데이터를 test data로 사용하여도 좋겠다고 생각했다.
왜냐하면, 어차피 시가총액 데이터를 합칠 거라면 KRX 사이트에서의 크롤링은 불가피했기 때문에 라이브러리에서도 데이터를 끌어오고, 크롤링한 데이터에서도 시가총액을 추출한다면 두 번 일하는 꼴이 되기 때문이다..
차라리 서버를 받을 때까지 착실히 인공지능 모델을 만들고 그 후에 나머지 데이터를 크롤링해도 늦지 않겠다고 생각했다.
4. 시도
하지만, 그래도 라이브러리를 사용하는 경험을 해서 나쁠 것은 없다는 생각에 일단 시도만이라도 해보기로 했다.
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
!jupyternbconvert--tomarkdownfdr.ipynb
usage: jupyter [-h] [--version] [--config-dir] [--data-dir] [--runtime-dir]
[--paths] [--json] [--debug]
[subcommand]
Jupyter: Interactive Computing
positional arguments:
subcommand the subcommand to launch
optional arguments:
-h, --help show this help message and exit
--version show the versions of core jupyter packages and exit
--config-dir show Jupyter config dir
--data-dir show Jupyter data dir
--runtime-dir show Jupyter runtime dir
--paths show all Jupyter paths. Add --json for machine-readable
format.
--json output paths as machine-readable json
--debug output debug information about paths
Available subcommands: kernel kernelspec migrate run troubleshoot
Jupyter command `jupyter-nbconvert` not found.
!pipinstallfinance-datareader
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Requirement already satisfied: finance-datareader in /usr/local/lib/python3.10/dist-packages (0.9.50)
Requirement already satisfied: pandas>=0.19.2 in /usr/local/lib/python3.10/dist-packages (from finance-datareader) (1.5.3)
Requirement already satisfied: requests>=2.3.0 in /usr/local/lib/python3.10/dist-packages (from finance-datareader) (2.27.1)
Requirement already satisfied: requests-file in /usr/local/lib/python3.10/dist-packages (from finance-datareader) (1.5.1)
Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from finance-datareader) (4.9.2)
Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from finance-datareader) (4.65.0)
Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=0.19.2->finance-datareader) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=0.19.2->finance-datareader) (2022.7.1)
Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas>=0.19.2->finance-datareader) (1.22.4)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.3.0->finance-datareader) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.3.0->finance-datareader) (2022.12.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests>=2.3.0->finance-datareader) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.3.0->finance-datareader) (3.4)
Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from requests-file->finance-datareader) (1.16.0)
댓글남기기