Tutorial ๐Ÿฃยถ

โš ๏ธ WARNING coredotfinance ์˜ ํ•จ์ˆ˜๋“ค์€ data.krx.co.kr ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ POST ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•ด์„œ ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด๋ถ„๋ณ„ํ•œ ์‚ฌ์šฉ์€ IP ์ฐจ๋‹จ์ด๋‚˜ ๊ทธ ์ด์ƒ์˜ ํŒจ๋„ํ‹ฐ๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์‚ผ์„ฑ์ „์ž ์ฃผ์‹์„ ๋ถˆ๋Ÿฌ์˜ค์ž using KrxReader ๐Ÿ“ˆยถ

์ง€๋‚œ 1๋…„๊ฐ„์˜ ์‚ผ์„ฑ์ „์ž ์ฃผ์‹์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ  matplotlib์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค ๋ณด๋Š” ๊ฒƒ์„ ํ†ตํ•ด์„œ coredotfinance์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ตํ˜€๋ณด์ž

[11]:
from coredotfinance.data import KrxReader
krx = KrxReader()

๋จผ์ € krx ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋‹ค์Œ krx.read๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์ข…๋ชฉ์˜ symbol(์ข…๋ชฉ์ฝ”๋“œ)๋ฅผ ์•Œ์•„๋‚ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ krx.search()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

search(symbol, kind=โ€˜stockโ€™, **kwargs)

  • symbol : str

    ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ชฉ ์ฝ”๋“œ
    
  • kind : str

    ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜
    
     'stock' : ์ฃผ์‹
     'index': ์ง€์ˆ˜
     'other_index' : ๊ธฐํƒ€ ์ง€์ˆ˜
     'etf': ETF
     'etn': ETN
     'elw': ELW
    
  • devision : str

    ๊ธฐํƒ€ ์ง€์ˆ˜(other_index) ์˜ ์ข…๋ฅ˜
    kind๊ฐ€ `other_index` ์ผ๋•Œ๋งŒ ๋„ฃ์–ด์ค€๋‹ค
    ['์„ ๋ฌผ์ง€์ˆ˜', '์ „๋žต์ง€์ˆ˜', '์˜ต์…˜์ง€์ฃผ', '์ƒํ’ˆ์ง€์ˆ˜']
    
[5]:
krx.search('์‚ผ์„ฑ์ „์ž')
[5]:
('์‚ผ์„ฑ์ „์ž', 'KR7005930003', '005930')

search์˜ ๊ฒฐ๊ณผ๋กœ โ€˜์ข…๋ชฉ๋ช…โ€™, โ€˜์ข…๋ชฉ๊ณ ์œ ์ฝ”๋“œโ€™, โ€˜์ข…๋ชฉ์ฝ”๋“œโ€™ ๋ฅผ tuple ํ˜•์‹์œผ๋กœ ๋ฐ›๊ฒŒ ๋œ๋‹ค.

krx.read()๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ข…๋ชฉ์ฝ”๋“œ๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค.

readยถ

read(self, symbol, *, start=None, end=None, kind=โ€œstockโ€, api=False, **kwargs)

ํ•ด๋‹น ์ฃผ์‹ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์ž‘์ผ(start) ๋ถ€ํ„ฐ ์ข…๋ฃŒ์ผ(end) ๊นŒ์ง€ ์ฝ์–ด์˜จ๋‹ค.

  • symbol : str

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ชฉ์ฝ”๋“œ.
    ํ˜•ํƒœ๋Š” ์ข…๋ชฉ๊ณผ ์ข…๋ฅ˜๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค.
    ์˜ˆ) ์‚ผ์„ฑ์ „์ž : '005930', ARIRANG 200 : '152100'
    
  • start : str

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘์ผ.
    ํ˜•ํƒœ๋Š” YYYY-MM-DD๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
    ์˜ˆ) 2021-06-01
    
  • end : str

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฃŒ์ผ.
    ํ˜•ํƒœ๋Š” YYYY-MM-DD๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
    ์˜ˆ) 2021-06-01
    
  • kind : str, default โ€œstockโ€

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜.
    
     'stock' : ์ฃผ์‹
     'per' : PER/EPS/๋ฐฐ๋‹น๊ธˆ ๋“ฑ
     'index': ์ง€์ˆ˜
     'other_index' : ๊ธฐํƒ€ ์ง€์ˆ˜
     'etf': ETF
     'etn': ETN
     'elw': ELW
    
  • kwargs

    • division : str

      ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์„ธ๋ถ€ ๊ตฌ๋ถ„
      other_index : ['์„ ๋ฌผ์ง€์ˆ˜', '์˜ต์…˜์ง€์ˆ˜', '์ „๋žต์ง€์ˆ˜', '์ƒํ’ˆ์ง€์ˆ˜']
      
    • reverse : bool, default false

      dataframe์„ ๊ฑฐ๊พธ๋กœ ์ •๋ ฌํ•˜๊ธฐ
      
    • kor : bool, default false

      columns๋ฅผ ํ•œ๊ธ€๋กœ ๋ฐ›์•„์˜ค๊ธฐ
      
    • adjust : bool, default false

      ์ˆ˜์ •์ฃผ๊ฐ€ ์ ์šฉํ•˜๊ธฐ
      
