파이썬으로 거래소에서 국내 증시 종목 정보 얻어오기 - alphaj_krxcrawler 패키지 by alphaj

View this thread on steempeak.com
· @alphaj ·
$0.23
파이썬으로 거래소에서 국내 증시 종목 정보 얻어오기 - alphaj_krxcrawler 패키지
![alphaj_logo.png](https://cdn.steemitimages.com/DQmNhR1qz6w8BJbFQqfy5PaQJCWNvV5Me8Xk278bGqkhbwq/alphaj_logo.png)

# Alpha J Investment

---


필자가 프로그래밍 강의를 진행할 때, 첫 수업 시간에 수강생들에게 꼭 설명해주는 내용이 있다.

​

필자가 "프로그램 실행 흐름"이라고 부르는 것이다.

​

우리가 사용하는 모든 프로그램은 크게 3단계의 큰 흐름으로 쪼갤 수 있다.

​

- 데이터의 수집 & 입력

- 데이터의 가공

- 데이터의 저장

​

모든 프로그램은 위와 같은 3단계 과정을 순차적으로 거쳐서 수행된다.

​

오늘 포스팅에서 다룰 내용은 위 3단계 과정 중 첫번째 과정에 해당하는 내용이다. 

​

필자가 "본 전쟁에 나가기 전에, 총알을 준비하는 과정"이라고 표현하는 과정이다.

​

주식 투자와 관련된 프로그램을 작성하고자 하는 사람들은, 대부분 한번쯤은 국내에 상장된 모든 기업의 정보가 필요하다고 느끼는 시점을 맞이하게 된다.

​

이는 자연스러운 흐름이다. 국내 증시를 대상으로 퀀트 투자를 해보고 싶던, 공시 정보를 수집하고 싶던 상장된 기업들의 목록을 알고나야 앞에 과정들을 수행할 수 있기 때문이다.

​

데이터를 구하는 방법은 크게 2가지가 있다. 잘 정제된 데이터를 판매하는 업체에서 구매하거나, 아님 직접 구하거나.

​

직접 데이터를 구하기로 마음을 먹은 경우, 우리는 "크롤링 (Crawling")이라는 과정을 수행해서 데이터를 구해야만 한다. 간단히 말하면, 웹페이지 화면에 표시된 데이터를 프로그램을 이용해 읽어들여 우리가 원하는 형태로 가공한 다음, 저장하는 것이다.

​

크롤링을 직접 수행하기 위해서는 번거로운 노가다를 여러 번 수행해야 한다. 웹페이지의 구조를 파악하고 페이지 상의 데이터가 어떤식으로 서버에 요청되고 페이지에 그려지는지 그 과정을 모두 이해해야 한다. 그래서 크롤링을 수행해 데이터를 수집하고 정제하는 과정은 상당히 시간이 많이 드는 작업이고, 번거로운 과정이다.

​

위에서 언급한 국내에 상장된 종목 정보 (종목코드, 종목명, 산업구분, 시가총액 등)를 얻으려면, 한국거래소의 데이터를 활용하면 된다. 

​

한국거래소는 투자자들이 쉽게 데이터를 수집할 수 있게 하기 위해 자체 제작한 API를 배포해서 데이터를 받아갈 수 있도록 해두었지만, 하루에 호출 가능한 횟수 제한이 있다는 치명적인 단점이 존재한다. 

​

따라서 예를 들어 만약 백테스트를 위해 특정 시점의 종목 정보를 얻고자 API를 여러번 호출해야 한다면 횟수 제한에 걸려 데이터를 받아오지 못하는 현상을 겪을수도 있다. 

​

이를 우회하기 위해서는 위에서 언급한 크롤링 과정을 수행해야 하지만, 이 역시 매우 번거로운 과정이다.

​

> 알파J인베스트먼트는, 퀀트 투자의 대중화를 위해
한국거래소의 종목 정보를 손쉽게 얻어올 수 있는 크롤러 패키지를 제작해,
투자자들에게 무료로 배포하고 있다.

​

해당 패키지의 이름은 alphaj_krxcrawler로, 누구나 공짜로 설치 가능한 파이썬 패키지이다.

```
pip install alphaj_krxcralwer
```

명령어로 설치할 수 있고,

```
def save_stock_list_as_excel(file_name, target_date=None)
def get_stock_list_from_krx(target_date=None)
```

2개의 함수를 제공한다.

​

두 함수 모두, target_date에 지정한 datetime 객체의 날짜에 해당하는 국내 증시 상장 종목 리스트를 가져오는 함수로,

​

target_date를 지정하지 않을 경우 해당 날짜로부터 가장 가까운 시점에 업데이트 된 상장 주식 목록을 가져온다.

​

save_stock_list_as_excel 함수는 file_name 인자로 지정한 파일이름으로 다음과 같은 엑셀 파일을 저장한다.

