Coder Social home page Coder Social logo

pykrx's People

Contributors

asjgi avatar bom1215 avatar brayden-jo avatar davidkimdy avatar keepcosmos avatar loopinf avatar mirusu400 avatar mr-yoo avatar sangheestyle avatar seoyeonhwng avatar sharebook-kr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pykrx's Issues

함수 이름 정리

get_market_ohlcv_by_dateget_market_ohlcv_by_ticker 함수를 구분하지 않고 get_market_ohlcv 함수 하나로 wrapping 해야 한다. 입력된 파라미터에 따라 함수 내부에서 두 함수를 선택하도록 수정한다.

위 함수는 하나의 예제이며, 전체 api의 입/출력 인터페이스를 검토해야 한다.

get_business_days

pykrx/stock/api.py의 get_business_days에서 month를 12월 넣으면 오류가 발생합니다.

year 2020, month 12로 입력시,
strt = 20201201
last = 20201301의 값을 get_market_ohlcv_by_date에 입력해서 오류가 나네요.

month를 1~12월로 검증하는 로직이 필요해 보입니다!

좋은 패키지 감사합니다.
def get_business_days(year: int, mon: int) -> list: strt = "{}{:02d}01".format(year, mon) last = "{}{:02d}01".format(year, mon+1) df = get_market_ohlcv_by_date(strt, last, "000020")

KRX 30036에서 우선주 상폐 정보를 제공하지 않음

30036에서 기간 (20150622 - 20150810) 조회하면 다음 결과를 확인할 수 있다.

현대하이스코 
동성하이켐  
SK브로드밴드  
와이즈파워  
한국테크놀로지우 
에이스하이텍 
디아이디  
경남은행  

다음 우선주에 대한 폐지 정보도 나와야 하는데 얻을 수 없다.

보해양조우 
동부하이텍2우B 
아남전자우 

이를 대체할 방법을 찾아야 함.

장이 열리지 않았을때 krx API 리턴값 문제

장이 열리지 않았을때 krx API 리턴값이 변경된 듯 합니다.
그에 따라 아래와 같은 문제가 발생합니다.

  • stock.get_market_ticker_list('2021-01-23')
    • 빈값이 아닌 값을 반환
  • stock.get_market_ohlcv_by_ticker('2021-01-23')
    • ValueError: invalid literal for int() with base 10: '-' 에러 발생

image

가격변동을 구할 때 불일치 문제

get_market_price_change_by_ticker 함수 호출 시에 반환하는 종목들의 시가가
krx 시가와 일치하지 않는 문제가 발생합니다.

test case:
"20200319" - "20200503" 기간으로 설정하고, 신풍제약의 리턴값 시가를 보면 7800인데
"20200319"의 해당 종목 시가는 실제로는 8120 입니다. get_market_ohlcv_by_date 으로 신풍제약 해당 날짜 검색시에는 시가로 8120을 리턴하여 문제 없습니다.

함수 파라미터 문제

get_market_trading_value_and_volume_by_ticker 함수에서
investor 변환 시, "외국인": 9000 이 빠져 있습니다.

그래서 함수를 호출하면
외국인 결과는 0으로 반환하는 에러가 발생합니다.

투자자별 순위 조회에서 연기금 입력시 잘못된 데이터가 출력

df = stock.get_market_trading_value_and_volume_by_ticker("20200907", investor="연기금")
print(df.head(2))

매수/매도의 거래량 및 거래대금이 같은 값이 출력된다.

          종목명    매수거래량    매도거래량  순매수거래량       매수거래대금       매도거래대금  순매수거래대금
종목코드                                                                      
000020   동화약품   813108   813108       0  20647345250  20647345250        0
000040  KR모터스  8363034  8363034       0   8205581530   8205581530        0

검색이 안되는 종목들이 있습니다.

'3노드디지탈', '코웰이홀딩스', '에스앤씨엔진그룹', '오가닉티코스메틱', '헝셩그룹', '네프로아이티',
'로스웰', '성융광전투자', '차이나그레이트', 'GRT', '윙입푸드', '이스트아시아홀딩스', '컬러레이',
'완리', '웨이포트', '차이나하오란', '연합과기', '범화건설', '중국고섬', '울산실업', '평산차업',
'SBI모기지', '중국원양자원'

이런 종목들은 검색이 안됩니다.

pandas import error

안녕하세요?
Readme의 2.1.1.5 일자별 DIV/BPS/PER/EPS 조회 에서

df = stock.get_market_fundamental_by_date("20180301", "20180320", '005930')
print(df.head(2))

위 코드 실행 시 아래와 같이 에러가 발생하는데요, pandas import가 되지 않은것 같습니다.

~/anaconda3/lib/python3.7/site-packages/pykrx/website/krx/market/wrap.py in get_market_fundamental_by_date(fromdate, todate, isin, market)
    130                     "PER": np.float64, "EPS": np.int32}, )
    131     df = df.set_index('날짜')