[2]:
dataframe = krx.read('005930', start='2020-07-01', end='2021-07-01')
dataframe
์‚ผ์„ฑ์ „์ž
[2]:
close change change_ratio open high low volume trading_value market_cap shares_outstanding
2021-07-01 80100 -600 -0.74 80500 80600 80000 13382882 1073188213795 478179582255000 5969782550
2021-06-30 80700 -300 -0.37 81100 81400 80700 13288643 1075902355151 481761451785000 5969782550
2021-06-29 81000 -900 -1.10 81900 82100 80800 15744317 1277813841567 483552386550000 5969782550
2021-06-28 81900 300 0.37 81700 82000 81600 11578529 946992165410 488925190845000 5969782550
2021-06-25 81600 400 0.49 81500 81900 81200 13481405 1099148742353 487134256080000 5969782550
... ... ... ... ... ... ... ... ... ... ...
2020-07-07 53400 -1600 -2.91 55800 55900 53400 30760032 1672753640892 318786388170000 5969782550
2020-07-06 55000 1400 2.61 54000 55000 53800 19856623 1084003637100 328338040250000 5969782550
2020-07-03 53600 700 1.32 53000 53600 52700 11887868 633333112600 319980344680000 5969782550
2020-07-02 52900 300 0.57 52100 52900 52100 14142583 742668048500 315801496895000 5969782550
2020-07-01 52600 -200 -0.38 53400 53600 52400 16706143 884144616500 314010562130000 5969782550

249 rows ร— 10 columns

colum์˜ ์ด๋ฆ„์ด ๋ชจ๋‘ ์˜์–ด๋กœ ๋˜์–ด ์žˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” cufflinks ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ˜ธํ™˜์„ฑ์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋‹ค.

๋งŒ์•ฝ ํ•œ๊ธ€ colum์ด ํ•„์š”ํ•˜๋‹ค๋ฉด kor=True ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

kor=Trueยถ

[6]:
dataframe = krx.read('005930', start='2020-07-01', end='2021-07-01', kor=True)
dataframe
์‚ผ์„ฑ์ „์ž
[6]:
์ข…๊ฐ€ ๋Œ€๋น„ ๋“ฑ๋ฝ๋ฅ  ์‹œ๊ฐ€ ๊ณ ๊ฐ€ ์ €๊ฐ€ ๊ฑฐ๋ž˜๋Ÿ‰ ๊ฑฐ๋ž˜๋Œ€๊ธˆ ์‹œ๊ฐ€์ด์•ก ์ƒ์žฅ์ฃผ์‹์ˆ˜
2021-07-01 80100 -600 -0.74 80500 80600 80000 13382882 1073188213795 478179582255000 5969782550
2021-06-30 80700 -300 -0.37 81100 81400 80700 13288643 1075902355151 481761451785000 5969782550
2021-06-29 81000 -900 -1.10 81900 82100 80800 15744317 1277813841567 483552386550000 5969782550
2021-06-28 81900 300 0.37 81700 82000 81600 11578529 946992165410 488925190845000 5969782550
2021-06-25 81600 400 0.49 81500 81900 81200 13481405 1099148742353 487134256080000 5969782550
... ... ... ... ... ... ... ... ... ... ...
2020-07-07 53400 -1600 -2.91 55800 55900 53400 30760032 1672753640892 318786388170000 5969782550
2020-07-06 55000 1400 2.61 54000 55000 53800 19856623 1084003637100 328338040250000 5969782550
2020-07-03 53600 700 1.32 53000 53600 52700 11887868 633333112600 319980344680000 5969782550
2020-07-02 52900 300 0.57 52100 52900 52100 14142583 742668048500 315801496895000 5969782550
2020-07-01 52600 -200 -0.38 53400 53600 52400 16706143 884144616500 314010562130000 5969782550

