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으로 무엇을 할 수 있을지 계속 고민해봐야겠네요. 재미는 있는데 코드에 잼뱅이라... 안타깝습니다.

 

+ Recent posts