--> 132     df.index = pd.to_datetime(df.index, format='%Y%m%d')
    133     return df.sort_index()
    134 

NameError: name 'pd' is not defined

주가 항목에 전일대비 추가 문의

안녕하세요, 최근에 pykrx를 알게되어 유용하게 사용하는 유저입니다. 다양한 기능이 깔끔하게 설계되어 편하게 사용하고 있습니다. 감사합니다!

요청사항

혹시 전종목 주가 조회할 때 전일대비 필드를 추가해주실 수 있을지 문의드립니다.
개별종목에 대한 여러주가를 가져올 때는 이전 종가를 이용해 전일대비를 구할 수 있는데 전 종목의 경우 전날을 호출해서 구해야 하더라구요.

@dataframe_empty_handler
def get_market_ohlcv_by_ticker(date: str, market: str="KOSPI") -> DataFrame:
    """티커별로 정리된 전종목 OHLCV

    Args:
        date   (str): 조회 일자 (YYYYMMDD)
        market (str): 조회 시장 (KOSPI/KOSDAQ/ALL). Defaults to KOSPI.

    Returns:
        DataFrame:
                        종목명   시가   고가   저가   종가  거래량    거래대금
            티커
            060310          3S   2150   2390   2150   2190  981348  2209370985
            095570  AJ네트웍스   3135   3200   3100   3130   89871   282007385
            006840    AK홀딩스  17050  17200  16500  16500   30567   512403000
            054620   APS홀딩스   8550   8740   8400   8650  647596  5525789290
            265520    AP시스템  22150  23100  22050  22400  255846  5798313650
    """

    market = {"ALL": "ALL", "KOSPI": "STK", "KOSDAQ": "KSQ", "KONEX": "KNX"}[market]
    df = 전종목시세().fetch(date, market)
    df = df[['ISU_SRT_CD', 'ISU_ABBRV', 'TDD_OPNPRC', 'TDD_HGPRC', 'TDD_LWPRC', 'TDD_CLSPRC', 'ACC_TRDVOL', 'ACC_TRDVAL', ]]
    df.columns = ['티커', '종목명', '시가', '고가', '저가', '종가', '거래량', '거래대금']

KRX 에서 제공하는 데이터를 디버깅 해보니 CMPPREVDD_PRC 필드가 전일대비인 것으로 보입니다.

python 3.5에서 import 에러가 나네요

안녕하세요.
덕분에 잘 사용하고 있었습니다.
근데 이번 KRX 사이트 리뉴얼로 새로운 버전을다운받아 사용하려했는데
from pykrx import stock 명령어에서 아래와 같은 에러가 나옵니다.
python3.5 환경에서의 문제인것 같은데 이전처럼 낮은 버전의 python에서도 사용할 수 있었으면 좋겠습니다.

Traceback (most recent call last):
File "/volume1/DART/python/getStockCode.py", line 5, in
from pykrx import stock
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pykrx/stock/init.py", line 1, in
from .api import *
File "/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pykrx/stock/api.py", line 20
print(f"market 옵션이 올바르지 않습니다." )
^
SyntaxError: invalid syntax

Additional Info

Thank you for your help.
My code still doesn't work.

1 def saveMarketCapDaily(targetDayStr):
2 targetDayStr="20200917"
3 print(stock.get_market_ticker_list("20200921"))
4 dfTargetDay = stock.get_market_cap_by_ticker(targetDayStr)
5 if (dfTargetDay.empty):
6 print('targetDay empty. day: ' + targetDayStr)
7 return -1
..

  • line 3 shows empty list.
  • dfTargetDay is empty. (with any date)

Environment

  • Requirement already up-to-date: pykrx in c:\users\proje\appdata\local\programs\python\python38-32\lib\site-packages (0.1.41)
  • Python 3.8.5 (32/64bit neither work)

상장 정보 확인

종목코드 상장일 상장폐지일 시장
000010 2002-01-01 2010-01-03 코스피
000020 2001-01-01 코스닥

인덱스 구성종목 조회

안녕하세요
매년 인덱스 구성종목을 조회하려고 stock.get_index_portfolio_deposit_file을 쓰려고 하는데요, function 설명 상 param date은 YYMMDD 형태로 조회일자를 입력하도록 되어 있어서 stock.get_index_portfolio_deposit_file("1028", "171231") 와 같은 식으로 입력을 했습니다만, 반환되는 값이 없네요. 혹시 제가 param을 잘못 입력한건가요?

어제까지 잘되던게 안되네요 ㅠㅠ

def today_stock_company():
global df_stock
today = stock.get_nearest_business_day_in_a_week()
df_stock = stock.get_market_ohlcv_by_ticker(today)
df_stock["종목명"] = df_stock["종목명"].str.upper()
df_stock = df_stock.reset_index()

today_stock_company()