249 rows ร— 10 columns

์ด์ œ matplotlib์„ ์ด์šฉํ•ด์„œ ์ข…๊ฐ€ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์ž.

๊ทธ๋ž˜ํ”„ ๊ทธ๋ฆฌ๊ธฐ with matplotlibยถ

[9]:
import matplotlib.pyplot as plt

plt.plot(dataframe['์ข…๊ฐ€'])
plt.show()
์‚ผ์„ฑ์ „์ž
_images/tutorial_9_1.png

์ˆ˜์ •์ฃผ๊ฐ€ ์˜ต์…˜์„ ์ด์šฉํ•ด์„œ ์นด์นด์˜ค๐Ÿซ์˜ ์ฃผ์‹์„ ๋ถˆ๋Ÿฌ์˜ค์žยถ

์–ผ๋งˆ์ „์— ์นด์นด์˜ค๊ฐ€ ์ฃผ์‹์„ ๋ถ„ํ• ํ–ˆ๋‹ค.

์ด๋•Œ ์˜ฌ๋ฐ”๋ฅธ ์ฃผ์‹ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ˆ˜์ •์ฃผ๊ฐ€ ์ ์šฉ์ด ํ•„์š”ํ•˜๋‹ค.

์šฐ์„  ์นด์นด์˜ค์˜ ์ฃผ์‹ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์ž

[10]:
krx.search('์นด์นด์˜ค')
[10]:
('์นด์นด์˜ค', 'KR7035720002', '035720')
[11]:
dataframe = krx.read('035720', start='2020-07-01', end='2021-07-01', kor=True)
plt.plot(dataframe['์ข…๊ฐ€'])
plt.show()
์นด์นด์˜ค
_images/tutorial_12_1.png

์ˆ˜์ • ์ฃผ๊ฐ€๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์„๋•Œ ์ด๋Ÿฐ ๊ทธ๋ž˜ํ”„๋ชจ์–‘์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์ˆ˜์ • ์ฃผ๊ฐ€๋ฅผ ์ ์šฉํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์ž

adjust=Trueยถ

[12]:
dataframe = krx.read('035720', start='2020-07-01', end='2021-07-01', kor=True, adjust=True)
plt.plot(dataframe['์ข…๊ฐ€'])
plt.show()
์นด์นด์˜ค
_images/tutorial_14_1.png

ํ•ด๋‹น์ผ์˜ ์ฃผ์‹ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€๋ณด์žยถ

๊ฐ€๋” ์–ด๋–ค ๋‚ ์˜ ์ƒ์žฅ ์ฃผ์‹ ์ข…๋ชฉ์ด๋‚˜ ์ฃผ๊ฐ€๋ฅผ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ read_date ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

read_dateยถ

read_date(self, date=None, *, kind=โ€œstockโ€, api=False, **kwargs)

  • date : str

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ์ผ.
    ํ˜•ํƒœ๋Š” YYYY-MM-DD๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
    ์˜ˆ) 2021-06-01
    
  • kind : str, default โ€œstockโ€

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜.
    
     'stock' : ์ฃผ์‹
     'per' : PER/EPS/๋ฐฐ๋‹น๊ธˆ ๋“ฑ
     'index': ์ง€์ˆ˜
     'other_index' : ๊ธฐํƒ€ ์ง€์ˆ˜
     'etf': ETF
     'etn': ETN
     'elw': ELW
    
  • kwargs

    • division : str

      ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์„ธ๋ถ€ ๊ตฌ๋ถ„
      other_index : ['์„ ๋ฌผ์ง€์ˆ˜', '์˜ต์…˜์ง€์ˆ˜', '์ „๋žต์ง€์ˆ˜', '์ƒํ’ˆ์ง€์ˆ˜']
      
    • reverse : bool, default false

      dataframe์„ ๊ฑฐ๊พธ๋กœ ์ •๋ ฌํ•˜๊ธฐ
      
    • kor : bool, default false

      columns๋ฅผ ํ•œ๊ธ€๋กœ ๋ฐ›์•„์˜ค๊ธฐ
      
    • adjust : bool, default false

      ์ˆ˜์ •์ฃผ๊ฐ€ ์ ์šฉํ•˜๊ธฐ
      
