VIX 지수는 시카고 옵션 거래소 변동성 지수인데 보통 증시 위험성을 나타내는 지료로 S&P 500 지수의 옵션 가격을 기초로 향후 30일간의 가중 가격을 결합하여 산정한다고 하는데 구하는 식은 제 영역을 벗어납니다. 보통 공포지수로 불리우는데 국내에도 코스피 200 변동성지수라고 해서 비슷한 개념의 지표가 있습니다만 생소한 지수이다 보니 자료 수집하는 코드를 못찾아서 애를 먹었습니다. 언젠간 소개하고 싶었던 PYKRX라는 GITHUB를 참고해봐도 본 지수를 구할 수 있는 API도 없고 해서 구글링을 통해 겨우겨우 아래와 같은 스크립트를 만들 수 있었습니다.

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os

def korea_vix(start_date) :
   options = webdriver.ChromeOptions()
   options.add_argument('headless') # 브라우저 안 띄우기
   prefs = {"download.default_directory" : C:\\Users\\M\\PProjects\\AI\\ch0\\data',                "download.prompt_for_download" : False,                 
              "download.directory_upgrade" : True,
              "safebrowsing_for_trusted_sources_enabled" : False,
              "safebrowsing.enabled" : False, "behavior" : "allow"}
   options.add_experimental_option('prefs', prefs)
   driver = webdriver.Chrome(executable_path = './chromedriver.exe', chrome_options=options)         
   driver.get('http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd')
   driver.find_element_by_xpath('//*[@id="jsTotSch"]').send_keys("코스피 200 변동성지수")   
   driver.find_element_by_xpath('//*[@id="jsTotSch"]').send_keys(Keys.ENTER)
   driver.implicitly_wait(10)
   driver.find_element_by_xpath('//*[@id="jsOpenView"]/span').click()
   driver.implicitly_wait(10)
   driver.find_element_by_xpath('//*[@id="strdDd"]').clear()
   driver.find_element_by_xpath('//*[@id="strdDd"]').send_keys(start_date)
  driver.find_element_by_xpath('/html/body/div[2]/section[2]/section/section/div/div[2]/form/div[1]
                                         /div/table/tbody/tr[2]/td/a').click()
   driver.implicitly_wait(10)
   driver.find_element_by_xpath('//*[@id="MDCSTAT012_FORM"]/div[2]/div/p[2]/button[2]/img').click()   
   driver.implicitly_wait(10) driver.find_element_by_xpath('//*[@id="ui-id-1"]/div/div[2]/a').click()
   time.sleep(2)
   driver.quit()
filepath = 'C:\\Users\\data'
filename = max([filepath + '\\' + f for f in os.listdir(filepath)], key=os.path.getctime)
try : # 파일 중복시 파일 생성이 안되므로 삭제 후 생성하도록 코드 추가
   os.remove(os.path.join(filepath, "vix.csv"))
except FileNotFoundError : pass
   os.renames(os.path.join(filepath, filename),os.path.join(filepath, "vix.csv"))
# korea_vix("20100101")

vix 지수가 주식 투자에 어떻게 활용할 수 있을지도 잘 모르겠고 그냥 학생때 공부하기는 싫고 공부는 해야한다는 당위성 사이에서 고민하다가 족보, 참고서, 기출문제집만 잔뜩 모아놓고 공부안하던 생각이 나네요. 주식 차트, 보조 지표들이 주가 예측에 도움이 되는 것인지 항상 의문이네요. 있다면 부자 아닌 사람은 없을텐데... 그래도 주식으로 돈번 사람들 보면 나름의 기법이 있을텐데 어떻게 수익을 얻는건지 정말 궁금하네요.

 

이전에도 selenium을 써봤지만 그 때 당시에는 copy하기 바빠서 주마간산격으로 코드만 대충 카피했는데 이번에 필요에 의해 명령어들을 조금 흝어보니 유용한 기능이 참 많은 것 같습니다. 얼마전 백신 예약 매크로때문에 이슈가 되었다고 본 것 같은데 혹시 거기에도 사용된 건 아닌지... 암튼 강력한 모듈 같습니다. selenium으로 무엇을 할 수 있을지 계속 고민해봐야겠네요. 재미는 있는데 코드에 잼뱅이라... 안타깝습니다.

 

m.blog.naver.com/wideeyed/221964700554

 

[Pandas] loc[ ] 로 행, 열 조회하기

Pandas(판다스, 팬더스) Dataframe(2차원, 행열)에서 loc를 이용해서 행 또는 열의 데이터를 조회하는 방...

blog.naver.com

 

data-make.tistory.com/134

 

[Python] DataFrame의 데이터 변형 메서드

참고글 : [Python] Pandas - DataFrame [Python] Pandas - DataFrame 관련 메서드 #. 문자열 분리, 결합, 공백 제거 (.split, .join, .strip) # 문자열 분리 : split메서드 pro.EMAIL 0 captain@abc.net 1  swee..

data-make.tistory.com

ponyozzang.tistory.com/613

 

Python DataFrame 문자열 치환 replace

판다스 DataFrame, Series에 저장한 값을 치환하고 싶은 경우 replace를 사용합니다. 기본적인 사용방법은 문자열을 변경할 때 사용하는 replace와 같습니다. 하지만 문자열에서 사용하는 경우와 DataFrame

ponyozzang.tistory.com

 

아나콘다 가상 환경 만들기


1. conda create -n python_study 

2. conda env list ## 설치 확인, python_study가 목록에 존재해야 함.

3. activate python_study ##가상 환경을 활성화

4. pip install ipykernel ## jupyter notebook 사용을 위한 패키지 설치

5. python -m ipykernel install --user --name python_study --display-name "python_study"

jupyter 실행시 new 목록에서 python_study 생성됨을 확인


구글 코랩 접속 및 사용법

http://colab.research.google.com 로 접속하기


구글 드라이브와 연동하기

from google.colab import drive

drive.mount('/content/drive', force_remount=True)

-> 로그인한 계정의 이메일을 통해 권한을 승인하면 간단히 인증이 완료되고 drive 폴더 생성


캐글 노트북 사용 방법


캐글은 대회 참가하는 데이터 과학자들의 역량을 높여주기 위해 GPU를 무료로 제공


캐글 홈페이지 구성 - Compete, Datasets, Notebooks

Compete : 종료됐거나 현재 진행중인 대회를 확인

Dataset : 최대 20GB까지 본인의 데이터셋을 로컬 환경에서 추가하거나 다른 사용자가 미리 작성한 것을 추가할 수 있음.

Notebooks : 우리가 사용할 가상환경을 만들거나 전문가들이 작성해놓은 캐글 노트북을 볼 수 있는 공간


사용법

캐글 홈페이지 상단의 Noteboks로 들어간 후 [New Notebook] 버튼을 누르고 다음 페이지에서 Notebook과 Script중 자신이 원하는 형태로 선택하고 [create] 버튼을 누름

오른쪽 목록의 Settings에서 Internet과 Accelerator를 통해 인터넷과 GPU를 활성화할 수 있는데 이 경우 모바일 인증이 필요

Internet 버튼은 외부 패키지를 이용할 때 사용되며, 활성화되지 않은 경우 다운 불가능

[+Add data] 버튼을 누르면 데이터셋을 추가

[Save Version] 버튼은 현재 사용 중인 노트북의 버젼을 저장하고 모든 코드를 일괄적으로 실행시켜 최종 결과물 도출

[Save Version]을 누른 후 왼쪽의 [Output] 탭을 누르면 결과물을 확인할 수 있음.

Version Name - 해당 버젼의 이름을 정의

Version Type - 노트북을 바로 저장 가능(Quick Save)

Save & Run All - 저장과 동시에 실행을 통해 결과물 확인

Go to Viewer - 결과물 확인

캐글 노트북의 GPU 기능은 7일 기준 30시간 활용 가능하므로 활용을 잘 해야함

캐글은 다양한 데이터와 강력한 노트북 기능이 최대 장점



'파이썬(PYTHON)' 카테고리의 다른 글

KRX VIX 지수 웹크롤링  (0) 2021.06.29
python 문자열 응용  (0) 2021.02.16
재귀적으로 HTML 페이지를 처리하는 예제  (0) 2020.12.03
파이썬의 비동기2  (0) 2020.08.31
파이썬의 비동기1  (0) 2020.08.30

+ Recent posts