이걸실행하면


JSONDecodeError Traceback (most recent call last)
in ()
28 df_stock = df_stock.reset_index()
29
---> 30 today_stock_company()
31
32 #### 종목 코드 검색

in today_stock_company()
23 def today_stock_company():
24 global df_stock
---> 25 today = stock.get_nearest_business_day_in_a_week()
26 df_stock = stock.get_market_ohlcv_by_ticker(today)
27 df_stock["종목명"] = df_stock["종목명"].str.upper()

/home/pi/.local/lib/python3.7/site-packages/pykrx/stock/api.py in get_nearest_business_day_in_a_week()
36 curr = _datetime2string(curr)
37 prev = _datetime2string(prev)
---> 38 df = krx.get_index_ohlcv_by_date(prev, curr, "1001")
39 return df.index[-1].strftime("%Y%m%d")
40

/home/pi/.local/lib/python3.7/site-packages/pykrx/website/comm/util.py in wrapper(*args, **kwargs)
5 def wrapper(*args, **kwargs):
6 try:
----> 7 return func(*args, **kwargs)
8 except (AttributeError, KeyError, TypeError):
9 return DataFrame()

/home/pi/.local/lib/python3.7/site-packages/pykrx/website/krx/market/wrap.py in get_index_ohlcv_by_date(fromdate, todate, ticker)
383 20190131 2222.879883 2222.879883 2201.219971 2204.850098 545248000
384 """
--> 385 df = MKD20011_SUB().fetch(fromdate, todate, ticker[1:], ticker[0])
386 df = df[['trd_dd', 'opnprc_idx', 'hgprc_idx', 'lwprc_idx',
387 'clsprc_idx', 'acc_trdvol']]

/home/pi/.local/lib/python3.7/site-packages/pykrx/website/krx/market/core.py in fetch(self, fromdate, todate, index, market)
299 idx_cd = "1{}".format(index)
300 result = self.post(idx_cd=idx_cd, ind_tp_cd=market, idx_ind_cd=index, bz_dd=todate,
--> 301 chartType="line", chartStandard="srate", fromdate=fromdate, todate=todate)
302 return DataFrame(result['output'])
303

/home/pi/.local/lib/python3.7/site-packages/pykrx/website/krx/krxio.py in post(self, **params)
15 params.update({"code": otp.text})
16 resp = super().read(**params)
---> 17 return resp.json()
18
19 @Property

/usr/lib/python3/dist-packages/requests/models.py in json(self, **kwargs)
895 # used.
896 pass
--> 897 return complexjson.loads(self.text, **kwargs)
898
899 @Property

/usr/lib/python3/dist-packages/simplejson/init.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, use_decimal, **kw)
516 parse_constant is None and object_pairs_hook is None
517 and not use_decimal and not kw):
--> 518 return _default_decoder.decode(s)
519 if cls is None:
520 cls = JSONDecoder

/usr/lib/python3/dist-packages/simplejson/decoder.py in decode(self, s, _w, _PY3)
368 if _PY3 and isinstance(s, bytes):
369 s = str(s, self.encoding)
--> 370 obj, end = self.raw_decode(s)
371 end = _w(s, end).end()
372 if end != len(s):

/usr/lib/python3/dist-packages/simplejson/decoder.py in raw_decode(self, s, idx, _w, _PY3)
398 elif ord0 == 0xef and s[idx:idx + 3] == '\xef\xbb\xbf':
399 idx += 3
--> 400 return self.scan_once(s, idx=_w(s, idx).end())

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

이런오류가발생해요

get_market_ticker_name 이나 get_market_fundamental_by_ticker 사용시 Error가 발생합니다.

from pykrx import stock
import time
import sys
위와 같이 사용하고 있는 중에 에러가 발생했습니다.

Test로 아래와 같이 사용했습니다.
1)df = stock.get_market_fundamental_by_ticker('20200918')
2)df = get_market_ticker_name("000660")

1)의 경우 아래와 같이 에러 메시지가 발생합니다.
Traceback (most recent call last):
File "", line 1, in
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/stock/api.py", line 197, in get_market_fundamental_by_ticker
df = krx.get_market_fundamental_by_ticker(date, market)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/comm/util.py", line 7, in wrapper
return func(*args, **kwargs)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/market/wrap.py", line 167, in get_market_fundamental_by_ticker
df = MKD30009_0().fetch(date, market)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/market/core.py", line 107, in fetch
result = self.post(market_gubun=market, gubun=1, schdate=date)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/krxio.py", line 17, in post
return resp.json()
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/root/anaconda3/envs/stock/lib/python3.5/json/init.py", line 319, in loads
return _default_decoder.decode(s)
File "/root/anaconda3/envs/stock/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/root/anaconda3/envs/stock/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

2)의 경우 아래와 같이 에러 메시지가 발생합니다.
Traceback (most recent call last):
File "", line 1, in
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/stock/api.py", line 59, in get_market_ticker_name
return krx.get_stock_name(ticker)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/comm/util.py", line 7, in wrapper
return func(*args, **kwargs)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/market/ticker.py", line 116, in get_stock_name
s = _StockTicker().get_series(ticker)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/comm/util.py", line 24, in init
super(class_w, self).init(*args, **kwargs)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/market/ticker.py", line 44, in init
self.listed = self._get_stock_info_listed()
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/comm/util.py", line 7, in wrapper
return func(*args, **kwargs)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/market/ticker.py", line 60, in _get_stock_info_listed
df = _StockFinder().fetch(market)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/market/ticker.py", line 20, in fetch
result = self.post(mktsel=market, searchText=name)
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/pykrx/website/krx/krxio.py", line 17, in post
return resp.json()
File "/root/anaconda3/envs/stock/lib/python3.5/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/root/anaconda3/envs/stock/lib/python3.5/json/init.py", line 319, in loads
return _default_decoder.decode(s)
File "/root/anaconda3/envs/stock/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/root/anaconda3/envs/stock/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

pip freeze 출력 결과는 아래와 같습니다.
certifi==2018.8.24
chardet==3.0.4
idna==2.10
numpy==1.18.5
pandas==0.25.3
pykrx==0.1.41
pytz==2020.1
requests==2.24.0
six==1.15.0
urllib3==1.25.10
xlrd==1.2.0
zope.interface==5.1.0

ValueError: invalid literal for int() with base 10: '40,002'

Traceback (most recent call last):
File "a.py", line 12, in
print(krx.get_shorting_status_by_date("20181210", "20181212", "005930"))

File "D:\0.prj_python\pykrx-master\pykrx\krx.py", line 53, in get_shorting_status_by_date
return SRT02010100.scraping(isin, fromdate, todate)

File "D:\0.prj_python\pykrx-master\pykrx\shorting.py", line 48, in scraping
df = df.replace({',': ''}, regex=True).astype(np.int64)

File "D:\python372\lib\site-packages\pandas-0.24.0rc1-py3.7-win32.egg\pandas\core\generic.py", line 5681, in astype
**kwargs)
File "D:\python372\lib\site-packages\pandas-0.24.0rc1-py3.7-win32.egg\pandas\core\internals\managers.py", line 531, in astype
return self.apply('astype', dtype=dtype, **kwargs)
File "D:\python372\lib\site-packages\pandas-0.24.0rc1-py3.7-win32.egg\pandas\core\internals\managers.py", line 395, in apply
applied = getattr(b, f)(**kwargs)
File "D:\python372\lib\site-packages\pandas-0.24.0rc1-py3.7-win32.egg\pandas\core\internals\blocks.py", line 534, in astype
**kwargs)
File "D:\python372\lib\site-packages\pandas-0.24.0rc1-py3.7-win32.egg\pandas\core\internals\blocks.py", line 633, in _astype
values = astype_nansafe(values.ravel(), dtype, copy=True)
File "D:\python372\lib\site-packages\pandas-0.24.0rc1-py3.7-win32.egg\pandas\core\dtypes\cast.py", line 685, in astype_nansafe
return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape)
File "pandas_libs\lib.pyx", line 530, in pandas._libs.lib.astype_intsafe

ValueError: invalid literal for int() with base 10: '40,002'

외국인 보유 주식 한도와 관한 질문.

안녕하세요, 사용하신 code architecture를 이용해 외국인 보유 주식 한도 (https://marketdata.krx.co.kr/mdi#document=13020402) 를 스크레이핑 하려고 해 보았습니다

` class MKD81006(KrxFileIo):
@Property
def bld(self):
return "MKD/13/1302/13020402/mkd13020402"

def fetch(self, date, mkt, limitType):
    result = self.post(schdate=date, market_gubun=mkt, lmt_tp=limitType)
    return result`

df = MKD81006().fetch("20200630", "ALL", "1") 으로 해 보았습니다.
좋은 라이브러리를 제공해 주셔서 감사합니다!

30017: 투자자별순위 functionality

안녕하세요,

지난번과 마찬가지로 만들어주신 framework를 이용해 새로운 functionality를 만들어 보았습니다. 혹시 다음 release 때 추가해 주실 수 있으신가요?

감사드립니다!

class MKD30017(KrxFileIo):
    @property
    def bld(self):
        return "MKD/04/0404/04040400/mkd04040400"

    def fetch(self, date, mkt_type, instr_type, inv_type):
        """입력사항:시장구분, 투자주체, 조회일자, 검색항목
        투자자별 순위 (30017)
        stctype: ALL, STK, KSQ, KNX
        var_invr_cd:
            # 1000 - 금융투자; # 2000 보험 #3000 투신 # 3100 사모 #4000 은행 #5000 기타금융
            # 6000 연기금 7050 기관합계 # 7100 기타법인 # 8000 개인 # 9000 외국인 # 9001 기타외국인 # 9999 전체
        schdate: query date
        etctype: ST, EF, EW, EN
        """

        result = self.post(stctype=instr_type, var_invr_cd=inv_type, schdate=date, etctype=mkt_type)
        return pd.read_excel(result)

krx아이피 차단 해제 방법이 있을까요?

어제 데이터를 긁어오는 것을 밤에 실행해놓고 아침에 보니 중간 쯤에서 부터 에러가 나서 확인해 보니
아이피가 차단된 것 같아요.
다른 아이피에서는 데이터를 잘 가져오는데, 해당 장비에서는 데이터를 전혀 못가져오네요.
혹시 어떻게 하면 해제할 수 있는지 알 수 있을지요?

데이터를 받아오지 못합니다.

pykrx를 돌렸을때 데이터를 받아오지 못합니다.

---에러 발생현황---
File "G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\korea_data.py", line 186, in
routine = Routine()
File "G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\korea_data.py", line 109, in init
self.get = krx.Get()
File "G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\product_info\api\krx.py", line 23, in init
self.stock_code_list = stock.get_market_ticker_list(self.today)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\stock\api.py", line 48, in get_market_ticker_list
return krx.get_stock_ticker_list(date)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 7, in wrapper
return func(*args, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 118, in get_stock_ticker_list
stock = _StockTicker()
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 24, in init
super(class_w, self).init(*args, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 45, in init
df_listed = self._get_stock_info_listed()
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 7, in wrapper
return func(*args, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 65, in _get_stock_info_listed
df = StockFinder().fetch(market)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 21, in fetch
result = self.post(mktsel=market, searchText=name)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\krxio.py", line 17, in post
return resp.json()
File "C:\Users\dldjs\Anaconda3\lib\site-packages\requests\models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\simplejson_init
.py", line 525, in loads
return _default_decoder.decode(s)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\simplejson\decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

(base) G:>python G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\korea_data.py
20200827
Traceback (most recent call last):
File "G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\korea_data.py", line 186, in
routine = Routine()
File "G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\korea_data.py", line 109, in init
self.get = krx.Get()
File "G:\Develop\MyBetaPortfolio\mybetaportfolio_backend\product_info\api\krx.py", line 23, in init
self.stock_code_list = stock.get_market_ticker_list(self.today)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\stock\api.py", line 48, in get_market_ticker_list
return krx.get_stock_ticker_list(date)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 7, in wrapper
return func(*args, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 118, in get_stock_ticker_list
stock = _StockTicker()
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 24, in init
super(class_w, self).init(*args, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 45, in init
df_listed = self._get_stock_info_listed()
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 7, in wrapper
return func(*args, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 65, in _get_stock_info_listed
df = StockFinder().fetch(market)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py", line 21, in fetch
result = self.post(mktsel=market, searchText=name)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\pykrx\website\krx\krxio.py", line 17, in post
return resp.json()
File "C:\Users\dldjs\Anaconda3\lib\site-packages\requests\models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\simplejson_init
.py", line 525, in loads
return _default_decoder.decode(s)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\simplejson\decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "C:\Users\dldjs\Anaconda3\lib\site-packages\simplejson\decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

*입력날짜는 YYYYMMDD 형식으로 입력했습니다.

---- 설치된 패키지 리스트
alabaster==0.7.12
anaconda-client==1.7.2+6.g6d462d5
anaconda-navigator==1.9.12
anaconda-project==0.8.3
aniso8601==8.0.0
argh==0.26.2
asgiref==3.2.7
asn1crypto==1.3.0
astroid==2.3.3
astropy==4.0
atomicwrites==1.3.0
attrs==19.3.0
autopep8==1.4.4
awsebcli==3.18.2
Babel==2.8.0
backcall==0.1.0
backports.functools-lru-cache==1.6.1
backports.shutil-get-terminal-size==1.0.0
backports.tempfile==1.0
backports.weakref==1.0.post1
bcrypt==3.1.7
beautifulsoup4==4.9.1
bitarray==1.2.1
bkcharts==0.2
bleach==3.1.0
bokeh==1.4.0
boto==2.49.0
botocore==1.15.49
Bottleneck==1.3.2
bs4==0.0.1
cement==2.8.2
certifi==2020.4.5.1
cffi==1.14.0
chardet==3.0.4
click==7.1.2
click-plugins==1.1.1
cligj==0.5.0
cloudpickle==1.3.0
clyent==1.2.2
colorama==0.4.3
comtypes==1.1.7
conda==4.8.2
conda-build==3.18.11
conda-package-handling==1.6.0
conda-verify==3.4.2
contextlib2==0.6.0.post1
cryptography==2.9.2
cycler==0.10.0
Cython==0.29.15
cytoolz==0.10.1
dask==2.11.0
DateTime==4.3
decorator==4.4.1
defusedxml==0.6.0
Deprecated==1.2.10
diff-match-patch==20181111
distributed==2.11.0
Django==3.0.7
django-cors-headers==3.4.0
django-debug-toolbar==2.2
django-rest-framework==0.1.0
djangorestframework==3.11.0
docutils==0.15.2
entrypoints==0.3
et-xmlfile==1.0.1
fastcache==1.1.0
filelock==3.0.12
finance-datareader==0.9.6
flake8==3.7.9
Flask==1.1.2
Flask-RESTful==0.3.8
fsspec==0.6.2
future==0.16.0
gevent==1.4.0
gitdb==4.0.5
GitPython==3.1.2
glob2==0.7
greenlet==0.4.15
h5py==2.10.0
HeapDict==1.0.1
html5lib==1.0.1
hypothesis==5.5.4
idna==2.7
iexfinance==0.4.3
imageio==2.6.1
imagesize==1.2.0
importlib-metadata==1.5.0
install==1.3.3
intervaltree==3.0.2
ipykernel==5.1.4
ipython==7.12.0
ipython-genutils==0.2.0
ipywidgets==7.5.1
isort==4.3.21
itsdangerous==1.1.0
jdcal==1.4.1
jedi==0.14.1
Jinja2==2.11.2
jmespath==0.10.0
joblib==0.14.1
json5==0.9.1
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client==5.3.4
jupyter-console==6.1.0
jupyter-core==4.6.1
jupyterlab==1.2.6
jupyterlab-server==1.0.6
keyring==21.1.0
kiwisolver==1.2.0
lazy-object-proxy==1.4.3
libarchive-c==2.8
llvmlite==0.31.0
locket==0.2.0
lxml==4.5.2
MarkupSafe==1.1.1
matplotlib==3.2.1
mccabe==0.6.1
menuinst==1.4.16
mistune==0.8.4
mkl-fft==1.0.15
mkl-random==1.1.0
mkl-service==2.3.0
mock==4.0.1
more-itertools==8.2.0
mpmath==1.1.0
msgpack==0.6.1
multipledispatch==0.6.0
multitasking==0.0.9
munch==2.5.0
mysql-connector-python==8.0.20
mysqlclient==2.0.1
navigator-updater==0.2.1
nbconvert==5.6.1
nbformat==5.0.4
networkx==2.4
nltk==3.4.5
nose==1.3.7
notebook==6.0.3
numba==0.48.0
numexpr==2.7.1
numpy==1.18.1
numpydoc==0.9.2
ogr==0.12.0
olefile==0.46
openpyxl==3.0.3
packaging==20.1
panda==0.3.1
pandas==1.0.3
pandas-datareader==0.9.0
pandocfilters==1.4.2
paramiko==2.7.1
parmap==1.5.2
parso==0.5.2
partd==1.1.0
path==13.1.0
pathlib2==2.3.5
pathspec==0.5.9
pathtools==0.1.2
patsy==0.5.1
pep8==1.7.1
pexpect==4.8.0
pickleshare==0.7.5
Pillow==7.0.0
pkginfo==1.5.0.1
pluggy==0.13.1
ply==3.11
prometheus-client==0.7.1
prompt-toolkit==3.0.3
psutil==5.6.7
psycopg2==2.8.5
py==1.8.1
pycodestyle==2.5.0
pycosat==0.6.3
pycparser==2.20
pycrypto==2.6.1
pycurl==7.43.0.5
pydocstyle==4.0.1
pyflakes==2.1.1
PyGithub==1.51
Pygments==2.5.2
PyJWT==1.7.1
pykrx==0.1.26
pylint==2.4.4
PyMySQL==0.9.3
PyNaCl==1.3.0
pyodbc===4.0.0-unsupported
pyOpenSSL==19.1.0
pyparsing==2.4.7
pypiwin32==223
pyreadline==2.1
pyrsistent==0.15.7
PySocks==1.7.1
pytest==5.3.5
pytest-arraydiff==0.3
pytest-astropy==0.8.0
pytest-astropy-header==0.1.2
pytest-doctestplus==0.5.0
pytest-openfiles==0.4.0
pytest-remotedata==0.3.2
python-dateutil==2.8.0
python-gitlab==2.2.0
python-jsonrpc-server==0.3.4
python-language-server==0.31.7
python-polylabel==0.6
pytz==2020.1
PyWavelets==1.1.1
pywin32==227
pywin32-ctypes==0.2.0
pywinpty==0.5.7
PyYAML==5.3.1
pyzmq==18.1.1
QDarkStyle==2.8
QtAwesome==0.6.1
qtconsole==4.6.0
QtPy==1.9.0
requests==2.20.1
requests-file==1.5.1
rope==0.16.0
Rtree==0.9.4
ruamel-yaml==0.15.87
scikit-image==0.16.2
scikit-learn==0.22.1
scipy==1.4.1
seaborn==0.10.0
semantic-version==2.5.0
Send2Trash==1.5.0
Shapely==1.7.0
simplegeneric==0.8.1
simplejson==3.17.2
singledispatch==3.4.0.3
six==1.11.0
smmap==3.0.4
snowballstemmer==2.0.0
sortedcollections==1.1.2
sortedcontainers==2.1.0
soupsieve==2.0.1
Sphinx==2.4.0
sphinxcontrib-applehelp==1.0.1
sphinxcontrib-devhelp==1.0.1
sphinxcontrib-htmlhelp==1.0.2
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.2
sphinxcontrib-serializinghtml==1.1.3
sphinxcontrib-websupport==1.2.0
spyder==4.0.1
spyder-kernels==1.8.1
SQLAlchemy==1.3.17
sqlparse==0.3.1
statsmodels==0.11.0
sympy==1.5.1
tables==3.6.1
tblib==1.6.0
termcolor==1.1.0
terminado==0.8.3
testpath==0.4.4
toolz==0.10.0
tornado==6.0.3
tqdm==4.42.1
traitlets==4.3.3
ujson==1.35
unicodecsv==0.14.1
urllib3==1.24.3
watchdog==0.10.2
wcwidth==0.1.8
webencodings==0.5.1
Werkzeug==1.0.1
widgetsnbextension==3.5.1
win-inet-pton==1.1.0
win-unicode-console==0.5
wincertstore==0.2
wrapt==1.11.2
xlrd==1.2.0
XlsxWriter==1.2.7
xlwings==0.17.1
xlwt==1.3.0
xmltodict==0.12.0
yahoo-finance==1.4.0
yahoofinancials==1.5
yapf==0.28.0
yfinance==0.1.54
zict==1.0.0
zipp==2.2.0
zope.interface==5.1.0

get_etf_ohlcv_by_date 함수 에러

stock.get_etf_ohlcv_by_date("20190401", "20190405", "295820")를 실행 시,


ERROR:root:'MKD60007' object has no attribute 'post'
Traceback (most recent call last):
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 7, in wrapper
return func(*args, **kwargs)
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\krx\e3\etf\ticker.py", line 35, in __update_db
date = EtfTicker._get_closest_business_day()
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\krx\e3\etf\ticker.py", line 52, in _get_closest_business_day
df = MKD60007().fetch(past.strftime("%Y%m%d"), now.strftime("%Y%m%d"), "KR7069500007")
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\krx\e3\etf\core.py", line 71, in fetch
result = self.post(fromdate=fromdate, todate=todate, isu_cd=isin)
AttributeError: 'MKD60007' object has no attribute 'post'
ERROR:root:'NoneType' object has no attribute 'loc'
Traceback (most recent call last):
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\comm\util.py", line 7, in wrapper
return func(*args, **kwargs)
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\krx\e3\etf\wrap.py", line 22, in get_etf_ohlcv_by_date
isin = EtfTicker().get_isin(ticker)
File "C:\Users\godaa\anaconda3\lib\site-packages\pykrx\website\krx\e3\etf\ticker.py", line 46, in get_isin
return self.df.loc[ticker, 'isin']
AttributeError: 'NoneType' object has no attribute 'loc'


빈 파일을 반환하는 에러가 있습니다.

감사하게 사용하고 있어요~

JSONDecodeError: Expecting value: line 1 column 1 (char 0) !!!!

오류가 발생..

다시 anaconda를 지우고 다시 설치해도 마찬가지.

windows10 Enterprise

2020.07.03 Anaconda3-2020.02-Windows-x86-64 설치

python 3.7.6

stock.get_market_ticker_list()
stock.get_market_price_change_by_ticker("20200601","20200703")
stock.get_market_fundamental_by_ticker("20180305")

등에서 에러 발생..

stock.get_market_ohlcv_by_date("20200601","20200703","000020") -> 정상

즉 일부는 정상, 일부는 오류..

오류메시지는 JSONDecodeError 입니다. ^^

index의 티커를 한글이 아닌 숫자로 변경

코스피/코스닥 시장에 중복된 이름이 존재해서 한글이름을 사용할 수 없음
예를 들어 화학은 두 시장에 모두 존재함.

현재 버전에서 화학을 넣으면 코스닥 시장의 화학 지수를 출력함.

get_market_ohlcv_by_ticker 함수의 이름 관련

안녕하세요, 우선 정말 좋은 라이브러리 만들어 주셔서 감사합니다.

README에서 stock.get_market_ohlcv_by_ticker 함수를 보면 특정 날짜에 맞추어서 전체 종목 데이터를 받고 있는 것으로 보이는데요, 그렇다면 이름이 stock.get_market_ohlcv_by_date_all 정도로 바뀌어야 하지 않을까요?

일자별 공매도 잔고를 확인하는 get_shorting_status_by_date 함수에 이슈가 있습니다.

README에 따르면 (T+2)일자의 정보를 제공한다 하였으니 2영업일전일의 공매도 정보는 수집이 가능한걸로 이해하였는데요.
금일 테스트 도중 2영업일전의 공매도 잔고를 잘 가져오다가 자정 12시를 지난 시점부터 empty_dataframe이 나옵니다.

# 테스트한 시각 1/9 01:20
df = stock.get_shorting_status_by_date("20210106", "20210106", '005930')
print(df)

# 결과 : 
Empty DataFrame
Columns: [공매도, 잔고, 공매도금액, 잔고금액]
Index: []

3영업일 전으로 설정하면 값이 나옵니다.

# 테스트한 시각 1/9 01:20
df = stock.get_shorting_status_by_date("20210105", "20210105", '005930')
print(df)

# 결과 : 
            공매도       잔고     공매도금액          잔고금액
날짜                                              
2021-01-05  169  2676924  14011100  224593923600

자정을 넘어가는 시점에 오류가 발생할만한 코너케이스가 있는건지,
아니면 제가 사용법을 이해를 잘못 이해한 것인지 확인 부탁드립니다.

get_market_cap_by_ticker 함수 관련 문제

stock.get_market_cap_by_ticker("20200625") 을 실행하면,

에러 메세지로

'market 옵션이 올바르지 않습니다'를 반환합니다.

그래서 market 인자를 지정해준 경우,

stock.get_market_cap_by_ticker("20200625", market = "KOSPI")

마찬가지로 'market 옵션이 올바르지 않습니다'를 반환합니다.

해당 함수의 인자에 변화가 있었나요?


수정합니다.

market = 이 아니라 그냥 "KOSPI"를 입력하면 정상 작동됩니다.

JupyterNote Book에서 index 함수에서 에러 발생

Pycharm에서는 정상동작하지만 JupyterNoteBook에서 에러 메시지 출력

from pykrx import stock 

df = stock.get_index_ohlcv_by_date("20200101", "20200831", "코스피")
print(df.head())
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key)
   4373             return self._engine.get_value(s, k,
-> 4374                                           tz=getattr(series.dtype, 'tz', None))
   4375         except KeyError as e1:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_value()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_value()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine._get_loc_duplicates()

TypeError: '<' not supported between instances of 'str' and 'int'

During handling of the above exception, another exception occurred:

IndexError                                Traceback (most recent call last)
<ipython-input-6-62b157b95ab1> in <module>
----> 1 df = stock.get_index_ohlcv_by_date("20200101", "20200831", "코스피")
      2 print(df.head())

~\Anaconda3\lib\site-packages\pykrx\stock\api.py in get_index_ohlcv_by_date(fromdate, todate, ticker, freq)
    318     if isinstance(todate, datetime.datetime):
    319         todate = _datetime2string(todate)
--> 320     return _get_index_ohlcv_by_date(fromdate, todate, ticker, freq)
    321 
    322 

~\Anaconda3\lib\site-packages\pykrx\stock\api.py in _get_index_ohlcv_by_date(fromdate, todate, ticker, freq)
    306     """
    307     id = krx.IndexTicker().get_id(ticker, fromdate)