[14]:
dataframe = krx.read_date('2021-03-01', kor=True )
dataframe
[14]:
์ข…๋ชฉ์ฝ”๋“œ ์ข…๋ชฉ๋ช… ์‹œ์žฅ๊ตฌ๋ถ„ ์†Œ์†๋ถ€ ์ข…๊ฐ€ ๋Œ€๋น„ ๋“ฑ๋ฝ๋ฅ  ์‹œ๊ฐ€ ๊ณ ๊ฐ€ ์ €๊ฐ€ ๊ฑฐ๋ž˜๋Ÿ‰ ๊ฑฐ๋ž˜๋Œ€๊ธˆ ์‹œ๊ฐ€์ด์•ก ์ƒ์žฅ์ฃผ์‹์ˆ˜
0 060310 3S KOSDAQ ์ค‘๊ฒฌ๊ธฐ์—…๋ถ€ 0 0 0 0 0 0 0 0 0 44802511
1 095570 AJ๋„คํŠธ์›์Šค KOSPI 0 0 0 0 0 0 0 0 0 46822295
2 006840 AKํ™€๋”ฉ์Šค KOSPI 0 0 0 0 0 0 0 0 0 13247561
3 054620 APSํ™€๋”ฉ์Šค KOSDAQ ์ค‘๊ฒฌ๊ธฐ์—…๋ถ€ 0 0 0 0 0 0 0 0 0 20394221
4 265520 AP์‹œ์Šคํ…œ KOSDAQ ์šฐ๋Ÿ‰๊ธฐ์—…๋ถ€ 0 0 0 0 0 0 0 0 0 14480227
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2541 000547 ํฅ๊ตญํ™”์žฌ2์šฐB KOSPI 0 0 0 0 0 0 0 0 0 153600
2542 000545 ํฅ๊ตญํ™”์žฌ์šฐ KOSPI 0 0 0 0 0 0 0 0 0 768000
2543 003280 ํฅ์•„ํ•ด์šด KOSPI 0 0 0 0 0 0 0 0 0 116732559
2544 037440 ํฌ๋ฆผ KOSDAQ ์ค‘๊ฒฌ๊ธฐ์—…๋ถ€ 0 0 0 0 0 0 0 0 0 13922475
2545 238490 ํž˜์Šค KOSDAQ ์šฐ๋Ÿ‰๊ธฐ์—…๋ถ€ 0 0 0 0 0 0 0 0 0 11312236

2546 rows ร— 14 columns

์œ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด ์ƒ์žฅ์ฃผ์‹์ˆ˜ ๋ง๊ณ ๋Š” ๋‹ค๋ฅธ ์ˆซ์ž๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ 0์œผ๋กœ ๋‚˜์˜จ๋‹ค.

๊ทธ ์ด์œ ๋Š” ์กฐํšŒํ•œ ๋‚ ์งœ๊ฐ€ ๊ณตํœด์ผ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ ๊ณตํœด์ผ, ์ฃผ๋ง ๋“ฑ์€ ์ฃผ์‹์‹œ์žฅ์ด ์—ด๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ฅผ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