![](https://cdn.steemitimages.com/DQmRYkW2zvh6c9BDqmBm2dHG7UdFtTvKWdDEaScVMoEQhfC/image.png)


get_stock_list_from_krx 함수는 다음과 같은 형태의 json 배열을 반환한다:


![](https://cdn.steemitimages.com/DQmeqHvsFDwvwvrvrsJhQW9fDySPR3iiPKmKw5Q5yrYoCSs/image.png)

target_date 지정을 통해, 과거 시점의 상장 종목을 가져올 수 있다는 점이 본 패키지의 특징이다.

​

이는 과거 시점의 데이터를 이용해야 하는 백테스트 등에서 유의미하게 사용 될 수 있을 것이다.

​

해당 패키지는 현재 상장 종목의 리스트만 가져오는 기능만 구현되어 있지만,

​

추후 재무 데이터, 공시 정보 등도 가져올 수 있도록 기능이 추가 될 예정이다.

​

추후 해당 데이터를 파이썬을 이용해 직접 크롤링 하는 방법도 알파J인베스트먼트 공식 블로그를 통해 정리할 예정이니, 많은 기대 부탁드린다.

​

> 본 패키지가 퀀트 투자의 활성화에 도움이 되길 바라며..


---

이 글을 읽으시는 모든 분들의 경제적 자유를 염원합니다.

​이 글이 도움이 되셨다면, 주변에 공유해주세요! 올바른 투자 문화를 전파하는 데에 동참해주셨으면 합니다.

이 땅에 사는 모든 사람이 투자자가 되어 행복해지길 바랍니다.

Alpha J (알파J인베스트먼트 대표)

공식 웹사이트: http://alphaj-im.com/
공식 유튜브: https://www.youtube.com/channel/UC1XZU7dLsIJKMhpNTwH3uEw
공식 블로그: https://jaeminyx.blog.me/
👍  , , , , , , , ,
properties (23)
post_id71,704,863
authoralphaj
permlinkalphajkrxcrawler
categorykr
json_metadata{"tags":["kr","stock","kr-economy","tooza","jjangjjangman"],"image":["https:\/\/cdn.steemitimages.com\/DQmNhR1qz6w8BJbFQqfy5PaQJCWNvV5Me8Xk278bGqkhbwq\/alphaj_logo.png","https:\/\/cdn.steemitimages.com\/DQmRYkW2zvh6c9BDqmBm2dHG7UdFtTvKWdDEaScVMoEQhfC\/image.png","https:\/\/cdn.steemitimages.com\/DQmeqHvsFDwvwvrvrsJhQW9fDySPR3iiPKmKw5Q5yrYoCSs\/image.png"],"links":["http:\/\/alphaj-im.com\/","https:\/\/www.youtube.com\/channel\/UC1XZU7dLsIJKMhpNTwH3uEw","https:\/\/jaeminyx.blog.me\/"],"app":"steemit\/0.1","format":"markdown"}
created2019-03-19 13:35:27
last_update2019-03-19 13:35:27
depth0
children2
net_rshares341,268,829,220
last_payout2019-03-26 13:35:27
cashout_time1969-12-31 23:59:59
total_payout_value0.176 SBD
curator_payout_value0.051 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length2,840
author_reputation1,769,203,450,782
root_title"파이썬으로 거래소에서 국내 증시 종목 정보 얻어오기 - alphaj_krxcrawler 패키지"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (9)
@bukio ·
짱짱맨 호출에 응답하였습니다.
properties (22)
post_id71,705,435
authorbukio
permlinkre-bukio-jjangjjangman-1553003451003
categorykr
json_metadata{"tags":["bukio","jjangjjangman"],"app":"steemer\/1.0"}
created2019-03-19 13:50:51
last_update2019-03-19 13:50:51
depth1
children0
net_rshares0
last_payout2019-03-26 13:50:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length16
author_reputation12,334,203,545,676
root_title"파이썬으로 거래소에서 국내 증시 종목 정보 얻어오기 - alphaj_krxcrawler 패키지"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@steemitboard ·
Congratulations @alphaj! You received a personal award!

<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@alphaj/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>

<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@alphaj) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=alphaj)_</sub>


**Do not miss the last post from @steemitboard:**
<table><tr><td><a href="https://steemit.com/steem/@steemitboard/3-years-on-steem-happy-birthday-the-distribution-of-commemorative-badges-has-begun"><img src="https://steemitimages.com/64x128/http://u.cubeupload.com/arcange/BG6u6k.png"></a></td><td><a href="https://steemit.com/steem/@steemitboard/3-years-on-steem-happy-birthday-the-distribution-of-commemorative-badges-has-begun">3 years on Steem - The distribution of commemorative badges has begun!</a></td></tr><tr><td><a href="https://steemit.com/steem/@steemitboard/happy-birthday-the-steem-blockchain-is-running-for-3-years"><img src="https://steemitimages.com/64x128/http://u.cubeupload.com/arcange/BG6u6k.png"></a></td><td><a href="https://steemit.com/steem/@steemitboard/happy-birthday-the-steem-blockchain-is-running-for-3-years">Happy Birthday! The Steem blockchain is running for 3 years.</a></td></tr></table>

###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
properties (22)
post_id72,118,187
authorsteemitboard
permlinksteemitboard-notify-alphaj-20190327t064636000z
categorykr
json_metadata{"image":["https:\/\/steemitboard.com\/img\/notify.png"]}
created2019-03-27 06:46:36
last_update2019-03-27 06:46:36
depth1
children0
net_rshares0
last_payout2019-04-03 06:46:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,535
author_reputation38,705,954,145,809
root_title"파이썬으로 거래소에서 국내 증시 종목 정보 얻어오기 - alphaj_krxcrawler 패키지"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000