--> 308     market = krx.IndexTicker().get_market(ticker, fromdate)
    309     df = krx.get_index_ohlcv_by_date(fromdate, todate, id, market)
    310     how = {'시가': 'first', '고가': 'max', '저가': 'min', '종가': 'last', '거래량': 'sum'}

~\Anaconda3\lib\site-packages\pykrx\website\krx\market\ticker.py in get_market(self, ticker, date)
    160         self._download_ticker(date)
    161         cond = self.df.index == ticker
--> 162         return self.df.loc[cond, 'ind_tp_cd'][0]
    163 
    164     @staticmethod

~\Anaconda3\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
    866         key = com.apply_if_callable(key, self)
    867         try:
--> 868             result = self.index.get_value(self, key)
    869 
    870             if not is_scalar(result):

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_value(self, series, key)
   4392             # python 3
   4393             if is_scalar(key):  # pragma: no cover
-> 4394                 raise IndexError(key)
   4395             raise InvalidIndexError(key)
   4396 

IndexError: 0

Python 3.7.6

get_nearest_business_day_in_a_week 함수 잘못된 날짜 반환

pykrx/stock/api.py 의 get_nearest_business_day_in_a_week 가 잘못된 날짜를 반환하는 것으로 보입니다.

내부에서 krx.get_index_ohlcv_by_date 함수를 호출하는데, 이 함수의 결과 데이터가 가장 최근의 날짜가 맨위에 나옵니다.

소스코드에서는 가장 아래의 날짜를 리턴하게 되어있습니다.

why e3 module deleted?

I have used e3 module to get ETF OHLCV.

but from version 0.1.8, e3 module deleted.

why?

is there any plan for update e3 module?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.