[15]:
dataframe = krx.read_date('2021-03-03', kor=True )
dataframe
[15]:
์ข…๋ชฉ์ฝ”๋“œ ์ข…๋ชฉ๋ช… ์‹œ์žฅ๊ตฌ๋ถ„ ์†Œ์†๋ถ€ ์ข…๊ฐ€ ๋Œ€๋น„ ๋“ฑ๋ฝ๋ฅ  ์‹œ๊ฐ€ ๊ณ ๊ฐ€ ์ €๊ฐ€ ๊ฑฐ๋ž˜๋Ÿ‰ ๊ฑฐ๋ž˜๋Œ€๊ธˆ ์‹œ๊ฐ€์ด์•ก ์ƒ์žฅ์ฃผ์‹์ˆ˜
0 060310 3S KOSDAQ ์ค‘๊ฒฌ๊ธฐ์—…๋ถ€ 2410 35 1.47 2375 2430 2370 146580 352937215 107974051510 44802511
1 095570 AJ๋„คํŠธ์›์Šค KOSPI 3970 0 0.00 4000 4000 3935 14248 56384865 185884511150 46822295
2 006840 AKํ™€๋”ฉ์Šค KOSPI 31400 1200 3.97 30400 31550 29900 96031 2981767450 415973415400 13247561
3 054620 APSํ™€๋”ฉ์Šค KOSDAQ ์ค‘๊ฒฌ๊ธฐ์—…๋ถ€ 7710 -180 -2.28 7860 7860 7630 197848 1524869260 157239443910 20394221
4 265520 AP์‹œ์Šคํ…œ KOSDAQ ์šฐ๋Ÿ‰๊ธฐ์—…๋ถ€ 29850 1950 6.99 28350 29850 28250 745697 21748352100 432234775950 14480227
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2541 000547 ํฅ๊ตญํ™”์žฌ2์šฐB KOSPI 19700 200 1.03 19650 19850 19600 243 4767900 3025920000 153600
2542 000545 ํฅ๊ตญํ™”์žฌ์šฐ KOSPI 7120 -100 -1.39 7150 7160 7090 6206 44239500 5468160000 768000
2543 003280 ํฅ์•„ํ•ด์šด KOSPI 258 0 0.00 0 0 0 0 0 30117000222 116732559
2544 037440 ํฌ๋ฆผ KOSDAQ ์ค‘๊ฒฌ๊ธฐ์—…๋ถ€ 4250 55 1.31 4195 4250 4180 20503 86439380 59170518750 13922475
2545 238490 ํž˜์Šค KOSDAQ ์šฐ๋Ÿ‰๊ธฐ์—…๋ถ€ 13850 450 3.36 13450 13950 13300 211884 2901116550 156674468600 11312236

2546 rows ร— 14 columns

ํœด์ผ์ด ์•„๋‹Œ ๋‚ ์„ ์กฐํšŒํ•˜๋ฉด ์ •์ƒ์ ์ธ ๊ฐ’๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ETF๋ฅผ ๋ถˆ๋Ÿฌ์˜ค์žยถ

๐Ÿ’ก Info ETF ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฃผ์‹์„ ์ œ์™ธํ•œ ETN, ELW, PER, index, per ๋“ฑ์˜ ์ƒํ’ˆ๋“ค๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

ETF๋„ ์ฃผ์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ข…๋ชฉ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ETF์˜ ์ข…๋ชฉ์ฝ”๋“œ๋ฅผ ๋จผ์ € ๋ถˆ๋Ÿฌ์˜ค์ž

[2]:
krx.search('๋‚˜์Šค๋‹ฅ๊ธฐ์ˆ ', kind='etf')
[2]:
('ARIRANG ๋ฏธ๊ตญ๋‚˜์Šค๋‹ฅ๊ธฐ์ˆ ์ฃผ', 'KR7287180004', '287180')

์œ„์—์„œ ๋ณด๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์ฃผ์‹์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๊ธˆ์œต์ƒํ’ˆ๋“ค์€ kind ์ธ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. read ํ•จ์ˆ˜๋ฅผ ์“ธ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค

[3]:
dataframe = krx.read('287180', kind='etf', start='2021-01-01', end='2021-07-01')
dataframe
ARIRANG ๋ฏธ๊ตญ๋‚˜์Šค๋‹ฅ๊ธฐ์ˆ ์ฃผ
[3]:
close change change_ratio NAV open high low volume trading_value market_cap Net Assets shares_outstanding Fundamental_index
index_name close change change_ratio
2021-07-01 23020 150 0.66 22992.88 22880 23025 22870 18151 417127085 29926000000 26441816772 1300000 NASDAQ 100 Technology Sector Index 8607.37 73.84 -0.85
2021-06-30 22870 45 0.20 22956.50 22865 23155 22825 89193 2046890495 29731000000 26399972873 1300000 NASDAQ 100 Technology Sector Index 8681.21 40.19 -0.46
2021-06-29 22825 390 1.74 22837.23 22575 22915 22575 35087 799583330 29672500000 26262811311 1300000 NASDAQ 100 Technology Sector Index 8721.40 64.01 0.74
2021-06-28 22435 5 0.02 22490.05 22430 22555 22365 7901 177369010 29165500000 29237061455 1300000 NASDAQ 100 Technology Sector Index 8657.39 148.55 1.75
2021-06-25 22430 30 0.13 22439.04 22510 22595 22360 44748 1003085835 29159000000 29170746982 1300000 NASDAQ 100 Technology Sector Index 8508.84 1.77 -0.02
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2021-01-08 19630 595 3.13 19619.43 19440 19790 19440 37531 738128170 17667000000 17657490675 900000 NASDAQ 100 Technology Sector Index 7751.66 80.90 1.05
2021-01-07 19035 50 0.26 18955.77 18985 19205 18935 30523 581771565 17131500000 17060190480 900000 NASDAQ 100 Technology Sector Index 7670.76 243.58 3.28
2021-01-06 18985 100 -0.52 19225.74 19715 19715 18975 18340 350602190 17086500000 17303166561 900000 NASDAQ 100 Technology Sector Index 7427.18 117.74 -1.56
2021-01-05 19085 35 -0.18 19054.30 18995 19115 18960 12585 239870605 17176500000 17148868444 900000 NASDAQ 100 Technology Sector Index 7544.92 81.74 1.10
2021-01-04 19120 30 -0.16 19158.03 19300 19300 19050 18296 349801875 17208000000 17242229126 900000 NASDAQ 100 Technology Sector Index 7463.18 66.66 -0.89

124 rows ร— 16 columns

ETF๋„ ์ฃผ์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ read_date๋ฅผ ์จ์„œ ํŠน์ •์ผ์— ์ƒ์žฅ๋œ ETF ์ƒํ’ˆ๋“ค์˜ ์ง€ํ‘œ๋“ค์„ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

[5]:
krx.read_date('2021-03-03', kind='etf')
[5]:
symbol name close change change_ratio NAV open high low volume trading_value market_cap Net Assets shares_outstanding Fundamental_index
index_name close change change_ratio
0 152100 ARIRANG 200 42975 510 1.20 43038.63 42505 42975 42260 181693 7743289310 812227500000 813430038087 18900000 ์ฝ”์Šคํ”ผ 200 420.27 5.47 1.32
1 295820 ARIRANG 200๋™์ผ๊ฐ€์ค‘ 10965 160 1.48 10954.04 10825 10965 10815 32 348420 4386000000 4381616468 400000 ์ฝ”์Šคํ”ผ 200 ๋™์ผ๊ฐ€์ค‘์ง€์ˆ˜ 2359.37 35.33 1.52
2 253150 ARIRANG 200์„ ๋ฌผ๋ ˆ๋ฒ„๋ฆฌ์ง€ 48770 1110 2.33 48704.75 47440 48770 47080 2685 128566885 14631000000 12176186984 300000 ์ฝ”์Šคํ”ผ 200 ์„ ๋ฌผ์ง€์ˆ˜ 2096.96 22.00 1.06
3 253160 ARIRANG 200์„ ๋ฌผ์ธ๋ฒ„์Šค2X 4150 -100 -2.35 4151.05 4325 4325 4150 135276 571040965 15977500000 15566425822 3850000 ์ฝ”์Šคํ”ผ 200 ์„ ๋ฌผ์ง€์ˆ˜ 2096.96 22.00 1.06
4 278420 ARIRANG ESG์šฐ์ˆ˜๊ธฐ์—… 9050 170 1.91 9049.92 8880 9050 8860 2134 19146700 4072500000 4072462846 450000 WISE ESG์šฐ์ˆ˜๊ธฐ์—… ์ง€์ˆ˜ 1219.77 22.12 1.85
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
468 152870 ํŒŒ์›Œ 200 43535 535 1.24 43587.81 42995 43535 42855 260 11204630 19590750000 28332074721 450000 ์ฝ”์Šคํ”ผ 200 420.27 5.47 1.32
469 192720 ํŒŒ์›Œ ๊ณ ๋ฐฐ๋‹น์ €๋ณ€๋™์„ฑ 28900 670 2.37 28923.46 28405 28900 28375 1519 43589000 6936000000 6941629705 240000 ์ฝ”์Šคํ”ผ 200 ๊ณ ๋ฐฐ๋‹น์ง€์ˆ˜ 2817.22 54.18 1.96
470 176710 ํŒŒ์›Œ ์ค‘๊ธฐ๊ตญ๊ณ ์ฑ„ 101815 50 0.05 101837.46 0 0 0 0 0 6108900000 6110247386 60000 KTB INDEX(์‹œ์žฅ๊ฐ€๊ฒฉ) 10779.63 6.47 0.06
471 140950 ํŒŒ์›Œ ์ฝ”์Šคํ”ผ100 33080 455 1.39 33160.44 32630 33080 32550 44 1445245 14555200000 14590594024 440000 ์ฝ”์Šคํ”ผ 100 3215.74 42.26 1.33
472 215620 ํฅ๊ตญ S&P์ฝ”๋ฆฌ์•„๋กœ์šฐ๋ณผ 10910 185 1.72 10996.88 0 0 0 0 0 7527900000 7587849861 690000 S&P Korea ์ €๋ณ€๋™์„ฑ ์ง€์ˆ˜ 8858.61 159.49 1.83

