파이썬
-
[Summary] 텔레그램봇: 채권모니터링 ReviewPython/텔레그램봇:채권모니터링 2020. 12. 31. 19:54
언어 python3.7 이용한 python 라이브러리 os, time, datetime, requests, pandas, xlrd [, bs4, telegram] 상세 내용 증권시장 거래시간의 특정 시점에, 한국거래소에서 채권거래 호가 정보를 수집 후, 한국은행 API로 비교 기준인 최신의 채권 수익률을 확인(xml/json)하여, 전처리(null 데이터를 제외하고, 잔존기간을 일자로 환산, 투자등급/잔존기간/수익률 기준으로 필터링)한 다음, 텔레그램 메신저를 통해 적당한 메시지 포맷으로 전송한다. 여기서 증권시장 거래시간의 특정 시점이란 10시, 12시, 2시 30분, 3시 31분(종가) 처럼 특정 시간을 말한다. 또한 휴장일 정보를 확인(download/view)하여, 익일이 휴장일인 경우 건너뛸 수..
-
[데이터수집] 한국부동산원 청약홈/청약Home 분양정보 (2)Python/웹스크래핑.데이터수집 2020. 12. 29. 22:41
한국부동산원 청약홈 페이지의 APT 분양정보 및 경쟁률 조회 페이지에서, -조회 조건을 변경해 1페이지부터 끝페이지까지 다운로드 받는다. -항상 최신 데이터를 확인할 수 있도록 최신 일자를 갱신한다. (1) 한국부동산원 청약홈 페이지 1페이지의 테이블 다운로드 / 데이터 beautifulSoup으로 파싱 (2) 조회 조건 변경하기 - 전체 페이지 대상으로 실행/최신 일자로 실행 한국부동산원 청약홈 페이지는 조회 조건 선택 -> 조회 형식으로 이루어져있다. requests.post()시에 form data 항목에 해당 조건을 넣어서 전송하면, 실제로 마우스로 클릭하지 않더라도 해당 데이터를 얻을 수 있다. 1) 전체 페이지 대상으로 실행: 전체 페이지 수 정보는 어디에 있을까? 지난번에 전송했던 form ..
-
[데이터수집] 내일은 휴장일? 한국거래소 확인 (2) 조회Python/텔레그램봇:채권모니터링 2020. 12. 26. 21:03
봇을 돌리려면 오늘 휴장인지 정보가 필요하다. 해당 정보는 한국거래소 - MarketData - 시장정보 - 시장동향 - 증시일정 - 휴장일에서 1) 엑셀파일로 다운로드 후 확인 2) 조회 방식으로 확인 2가지 방법으로 확인이 가능하다. 조회도 파일다운로드처럼 OTP 발급과정을 거쳐서 처리하면 된다. Nowtime값을 GenerateOTP에 전달 -> OTP 발급 -> OTP를 MKD99000001에 전달 -> 조회 데이터 리턴 조회에 필요한 Nowtime은 epoch time이므로 int(round(time.time() * 1000))을 정의해서 처리한다. 이번에는 다운로드 대신 조회 기능을 사용해볼 예정이다. 개발자 도구의 네트워크 부분을 열어보니 조회에는 Nowtime.jspx라는 단계가 하나 더 ..
-
[데이터수집] 내일은 휴장일? 한국거래소 확인 (1) downloadPython/텔레그램봇:채권모니터링 2020. 12. 23. 17:16
봇을 돌리려면 오늘 휴장인지 정보가 필요하다. 해당 정보는 한국거래소 - MarketData - 시장정보 - 시장동향 - 증시일정 - 휴장일에서 1) 엑셀파일로 다운로드 후 확인 2) 조회 방식으로 확인 2가지 방법으로 확인이 가능하다. 엑셀파일 다운로드의 경우 채권정보를 가져왔던 방식과 동일하게 OTP 발급 스크립트를 추가해 처리하면 된다. 먼저 엑셀파일로 확인해본다. 실패한 엑셀파일 1차 시도 이쪽을 참고했다: nbviewer.jupyter.org/urls/financedata.github.io/posts/pandas-market-days-krx.ipynb 위 블로그에서는 OTP 발급절차 없이 바로 url로 접속해서 데이터를 확보했다. 바로 접속한 url은 이렇다: marketdata.krx.co.k..
-
[python] 모듈 정리하기Python/텔레그램봇:채권모니터링 2020. 12. 18. 19:48
전체 코드가 길진 않지만, 작업 단위별로 파일을 따로 두는 게 확인하기 수월할 것 같아 코드를 분리하기로 했다. 폴더에서 스크립트 임포트를 임포트하면서 약간 헤맸어서 여기에 정리해두었다: hayjo.tistory.com/63 [import] 폴더 안의 스크립트 임포트하기 일반적으로 폴더에 코드를 정리해놓고 불러다 쓰려면 from folder import script를 하면 된다. 폴더가 여러 개 있거나, 여러 파일에서 코드를 임포트하려면 디렉토리 사이를 .으로 연결하면 된다. 폴더 hayjo.tistory.com 전체 작업은 이렇게 나뉜다. 데이터 받아오기1: requests로 한국거래소 사이트에서 OTP 발급받은 후 필요한 데이터 csv형태로 받아오기 데이터 받아오기2: requests로 한국은행 경제..
-
[TelegramBot] 봇 생성과 메시지전송Python/텔레그램봇:채권모니터링 2020. 12. 18. 19:08
python-telegram-bot 패키지의 telegram.Bot.sendMessage(chat_id, text)로 데이터를 전송한다. 생성 및 작동 확인 기존 텔레그램 계정에서 @botfather를 친구 추가하고 /newbot을 입력하면, 이름을 뭘로 할 거냐고 물어본다. Bot이나 _bot처럼 이름 끝을 bot으로 해서 대답하면 축하한다면서 봇 토큰을 준다. 봇 토큰은 나중에 @botfather에서 /mybots -> 해당 봇 선택 -> API Token에서 확인할 수 있다. 혹시라도 노출되었다면 Revoke current token으로 갱신하면 된다. 기존 계정에서 방금 만든 봇을 친구 추가하고, 시작을 누르면 /start 메시지가 전송된다. 아래 url로 들어가면 방금 메시지를 보낸 유저 정보가..
-
[Pandas] 데이터 정리 (2) 필터링(query) 및 정렬Python/텔레그램봇:채권모니터링 2020. 12. 15. 12:03
현재 데이터를 pandas dataframe에 넣고, NULL값 정리까지 끝난 상태. 이제 목적에 맞게 데이터를 필터링할 차례다. 목적: 투자등급 A-이상이면서 잔존기간이 3년 미만인, 매력적인 가격대의 채권 찾아내기. 매력적인 가격대는 1) 평균 금리에 비해 저렴하게 매도 매물이 있는 종목 2) 혹은 거래량이 있는 종목 중에 적당한 매수가격대가 없는 종목 으로 정했다. 일단 투자등급을 걸러야 하니 'BBB', 'BB', 'B'와 'BBB+', 'BB+', 'B+', 'BBB-', 'BB-', 'B-'를 버리고, 잔존기간이 1095일 이상인 종목을 버리고, 수익률이 평균 금리 미만인 종목을 버리고, 나의 채권 기대수익률은 2% 이상이기 때문에 매수수익률이 2% 미만으로 걸려있는 종목도 버린다. 다만 0...
-
[Pandas] 데이터 정리 (1) read_csv(na_values) & applyPython/텔레그램봇:채권모니터링 2020. 12. 15. 11:37
데이터를 csv 형태로 확보했으니, 이제 입맛대로 정렬해서 원하는 데이터만 골라낼 차례다. python의 pandas 라이브러리를 사용할 예정이고, 우선 데이터를 불러와서 NULL값을 처리하고 날짜 포맷을 변경한다. 일단 설치를 하고 # python -m pip install --upgrade pip # pip install pandas 데이터는 이렇게 생겼다. 가격, 수익률, 거래량, 거래대금은 '-'로 표시된 NULL 데이터가 있다. 종목명,가격,수익률,거래량,거래대금,매도최우선호가 가격,매도최우선호가 수익률,매수최우선호가 가격,매수최우선호가 수익률,신용등급,잔존기간,표준코드 HMM199CB,"10,856.0","0.000","42,122,597","44,815,973,553","10,840.0","..