{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"FinanceDataReader Tutorial - 섹터 평균 수익률과 개별 종목의 수익률.ipynb","provenance":[],"collapsed_sections":[],"authorship_tag":"ABX9TyNiwJZpMASL2OWKs/WkY+6o"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"frdXxoM3W4X6","colab_type":"text"},"source":["# FinanceDataReader Tutorial\n","## 섹터 평균 수익률과 개별 종목의 수익률 구하기\n","\n","
\n","https://github.com/FinanceData/FinanceDataReader\n","\n","\n","#### 2018-2020 [FinanceData.KR](http://financedata.kr) | [facebook.com/financedata](http://facebook.com/financedata)\n"]},{"cell_type":"markdown","metadata":{"id":"JMGbcof3_7lO","colab_type":"text"},"source":["## 요약\n","* KRX 전체종목과 섹터정보를 가져옵니다\n","* groupby()를 활용하여 섹터별로 묶어 냅니다\n","* groupby()에 간단한 통계함수를 적용하여 count, sum, mean 등을 구할 수 있습니다\n","* 섹터 개별 종목들의 데이터를 수집하고 종가(Close)를 취합 합니다\n","* 섹터종목의 들의 개별 수익률과 섹터 전체의 평균 수익률을 계산합니다\n","* 기간을 지정하여(timedelta 활용) 다양한 기간의 수익률을 계산합니다\n","* 데이터프레임 스타일을 적용하여 주요 셀을 강조합니다\n","* 스타일을 적용한 데이터프레임을 엑셀로 저장합니다\n"]},{"cell_type":"markdown","metadata":{"id":"LQFeRRbg1CQF","colab_type":"text"},"source":["## FinanceDataReader 설치"]},{"cell_type":"code","metadata":{"id":"-twIB1K80-sT","colab_type":"code","colab":{}},"source":["!pip -q install finance-datareader"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"yFaaeYc_EJ_t","colab_type":"text"},"source":["## 한국거래소(KRX)의 전체 종목 가져오기"]},{"cell_type":"code","metadata":{"id":"xXfaq9APEJ50","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":419},"outputId":"cef55747-c0fe-45cc-a252-128dc19b19f4","executionInfo":{"status":"ok","timestamp":1582472674248,"user_tz":-540,"elapsed":8425,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["import FinanceDataReader as fdr\n","\n","krx = fdr.StockListing('KRX')\n","krx"],"execution_count":25,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
SymbolNameSectorIndustry
0155660DSR1차 비철금속 제조업합섬섬유로프
1001250GS글로벌상품 종합 도매업수출입업(시멘트,철강금속,전기전자,섬유,기계화학),상품중개,광업,채석업/하수처리 서...
2082740HSD엔진일반 목적용 기계 제조업대형선박용엔진,내연발전엔진
3011070LG이노텍전자부품 제조업기타 전자부품 제조업
4010120LS산전전동기, 발전기 및 전기 변환 · 공급 · 제어 장치 제조업고압기기,저압기기,변압기,배전반,PLC,인버터,빌딩설비,공조기,건축배관,자동화기기 ...
...............
2350234070에이원알폼산업용 기계 및 장비 임대업건설현장용 알루미늄 거푸집 임대
2351278380원바이오젠의료용품 및 기타 의약 관련제품 제조업의료기기(창상피복재)
2352299480지앤이헬스케어기타 섬유제품 제조업면생리대
2353189350코셋통신 및 방송 장비 제조업광통신용 증폭기
2354331660한국미라클피플사기타 화학제품 제조업은나노스텝, 닥터오렌지 등
\n","

2355 rows × 4 columns

\n","
"],"text/plain":[" Symbol ... Industry\n","0 155660 ... 합섬섬유로프\n","1 001250 ... 수출입업(시멘트,철강금속,전기전자,섬유,기계화학),상품중개,광업,채석업/하수처리 서...\n","2 082740 ... 대형선박용엔진,내연발전엔진\n","3 011070 ... 기타 전자부품 제조업\n","4 010120 ... 고압기기,저압기기,변압기,배전반,PLC,인버터,빌딩설비,공조기,건축배관,자동화기기 ...\n","... ... ... ...\n","2350 234070 ... 건설현장용 알루미늄 거푸집 임대\n","2351 278380 ... 의료기기(창상피복재)\n","2352 299480 ... 면생리대\n","2353 189350 ... 광통신용 증폭기\n","2354 331660 ... 은나노스텝, 닥터오렌지 등\n","\n","[2355 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":25}]},{"cell_type":"markdown","metadata":{"id":"2FQiJBqVGJ_D","colab_type":"text"},"source":["`groupby('컬럼명')`을 사용하여 컬럼명을 기준으로 묶어 줄 수 있습니다."]},{"cell_type":"code","metadata":{"id":"ioH3b54dFtHC","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":35},"outputId":"572ea52e-b34c-4de5-c9dd-15200c2dcd93","executionInfo":{"status":"ok","timestamp":1582472674248,"user_tz":-540,"elapsed":8420,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["krx.groupby('Sector')"],"execution_count":26,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"markdown","metadata":{"id":"k9jT9hfBGfeh","colab_type":"text"},"source":["groupby 결과에 통계함수(count, mean, sum 등)을 적용해주면 묶은 그룹별 통계량을 산출할 수 있습니다."]},{"cell_type":"code","metadata":{"id":"7T1gfrrZGMwQ","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":450},"outputId":"558e7ee2-0793-43d1-988a-18358d8862c6","executionInfo":{"status":"ok","timestamp":1582472674249,"user_tz":-540,"elapsed":8416,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["krx.groupby('Sector').count()"],"execution_count":27,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
SymbolNameIndustry
Sector
1차 비철금속 제조업191918
1차 철강 제조업575757
가구 제조업888
가전제품 및 정보통신장비 소매업111
가정용 기기 제조업999
............
해상 운송업555
해체, 선별 및 원료 재생업111
화학섬유 제조업999
환경 정화 및 복원업111
회사 본부 및 경영 컨설팅 서비스업121211
\n","

156 rows × 3 columns

\n","
"],"text/plain":[" Symbol Name Industry\n","Sector \n","1차 비철금속 제조업 19 19 18\n","1차 철강 제조업 57 57 57\n","가구 제조업 8 8 8\n","가전제품 및 정보통신장비 소매업 1 1 1\n","가정용 기기 제조업 9 9 9\n","... ... ... ...\n","해상 운송업 5 5 5\n","해체, 선별 및 원료 재생업 1 1 1\n","화학섬유 제조업 9 9 9\n","환경 정화 및 복원업 1 1 1\n","회사 본부 및 경영 컨설팅 서비스업 12 12 11\n","\n","[156 rows x 3 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"markdown","metadata":{"id":"mz7tBS4MGsXn","colab_type":"text"},"source":["섹터(Sector)의 개수는 모두 156개 인것을 확인할 수 있습니다.\n","\n","섹터(Sector)별로 개수(종목수)를 구하고, 가장 종목수가 많은 섹터 30개를 뽑아 봅니다."]},{"cell_type":"code","metadata":{"id":"y17KnexXFxh1","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":1000},"outputId":"f83e0543-30a8-46a3-8c17-c6a406cafdec","executionInfo":{"status":"ok","timestamp":1582472674249,"user_tz":-540,"elapsed":8412,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["krx.groupby('Sector').count().sort_values('Symbol', ascending=False)[:30]"],"execution_count":28,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
SymbolNameIndustry
Sector
특수 목적용 기계 제조업136136136
소프트웨어 개발 및 공급업129129128
전자부품 제조업119119118
자동차 신품 부품 제조업969696
기타 금융업888886
의약품 제조업888888
기타 화학제품 제조업838383
금융 지원 서비스업797978
통신 및 방송 장비 제조업767676
반도체 제조업585858
1차 철강 제조업575757
자연과학 및 공학 연구개발업494949
의료용 기기 제조업444443
플라스틱제품 제조업444444
일반 목적용 기계 제조업444444
기초 화학물질 제조업434343
기타 전문 도매업383838
컴퓨터 프로그래밍, 시스템 통합 및 관리업363636
기초 의약물질 및 생물학적 제제 제조업363636
기타 식품 제조업343434
전동기, 발전기 및 전기 변환 · 공급 · 제어 장치 제조업333333
영화, 비디오물, 방송프로그램 제작 및 배급업313131
봉제의복 제조업282827
측정, 시험, 항해, 제어 및 기타 정밀기기 제조업; 광학기기 제외252525
건물 건설업252525
기타 금속 가공제품 제조업232323
기계장비 및 관련 물품 도매업232323
의료용품 및 기타 의약 관련제품 제조업232323
구조용 금속제품, 탱크 및 증기발생기 제조업202020
생활용품 도매업191919
\n","
"],"text/plain":[" Symbol Name Industry\n","Sector \n","특수 목적용 기계 제조업 136 136 136\n","소프트웨어 개발 및 공급업 129 129 128\n","전자부품 제조업 119 119 118\n","자동차 신품 부품 제조업 96 96 96\n","기타 금융업 88 88 86\n","의약품 제조업 88 88 88\n","기타 화학제품 제조업 83 83 83\n","금융 지원 서비스업 79 79 78\n","통신 및 방송 장비 제조업 76 76 76\n","반도체 제조업 58 58 58\n","1차 철강 제조업 57 57 57\n","자연과학 및 공학 연구개발업 49 49 49\n","의료용 기기 제조업 44 44 43\n","플라스틱제품 제조업 44 44 44\n","일반 목적용 기계 제조업 44 44 44\n","기초 화학물질 제조업 43 43 43\n","기타 전문 도매업 38 38 38\n","컴퓨터 프로그래밍, 시스템 통합 및 관리업 36 36 36\n","기초 의약물질 및 생물학적 제제 제조업 36 36 36\n","기타 식품 제조업 34 34 34\n","전동기, 발전기 및 전기 변환 · 공급 · 제어 장치 제조업 33 33 33\n","영화, 비디오물, 방송프로그램 제작 및 배급업 31 31 31\n","봉제의복 제조업 28 28 27\n","측정, 시험, 항해, 제어 및 기타 정밀기기 제조업; 광학기기 제외 25 25 25\n","건물 건설업 25 25 25\n","기타 금속 가공제품 제조업 23 23 23\n","기계장비 및 관련 물품 도매업 23 23 23\n","의료용품 및 기타 의약 관련제품 제조업 23 23 23\n","구조용 금속제품, 탱크 및 증기발생기 제조업 20 20 20\n","생활용품 도매업 19 19 19"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"markdown","metadata":{"id":"221gcQnTH8oN","colab_type":"text"},"source":["묶은(groupby)결과를 list와 dict로 변환하면 개별 섹터(Sector)별로 종목리스트를 구분할 수 있습니다."]},{"cell_type":"code","metadata":{"id":"w5YMYrnOFxbu","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":215},"outputId":"6685ce10-c1a9-4f2e-a18e-7265dea1b87c","executionInfo":{"status":"ok","timestamp":1582472674250,"user_tz":-540,"elapsed":8406,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["sectors = dict(list(krx.groupby('Sector')))\n","\n","print('count:', len(sectors))\n","list(sectors.keys())[:10]"],"execution_count":29,"outputs":[{"output_type":"stream","text":["count: 156\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/plain":["['1차 비철금속 제조업',\n"," '1차 철강 제조업',\n"," '가구 제조업',\n"," '가전제품 및 정보통신장비 소매업',\n"," '가정용 기기 제조업',\n"," '가죽, 가방 및 유사제품 제조업',\n"," '개인 및 가정용품 임대업',\n"," '건물 건설업',\n"," '건물설비 설치 공사업',\n"," '건축기술, 엔지니어링 및 관련 기술 서비스업']"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"code","metadata":{"id":"Vx-eTcW2FxTa","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":377},"outputId":"c6c312da-cab3-45a7-f1a3-561c711eb413","executionInfo":{"status":"ok","timestamp":1582472674250,"user_tz":-540,"elapsed":8401,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["med_sec = sectors['의료용품 및 기타 의약 관련제품 제조업']\n","\n","print('row count:', len(med_sec))\n","med_sec.head(10)"],"execution_count":30,"outputs":[{"output_type":"stream","text":["row count: 23\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
SymbolNameSectorIndustry
149206640바디텍메드의료용품 및 기타 의약 관련제품 제조업기업인수합병
164253840수젠텍의료용품 및 기타 의약 관련제품 제조업체외진단 기기 및 시약
188950130엑세스바이오의료용품 및 기타 의약 관련제품 제조업말라리아 진단키트(RDT), HIV 진단키트(RDT)
195153710옵티팜의료용품 및 기타 의약 관련제품 제조업옵티케어, 메디피그 등
437059210메타바이오메드의료용품 및 기타 의약 관련제품 제조업생체분해성봉합사,근관충전재
484174900앱클론의료용품 및 기타 의약 관련제품 제조업항체의약품
527228760지노믹트리의료용품 및 기타 의약 관련제품 제조업암 조기진단 제품
746064550바이오니아의료용품 및 기타 의약 관련제품 제조업합성유전자,시약및유전자분석장비
824086890이수앱지스의료용품 및 기타 의약 관련제품 제조업항체치료제,효소치료제
853046210파나진의료용품 및 기타 의약 관련제품 제조업의료용품및 기타 의약관련 제품 제조업
\n","
"],"text/plain":[" Symbol Name Sector Industry\n","149 206640 바디텍메드 의료용품 및 기타 의약 관련제품 제조업 기업인수합병\n","164 253840 수젠텍 의료용품 및 기타 의약 관련제품 제조업 체외진단 기기 및 시약\n","188 950130 엑세스바이오 의료용품 및 기타 의약 관련제품 제조업 말라리아 진단키트(RDT), HIV 진단키트(RDT)\n","195 153710 옵티팜 의료용품 및 기타 의약 관련제품 제조업 옵티케어, 메디피그 등\n","437 059210 메타바이오메드 의료용품 및 기타 의약 관련제품 제조업 생체분해성봉합사,근관충전재\n","484 174900 앱클론 의료용품 및 기타 의약 관련제품 제조업 항체의약품\n","527 228760 지노믹트리 의료용품 및 기타 의약 관련제품 제조업 암 조기진단 제품\n","746 064550 바이오니아 의료용품 및 기타 의약 관련제품 제조업 합성유전자,시약및유전자분석장비\n","824 086890 이수앱지스 의료용품 및 기타 의약 관련제품 제조업 항체치료제,효소치료제\n","853 046210 파나진 의료용품 및 기타 의약 관련제품 제조업 의료용품및 기타 의약관련 제품 제조업"]},"metadata":{"tags":[]},"execution_count":30}]},{"cell_type":"markdown","metadata":{"id":"d0K9dPq0LXSh","colab_type":"text"},"source":["## FinanceDataReader 설치"]},{"cell_type":"code","metadata":{"id":"xIA-u4XmLOnN","colab_type":"code","colab":{}},"source":["!pip -q install finance-datareader"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"6UMgtUCFFW0S","colab_type":"text"},"source":["## 개별 종목의 가격 데이터 가져오기\n","개별 종목의 가격을 가져오고, 개별 종목의 종가(Close)를 데이터 프레임(med_pirces)에 컬럼으로 추가합니다."]},{"cell_type":"code","metadata":{"id":"9RtC3xh8FBfv","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":431},"outputId":"e7b25b8f-79c9-4917-86d5-8c20eac0ad94","executionInfo":{"status":"ok","timestamp":1582472690375,"user_tz":-540,"elapsed":24517,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["import pandas as pd\n","import FinanceDataReader as fdr\n","\n","med = pd.DataFrame()\n","\n","for ix, row in med_sec.iterrows():\n"," code, name = row['Symbol'], row['Name']\n"," print(code, name)\n"," # 개별 종목의 가격을 가져옵니다\n"," df = fdr.DataReader(code, '2019-01-01', '2019-12-31')\n","\n"," # 가격 데이터의 종가(Close)를 컬럼으로 추가합니다\n"," # (컬럼명은 종목명을 지정합니다)\n"," med[name] = df['Close']"],"execution_count":32,"outputs":[{"output_type":"stream","text":["206640 바디텍메드\n","253840 수젠텍\n","950130 엑세스바이오\n","153710 옵티팜\n","059210 메타바이오메드\n","174900 앱클론\n","228760 지노믹트리\n","064550 바이오니아\n","086890 이수앱지스\n","046210 파나진\n","138610 나이벡\n","096530 씨젠\n","246720 아스타\n","100700 세운메디칼\n","260660 알리코제약\n","241820 피씨엘\n","042520 한스바이오메드\n","205470 휴마시스\n","233250 메디안디노스틱\n","142280 녹십자엠에스\n","216080 제테마\n","303360 프로테옴텍\n","278380 원바이오젠\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"Vu8a-m8kW97_","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":637},"outputId":"d8e9ab58-c17a-4292-c300-8d55c6506822","executionInfo":{"status":"ok","timestamp":1582472690376,"user_tz":-540,"elapsed":24513,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["# 23개 종목 1년간의 종가(Close) 데이터를 수집하였습니다\n","med"],"execution_count":33,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
바디텍메드수젠텍엑세스바이오옵티팜메타바이오메드앱클론지노믹트리바이오니아이수앱지스파나진나이벡씨젠아스타세운메디칼알리코제약피씨엘한스바이오메드휴마시스메디안디노스틱녹십자엠에스제테마프로테옴텍원바이오젠
Date
2019-01-021040012900441091302960427002755075406170447593581560082903780121009530246001335270009866NaN19400NaN
2019-01-03999013000418090302920409002750072006010438086961475081203830116509360234501310274509661NaN18800NaN
2019-01-041020012950436592602965408002750073806200450591401500080303805119509630241001330274509784NaN18850NaN
2019-01-071025012950447091003020393502770072106350466591401520079703780122009700246501340274509784NaN18900NaN
2019-01-08998012900430590803040375502770070806300460090531560078003730121509720248001340275009702NaN18450NaN
........................................................................
2019-12-239600540020309070270036700221506570670022159710297005090323513600791023550137539200514019300.0154509700.0
2019-12-2494505210206588402630359502125065006490218510150303005040320012400787023550135539200506019150.0144509500.0
2019-12-2696705270201588102675366002210066206460232010500303004960322512750789024100135539200511020050.0140009900.0
2019-12-2796505450206089002750381502280066906540234510750306504850323012850801024200138540000525020450.0140009880.0
2019-12-3096505480206090402785401002345067906650234511100306504860322514100806024950139040000525020650.0139509900.0
\n","

246 rows × 23 columns

\n","
"],"text/plain":[" 바디텍메드 수젠텍 엑세스바이오 옵티팜 ... 녹십자엠에스 제테마 프로테옴텍 원바이오젠\n","Date ... \n","2019-01-02 10400 12900 4410 9130 ... 9866 NaN 19400 NaN\n","2019-01-03 9990 13000 4180 9030 ... 9661 NaN 18800 NaN\n","2019-01-04 10200 12950 4365 9260 ... 9784 NaN 18850 NaN\n","2019-01-07 10250 12950 4470 9100 ... 9784 NaN 18900 NaN\n","2019-01-08 9980 12900 4305 9080 ... 9702 NaN 18450 NaN\n","... ... ... ... ... ... ... ... ... ...\n","2019-12-23 9600 5400 2030 9070 ... 5140 19300.0 15450 9700.0\n","2019-12-24 9450 5210 2065 8840 ... 5060 19150.0 14450 9500.0\n","2019-12-26 9670 5270 2015 8810 ... 5110 20050.0 14000 9900.0\n","2019-12-27 9650 5450 2060 8900 ... 5250 20450.0 14000 9880.0\n","2019-12-30 9650 5480 2060 9040 ... 5250 20650.0 13950 9900.0\n","\n","[246 rows x 23 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"markdown","metadata":{"id":"K9yKhzOPatHO","colab_type":"text"},"source":["2019년 중에 신규상장한 2개 종목은 제외합니다. (1년간 기간 수익률을 구하는 것이므로)\n","* 제테마(코스닥, 2019년 11월 14일 신규상장)\n","* 원바이오젠(코넥스, 2019년 6월 3일 신규상장)\n","\n","결측치(NaN)이 포함된 컬럼을 제외합니다."]},{"cell_type":"code","metadata":{"id":"UgEsWJkoatBI","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":450},"outputId":"6c2da112-b588-4778-b445-fb45833aac5f","executionInfo":{"status":"ok","timestamp":1582472690378,"user_tz":-540,"elapsed":24510,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["med = med.dropna(axis=1)\n","med"],"execution_count":34,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
바디텍메드수젠텍엑세스바이오옵티팜메타바이오메드앱클론지노믹트리바이오니아이수앱지스파나진나이벡씨젠아스타세운메디칼알리코제약피씨엘한스바이오메드휴마시스메디안디노스틱녹십자엠에스프로테옴텍
Date
2019-01-02104001290044109130296042700275507540617044759358156008290378012100953024600133527000986619400
2019-01-0399901300041809030292040900275007200601043808696147508120383011650936023450131027450966118800
2019-01-04102001295043659260296540800275007380620045059140150008030380511950963024100133027450978418850
2019-01-07102501295044709100302039350277007210635046659140152007970378012200970024650134027450978418900
2019-01-0899801290043059080304037550277007080630046009053156007800373012150972024800134027500970218450
..................................................................
2019-12-239600540020309070270036700221506570670022159710297005090323513600791023550137539200514015450
2019-12-2494505210206588402630359502125065006490218510150303005040320012400787023550135539200506014450
2019-12-2696705270201588102675366002210066206460232010500303004960322512750789024100135539200511014000
2019-12-2796505450206089002750381502280066906540234510750306504850323012850801024200138540000525014000
2019-12-3096505480206090402785401002345067906650234511100306504860322514100806024950139040000525013950
\n","

246 rows × 21 columns

\n","
"],"text/plain":[" 바디텍메드 수젠텍 엑세스바이오 옵티팜 ... 휴마시스 메디안디노스틱 녹십자엠에스 프로테옴텍\n","Date ... \n","2019-01-02 10400 12900 4410 9130 ... 1335 27000 9866 19400\n","2019-01-03 9990 13000 4180 9030 ... 1310 27450 9661 18800\n","2019-01-04 10200 12950 4365 9260 ... 1330 27450 9784 18850\n","2019-01-07 10250 12950 4470 9100 ... 1340 27450 9784 18900\n","2019-01-08 9980 12900 4305 9080 ... 1340 27500 9702 18450\n","... ... ... ... ... ... ... ... ... ...\n","2019-12-23 9600 5400 2030 9070 ... 1375 39200 5140 15450\n","2019-12-24 9450 5210 2065 8840 ... 1355 39200 5060 14450\n","2019-12-26 9670 5270 2015 8810 ... 1355 39200 5110 14000\n","2019-12-27 9650 5450 2060 8900 ... 1385 40000 5250 14000\n","2019-12-30 9650 5480 2060 9040 ... 1390 40000 5250 13950\n","\n","[246 rows x 21 columns]"]},"metadata":{"tags":[]},"execution_count":34}]},{"cell_type":"markdown","metadata":{"id":"OCh7abXVEifH","colab_type":"text"},"source":["## 수익률 계산\n","데이터의 첫날(1월 2일)을 기준으로 일일 누적 수익률을 구하기 위해 다음과 같이 연산합니다.\n"]},{"cell_type":"code","metadata":{"id":"4Ql29gvdEiaa","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":637},"outputId":"c7483680-db93-4046-e905-929877587a1e","executionInfo":{"status":"ok","timestamp":1582472690379,"user_tz":-540,"elapsed":24506,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["acc_rets = med / med.iloc[0] - 1.0\n","acc_rets"],"execution_count":35,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
바디텍메드수젠텍엑세스바이오옵티팜메타바이오메드앱클론지노믹트리바이오니아이수앱지스파나진나이벡씨젠아스타세운메디칼알리코제약피씨엘한스바이오메드휴마시스메디안디노스틱녹십자엠에스프로테옴텍
Date
2019-01-020.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
2019-01-03-0.0394230.007752-0.052154-0.010953-0.013514-0.042155-0.001815-0.045093-0.025932-0.021229-0.070742-0.054487-0.0205070.013228-0.037190-0.017838-0.046748-0.0187270.016667-0.020778-0.030928
2019-01-04-0.0192310.003876-0.0102040.0142390.001689-0.044496-0.001815-0.0212200.0048620.006704-0.023296-0.038462-0.0313630.006614-0.0123970.010493-0.020325-0.0037450.016667-0.008311-0.028351
2019-01-07-0.0144230.0038760.013605-0.0032860.020270-0.0784540.005445-0.0437670.0291730.042458-0.023296-0.025641-0.0386010.0000000.0082640.0178380.0020330.0037450.016667-0.008311-0.025773
2019-01-08-0.0403850.000000-0.023810-0.0054760.027027-0.1206090.005445-0.0610080.0210700.027933-0.0325920.000000-0.059107-0.0132280.0041320.0199370.0081300.0037450.018519-0.016623-0.048969
..................................................................
2019-12-23-0.076923-0.581395-0.539683-0.006572-0.087838-0.140515-0.196007-0.1286470.085900-0.5050280.0376150.903846-0.386007-0.1441800.123967-0.169990-0.0426830.0299630.451852-0.479019-0.203608
2019-12-24-0.091346-0.596124-0.531746-0.031763-0.111486-0.158080-0.228675-0.1379310.051864-0.5117320.0846330.942308-0.392039-0.1534390.024793-0.174187-0.0426830.0149810.451852-0.487128-0.255155
2019-12-26-0.070192-0.591473-0.543084-0.035049-0.096284-0.142857-0.197822-0.1220160.047002-0.4815640.1220350.942308-0.401689-0.1468250.053719-0.172088-0.0203250.0149810.451852-0.482060-0.278351
2019-12-27-0.072115-0.577519-0.532880-0.025192-0.070946-0.106557-0.172414-0.1127320.059968-0.4759780.1487500.964744-0.414958-0.1455030.061983-0.159496-0.0162600.0374530.481481-0.467869-0.278351
2019-12-30-0.072115-0.575194-0.532880-0.009858-0.059122-0.060890-0.148820-0.0994690.077796-0.4759780.1861510.964744-0.413752-0.1468250.165289-0.1542500.0142280.0411990.481481-0.467869-0.280928
\n","

246 rows × 21 columns

\n","
"],"text/plain":[" 바디텍메드 수젠텍 엑세스바이오 ... 메디안디노스틱 녹십자엠에스 프로테옴텍\n","Date ... \n","2019-01-02 0.000000 0.000000 0.000000 ... 0.000000 0.000000 0.000000\n","2019-01-03 -0.039423 0.007752 -0.052154 ... 0.016667 -0.020778 -0.030928\n","2019-01-04 -0.019231 0.003876 -0.010204 ... 0.016667 -0.008311 -0.028351\n","2019-01-07 -0.014423 0.003876 0.013605 ... 0.016667 -0.008311 -0.025773\n","2019-01-08 -0.040385 0.000000 -0.023810 ... 0.018519 -0.016623 -0.048969\n","... ... ... ... ... ... ... ...\n","2019-12-23 -0.076923 -0.581395 -0.539683 ... 0.451852 -0.479019 -0.203608\n","2019-12-24 -0.091346 -0.596124 -0.531746 ... 0.451852 -0.487128 -0.255155\n","2019-12-26 -0.070192 -0.591473 -0.543084 ... 0.451852 -0.482060 -0.278351\n","2019-12-27 -0.072115 -0.577519 -0.532880 ... 0.481481 -0.467869 -0.278351\n","2019-12-30 -0.072115 -0.575194 -0.532880 ... 0.481481 -0.467869 -0.280928\n","\n","[246 rows x 21 columns]"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"markdown","metadata":{"id":"p21UUTOVZhX0","colab_type":"text"},"source":["종목별 12월 30일의 최종 수익률은 마지막 행(row)가 됩니다."]},{"cell_type":"code","metadata":{"id":"TijEx3UWEiV-","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":413},"outputId":"7dbfeed5-6c14-4d10-9f61-c8392baf9e70","executionInfo":{"status":"ok","timestamp":1582472690380,"user_tz":-540,"elapsed":24503,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["returns = acc_rets.iloc[-1]\n","returns"],"execution_count":36,"outputs":[{"output_type":"execute_result","data":{"text/plain":["바디텍메드 -0.072115\n","수젠텍 -0.575194\n","엑세스바이오 -0.532880\n","옵티팜 -0.009858\n","메타바이오메드 -0.059122\n","앱클론 -0.060890\n","지노믹트리 -0.148820\n","바이오니아 -0.099469\n","이수앱지스 0.077796\n","파나진 -0.475978\n","나이벡 0.186151\n","씨젠 0.964744\n","아스타 -0.413752\n","세운메디칼 -0.146825\n","알리코제약 0.165289\n","피씨엘 -0.154250\n","한스바이오메드 0.014228\n","휴마시스 0.041199\n","메디안디노스틱 0.481481\n","녹십자엠에스 -0.467869\n","프로테옴텍 -0.280928\n","Name: 2019-12-30 00:00:00, dtype: float64"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"markdown","metadata":{"id":"Y2ADA5DAZ-_T","colab_type":"text"},"source":["수익률이 큰 종목부터 나열해 봅니다"]},{"cell_type":"code","metadata":{"id":"o9rZWC-HEiQp","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":413},"outputId":"13772a29-d6b0-4f8c-c58a-5cc864e3314c","executionInfo":{"status":"ok","timestamp":1582472690382,"user_tz":-540,"elapsed":24500,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["returns.sort_values(ascending=False)"],"execution_count":37,"outputs":[{"output_type":"execute_result","data":{"text/plain":["씨젠 0.964744\n","메디안디노스틱 0.481481\n","나이벡 0.186151\n","알리코제약 0.165289\n","이수앱지스 0.077796\n","휴마시스 0.041199\n","한스바이오메드 0.014228\n","옵티팜 -0.009858\n","메타바이오메드 -0.059122\n","앱클론 -0.060890\n","바디텍메드 -0.072115\n","바이오니아 -0.099469\n","세운메디칼 -0.146825\n","지노믹트리 -0.148820\n","피씨엘 -0.154250\n","프로테옴텍 -0.280928\n","아스타 -0.413752\n","녹십자엠에스 -0.467869\n","파나진 -0.475978\n","엑세스바이오 -0.532880\n","수젠텍 -0.575194\n","Name: 2019-12-30 00:00:00, dtype: float64"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"markdown","metadata":{"id":"uUXTLFu_cqBj","colab_type":"text"},"source":["2019년 1년의 연간 수익률에서 가장 높은 수익률을 보인 것은 씨젠 96.4% 이고, 가장 낮은 수익률을 보인것은 수젠텍 -57.5% 입니다."]},{"cell_type":"code","metadata":{"id":"9xcZ7t_6cFP5","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":35},"outputId":"b436bf9b-9efb-4c77-8b57-743a6ad7abcb","executionInfo":{"status":"ok","timestamp":1582472690385,"user_tz":-540,"elapsed":24498,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["returns.mean()"],"execution_count":38,"outputs":[{"output_type":"execute_result","data":{"text/plain":["-0.07462202024155605"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"markdown","metadata":{"id":"6zV8pjSCcFLC","colab_type":"text"},"source":["21개 종목의 평균수익률은 -7.4% 입니다."]},{"cell_type":"markdown","metadata":{"id":"c4JNnpa9dZPw","colab_type":"text"},"source":["## 다양한 기간에 대한 수익률\n","\n","기간을 달리해서 수익률을 추출해 봅니다."]},{"cell_type":"code","metadata":{"id":"qDl3d_58cFGQ","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":413},"outputId":"8079f11a-a631-4809-85ee-127bfd4a0b08","executionInfo":{"status":"ok","timestamp":1582472690831,"user_tz":-540,"elapsed":24939,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["df = med['2019-12-01':'2019-12-30'] # 특정 기간(12월 1달) 동안\n","acc_rets = df / df.iloc[0] - 1.0\n","acc_rets.iloc[-1]"],"execution_count":39,"outputs":[{"output_type":"execute_result","data":{"text/plain":["바디텍메드 0.040992\n","수젠텍 -0.041958\n","엑세스바이오 -0.021378\n","옵티팜 0.030787\n","메타바이오메드 0.096457\n","앱클론 0.134371\n","지노믹트리 0.015152\n","바이오니아 0.046225\n","이수앱지스 0.047244\n","파나진 -0.062000\n","나이벡 0.082927\n","씨젠 0.104505\n","아스타 -0.063584\n","세운메디칼 0.028708\n","알리코제약 0.084615\n","피씨엘 0.002488\n","한스바이오메드 0.012170\n","휴마시스 0.007246\n","메디안디노스틱 0.000000\n","녹십자엠에스 -0.062500\n","프로테옴텍 -0.041237\n","Name: 2019-12-30 00:00:00, dtype: float64"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"markdown","metadata":{"id":"CKaOPTaEcFB9","colab_type":"text"},"source":["'2019-12-30' 시점을 기준으로 과거 5일, 10일, 20일, 60일, 120일, 240일 각각 수익률을 구해봅니다."]},{"cell_type":"markdown","metadata":{"id":"AILaVBGrcE8i","colab_type":"text"},"source":["각 기간의 (시작날짜, 끝날짜)는 다음과 같이 생성할 수 있습니다."]},{"cell_type":"code","metadata":{"id":"mWe6E8U4fAZ8","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":125},"outputId":"9b01c438-6298-4719-d34f-3bdc796da331","executionInfo":{"status":"ok","timestamp":1582472690832,"user_tz":-540,"elapsed":24936,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["from datetime import datetime, timedelta\n","\n","the_day = datetime(2019, 12, 30)\n","\n","for days in [5, 10, 20, 60, 120, 240]:\n"," start = the_day - timedelta(days)\n"," end = the_day\n"," print(start, '~', end)"],"execution_count":40,"outputs":[{"output_type":"stream","text":["2019-12-25 00:00:00 ~ 2019-12-30 00:00:00\n","2019-12-20 00:00:00 ~ 2019-12-30 00:00:00\n","2019-12-10 00:00:00 ~ 2019-12-30 00:00:00\n","2019-10-31 00:00:00 ~ 2019-12-30 00:00:00\n","2019-09-01 00:00:00 ~ 2019-12-30 00:00:00\n","2019-05-04 00:00:00 ~ 2019-12-30 00:00:00\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"kd1bFXvrfAWq","colab_type":"code","colab":{}},"source":["from datetime import datetime, timedelta\n","\n","the_day = datetime(2019, 12, 30)\n","row_dict = {}\n","for days in [5, 10, 20, 60, 120, 240]:\n"," start = the_day - timedelta(days)\n"," end = the_day\n","\n"," df = med[start:end] # 특정 기간\n"," acc_rets = df / df.iloc[0] - 1.0\n"," row_dict[days] = acc_rets.iloc[-1] "],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"N4FbW7AtfASE","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":700},"outputId":"2575972b-059f-47c7-bb6f-0685840c89f9","executionInfo":{"status":"ok","timestamp":1582472690833,"user_tz":-540,"elapsed":24927,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["df_rets = pd.DataFrame(row_dict)\n","df_rets"],"execution_count":42,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
5102060120240
바디텍메드-0.0020680.0136550.0255050.1286550.084270-0.138393
수젠텍0.0398480.000000-0.035211-0.094215-0.125997-0.619444
엑세스바이오0.022333-0.026005-0.011990-0.021378-0.072072-0.492611
옵티팜0.026107-0.0109410.0180180.008929-0.030043-0.174429
메타바이오메드0.0411210.0295750.0670500.0529300.127530-0.068562
앱클론0.0956280.0881950.0497380.1169920.029525-0.343699
지노믹트리0.0610860.093240-0.0712870.1328500.522727-0.366216
바이오니아0.0256800.0576320.046225-0.089812-0.015942-0.317588
이수앱지스0.0294120.0000000.024653-0.027778-0.019174-0.149616
파나진0.0107760.008602-0.022917-0.099808-0.192771-0.475978
나이벡0.0571430.1100000.1314980.1408020.7076920.149068
씨젠0.0115510.0407470.1227110.4423530.3775280.261317
아스타-0.020161-0.067179-0.074286-0.356291-0.041420-0.370466
세운메디칼0.0000000.0015530.036977-0.034431-0.066570-0.161248
알리코제약0.1058820.0143880.060150-0.0375430.6022730.184874
피씨엘0.0215460.0100250.053595-0.1220040.083333-0.085131
한스바이오메드0.0352700.0527430.0685220.0919040.118834-0.105735
휴마시스0.025830-0.0071430.014599-0.014184-0.047945-0.268421
메디안디노스틱0.0204080.0204080.000000-0.0243900.0025060.261830
녹십자엠에스0.027397-0.0037950.023392-0.2758620.013514-0.414193
프로테옴텍-0.003571-0.041237-0.041237-0.097087-0.057432-0.066890
\n","
"],"text/plain":[" 5 10 20 60 120 240\n","바디텍메드 -0.002068 0.013655 0.025505 0.128655 0.084270 -0.138393\n","수젠텍 0.039848 0.000000 -0.035211 -0.094215 -0.125997 -0.619444\n","엑세스바이오 0.022333 -0.026005 -0.011990 -0.021378 -0.072072 -0.492611\n","옵티팜 0.026107 -0.010941 0.018018 0.008929 -0.030043 -0.174429\n","메타바이오메드 0.041121 0.029575 0.067050 0.052930 0.127530 -0.068562\n","앱클론 0.095628 0.088195 0.049738 0.116992 0.029525 -0.343699\n","지노믹트리 0.061086 0.093240 -0.071287 0.132850 0.522727 -0.366216\n","바이오니아 0.025680 0.057632 0.046225 -0.089812 -0.015942 -0.317588\n","이수앱지스 0.029412 0.000000 0.024653 -0.027778 -0.019174 -0.149616\n","파나진 0.010776 0.008602 -0.022917 -0.099808 -0.192771 -0.475978\n","나이벡 0.057143 0.110000 0.131498 0.140802 0.707692 0.149068\n","씨젠 0.011551 0.040747 0.122711 0.442353 0.377528 0.261317\n","아스타 -0.020161 -0.067179 -0.074286 -0.356291 -0.041420 -0.370466\n","세운메디칼 0.000000 0.001553 0.036977 -0.034431 -0.066570 -0.161248\n","알리코제약 0.105882 0.014388 0.060150 -0.037543 0.602273 0.184874\n","피씨엘 0.021546 0.010025 0.053595 -0.122004 0.083333 -0.085131\n","한스바이오메드 0.035270 0.052743 0.068522 0.091904 0.118834 -0.105735\n","휴마시스 0.025830 -0.007143 0.014599 -0.014184 -0.047945 -0.268421\n","메디안디노스틱 0.020408 0.020408 0.000000 -0.024390 0.002506 0.261830\n","녹십자엠에스 0.027397 -0.003795 0.023392 -0.275862 0.013514 -0.414193\n","프로테옴텍 -0.003571 -0.041237 -0.041237 -0.097087 -0.057432 -0.066890"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"code","metadata":{"id":"ooeCZX1Ix5C4","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":143},"outputId":"e5143851-7081-461f-8b20-592462a782a5","executionInfo":{"status":"ok","timestamp":1582473702502,"user_tz":-540,"elapsed":989,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["# 섹터 전체 기간별 수익률\n","df_rets.mean()"],"execution_count":47,"outputs":[{"output_type":"execute_result","data":{"text/plain":["5 0.030058\n","10 0.018308\n","20 0.023129\n","60 -0.008541\n","120 0.095256\n","240 -0.179121\n","dtype: float64"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"DYvJwj3IkDcr","colab_type":"text"},"source":["## 데이터프레임 스타일"]},{"cell_type":"code","metadata":{"id":"0uDrv9XNjdIp","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":481},"outputId":"f000b41b-6588-4c04-b015-6c610327b808","executionInfo":{"status":"ok","timestamp":1582472690833,"user_tz":-540,"elapsed":24921,"user":{"displayName":"Sean-June Lee","photoUrl":"https://lh3.googleusercontent.com/a-/AAuE7mA0z_4qCQ4H5MJ8ixUx69EmwIvNuV7BfS9FRIdfmCM=s64","userId":"12576390002043678893"}}},"source":["def color_negative_red(val):\n"," color = 'red' if val < 0 else 'black'\n"," return 'color: %s' % color\n","\n","def highlight_max(s):\n"," is_max = s == s.max()\n"," return ['background-color: yellow' if v else '' for v in is_max]\n","\n","df_rets.style.\\\n"," applymap(color_negative_red).\\\n"," apply(highlight_max)"],"execution_count":43,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
5 10 20 60 120 240
바디텍메드-0.002068250.01365550.02550480.1286550.0842697-0.138393
수젠텍0.03984820-0.0352113-0.0942149-0.125997-0.619444
엑세스바이오0.0223325-0.0260047-0.0119904-0.0213777-0.0720721-0.492611
옵티팜0.0261067-0.01094090.0180180.00892857-0.0300429-0.174429
메타바이오메드0.04112150.02957490.06704980.05293010.12753-0.0685619
앱클론0.09562840.08819540.04973820.1169920.029525-0.343699
지노믹트리0.0610860.0932401-0.07128710.132850.522727-0.366216
바이오니아0.02567980.05763240.046225-0.0898123-0.015942-0.317588
이수앱지스0.029411800.0246533-0.0277778-0.019174-0.149616
파나진0.01077590.00860215-0.0229167-0.0998081-0.192771-0.475978
나이벡0.05714290.110.1314980.1408020.7076920.149068
씨젠0.01155120.0407470.1227110.4423530.3775280.261317
아스타-0.0201613-0.0671785-0.0742857-0.356291-0.0414201-0.370466
세운메디칼00.00155280.0369775-0.0344311-0.0665702-0.161248
알리코제약0.1058820.01438850.0601504-0.03754270.6022730.184874
피씨엘0.02154630.01002510.0535948-0.1220040.0833333-0.0851305
한스바이오메드0.03526970.05274260.06852250.09190370.118834-0.105735
휴마시스0.0258303-0.007142860.0145985-0.0141844-0.0479452-0.268421
메디안디노스틱0.02040820.02040820-0.02439020.002506270.26183
녹십자엠에스0.0273973-0.003795070.0233918-0.2758620.0135135-0.414193
프로테옴텍-0.00357143-0.0412371-0.0412371-0.0970874-0.0574324-0.0668896
"],"text/plain":[""]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"code","metadata":{"id":"xo7oAoEEjdBA","colab_type":"code","colab":{}},"source":["## 엑셀로 저장\n","df_rets.style.\\\n"," applymap(color_negative_red).\\\n"," apply(highlight_max).\\\n"," to_excel('기간별수익률데이터(2019.12.30).xlsx', engine='openpyxl')"],"execution_count":0,"outputs":[]},{"cell_type":"code","metadata":{"id":"PhHYBcDmkOJM","colab_type":"code","colab":{}},"source":["# 구글 colab 에서 실행한 경우 엑셀 파일을 다음과 같이 다운로드 합니다.\n","\n","from google.colab import files\n","files.download('기간별수익률데이터(2019.12.30).xlsx')"],"execution_count":0,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"2r_291L2CMv7","colab_type":"text"},"source":["#### 2020 [FinanceData.KR](http://financedata.kr) | [facebook.com/financedata](http://facebook.com/financedata)"]}]}