473 rows ร— 18 columns

๋น„ํŠธ์ฝ”์ธ์„ ๋ถˆ๋Ÿฌ์˜ค์ž using BinanceReader ๐Ÿช™ยถ

๋น„ํŠธ์ฝ”์ธ์€ BinanceReader() ์—์„œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค

readยถ

read(self, symbol, start, end, interval, **kwargs):

  • symbol : str, optional

    Binance Symbol
    
  • interval : str, optional

    ์กฐํšŒ ๊ฐ„๊ฒฉ ์„ค์ •
      (1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M)
    
  • start : str

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์‹œ์ž‘์ผ.
    ํ˜•ํƒœ๋Š” YYYY-MM-DD๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
    ์˜ˆ) 2021-06-01
    
  • end : str

    ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฃŒ์ผ.
    ํ˜•ํƒœ๋Š” YYYY-MM-DD๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.
    ์˜ˆ) 2021-06-01
    
[16]:
from coredotfinance.data import BinanceReader
binance = BinanceReader()

๋น„ํŠธ์ฝ”์ธ๋„ ์ฃผ์‹๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ symbol, start, end ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.

์ฐจ์ด์ ์€ interval ์ด๋ผ๋Š” ์ธ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ธ๋ฐ ์ด๋Š” ์กฐํšŒ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์šฐ์„  bitcoin์˜ ์‹ฌ๋ณผ์„ ๋ถˆ๋Ÿฌ์™€๋ณด์ž

symbol_listยถ

[22]:
binance.symbol_list()[10:20]
[22]:
['BNBETH',
 'BTCUSDT',
 'ETHUSDT',
 'HSRBTC',
 'OAXETH',
 'DNTETH',
 'MCOETH',
 'ICNETH',
 'MCOBTC',
 'WTCBTC']

๋น„ํŠธ์ฝ”์ธ์˜ ์‹ฌ๋ณผ์—๋Š” ๊ทœ์น™์ด ์žˆ๋‹ค.

์ฐพ๊ณ ์ž ํ•˜๋Š” ๋น„ํŠธ์ฝ”์ธ์˜ ์•ฝ์–ด + ๊ฐ€๊ฒฉ ๊ธฐ์ค€ ์ด๋‹ค.

โ€˜BNBETHโ€™ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋ณด๋ฉด ์ฐพ๊ณ ์ž ํ•˜๋Š” ์ฝ”์ธ์€ BNB ์ฝ”์ธ์ด๊ณ  ์ด ์ฝ”์ธ์ด ETH ์ฝ”์ธ์˜ ๊ฐ€๊ฒฉ์— ๋น„ํ•ด ์–ผ๋งˆ์ •๋„๋กœ ๊ฑฐ๋ž˜๋˜๊ณ  ์žˆ๋Š”๊ฐ€ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋น„ํŠธ์ฝ”์ธ์ด ์‹ค์ œ ๋‹ฌ๋Ÿฌ ๋Œ€๋น„ ์–ผ๋งˆ์ •๋„ ํ•˜๋Š”์ง€๋Š” โ€™BTCUSDTโ€™๋ฅผ ๋ณด๋ฉด ๋œ๋‹ค.

USDT๋Š” ํ…Œ๋”์—์„œ ๋ฐœํ–‰ํ•˜๋Š” ์Šคํ…Œ์ด๋ธ” ์ฝ”์ธ์œผ๋กœ 1 USDT == 1 USD ๋ฅผ ์ถ”์ข…ํ•˜๋Š” ์ฝ”์ธ์œผ๋กœ

๊ธฐ์ค€ ํ™”ํ์˜ ๊ฐ€์น˜๋ฅผ ์ถ”์ข…ํ•จ์œผ๋กœ์จ ๋‹ฌ๋Ÿฌ ๊ฐ€์น˜์˜ ๊ธฐ์ค€์„ ๊ฐ€์ ธ์˜จ๋‹ค.

[25]:
dataframe = binance.read('BTCUSDT', start='2020-06-01', end='2021-06-01', interval='1d')
dataframe
BTCUSDT
[25]:
open high low close volume
์ผ์‹œ
2021-06-01 37253.82 37894.81 35666.00 36693.09 81234.663770
2021-05-31 35641.26 37499.00 34153.84 37253.81 94160.735289
2021-05-30 34605.15 36488.00 33379.00 35641.27 73535.386967
2021-05-29 35661.79 37338.58 33632.76 34605.15 112663.092689
2021-05-28 38529.99 38877.83 34684.00 35663.49 135377.629720
... ... ... ... ... ...
2020-06-05 9788.14 9854.75 9581.00 9621.16 47788.050050
2020-06-04 9666.32 9881.63 9450.00 9789.06 57456.100969
2020-06-03 9518.02 9690.00 9365.21 9666.24 46252.644939
2020-06-02 10202.71 10228.99 9266.00 9518.04 108970.773151
2020-06-01 9448.27 10380.00 9421.67 10200.77 76649.126960

366 rows ร— 5 columns

[28]:
plt.plot(dataframe['low'])
plt.plot(dataframe['high'])
plt.show()
_images/tutorial_32_0.png

๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋‹ˆ 21๋…„ 5์›”์— ๋น„ํŠธ์ฝ”์ธ ํˆฌ์ž์ž๋“ค์€ ์•„์ฃผ ํž˜๋“  ์‹œ๊ธฐ๋ฅผ ๋ณด๋ƒˆ์„ ๊ฒƒ์ด๋‹ค.

21๋…„ 5์›”์˜ ๋ฐ์ดํ„ฐ interval ์„ ์กฐ์ ˆํ•ด์„œ ๋‹ค์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์ž

[32]:
dataframe = binance.read('BTCUSDT', start='2021-05-01', end='2021-06-01', interval='1h')
plt.figure(figsize=(12,7))
plt.plot(dataframe['low'])
plt.plot(dataframe['high'])
plt.show()
BTCUSDT
_images/tutorial_34_1.png

๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋‹ˆ 21๋…„ 5์›” 17์ผ๋ถ€ํ„ฐ 21์ผ ์‚ฌ์ด์— ๋น„ํŠธ์ฝ”์ธ ํˆฌ์ž์ž๋“ค์€ ์•„์ฃผ ํž˜๋“  ์‹œ๊ธฐ๋ฅผ ๋ณด๋ƒˆ์„ ๊ฒƒ์ด๋‹ค.

21๋…„ 5์›” 17์ผ๋ถ€ํ„ฐ 21์ผ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ interval์„ ์กฐ์ ˆํ•ด์„œ ๋‹ค์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์ž

[33]:
dataframe = binance.read('BTCUSDT', start='2021-05-17', end='2021-05-21', interval='15m')
plt.figure(figsize=(12,7))
plt.plot(dataframe['low'])
plt.plot(dataframe['high'])
plt.show()
BTCUSDT
_images/tutorial_36_1.png

๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋‹ˆ 21๋…„ 5์›” 19์ผ์— ๋น„ํŠธ์ฝ”์ธ ํˆฌ์ž์ž๋“ค์€ ์•„์ฃผ ํž˜๋“  ์‹œ๊ธฐ๋ฅผ ๋ณด๋ƒˆ์„ ๊ฒƒ์ด๋‹ค.

21๋…„ 5์›” 19์ผ์˜ ๋ฐ์ดํ„ฐ interval์„ ์กฐ์ ˆํ•ด์„œ ๋‹ค์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด์ž

[34]:
dataframe = binance.read('BTCUSDT', start='2021-05-19', end='2021-05-20', interval='1m')
plt.figure(figsize=(12,7))
plt.plot(dataframe['low'])
plt.plot(dataframe['high'])
plt.show()
BTCUSDT
_images/tutorial_38_1.png