Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KRX 소스로 지정한 경우 주가 불러오기 오류 #213

Open
QuantKang opened this issue Jun 19, 2024 · 4 comments
Open

KRX 소스로 지정한 경우 주가 불러오기 오류 #213

QuantKang opened this issue Jun 19, 2024 · 4 comments

Comments

@QuantKang
Copy link

제 경우에는 NAVER 대신 KRX로 데이터 소스를 지정해서 사용합니다.

오늘 스크립트를 사용하려고 보니, 데이터 오류가 발생합니다.

KRX 대신 NAVER로 데이터 소스를 지정해서 사용하고 있는 중입니다.

fdr.DataReader('KRX:000100')
Traceback (most recent call last):
  File "/home/me/myenv/lib/python3.11/site-packages/requests/models.py", line 971, in json
    return complexjson.loads(self.text, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/me/myenv/lib/python3.11/site-packages/FinanceDataReader/data.py", line 92, in DataReader
    return KrxDailyReader(codes, start, end).read()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/me/myenv/lib/python3.11/site-packages/FinanceDataReader/krx/data.py", line 139, in read
    df = _krx_stock_price(full_code, from_date=self.start, to_date=self.end)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/me/myenv/lib/python3.11/site-packages/FinanceDataReader/krx/data.py", line 108, in _krx_stock_price
    df = pd.DataFrame(r.json()['output'])
                      ^^^^^^^^
  File "/home/me/myenv/lib/python3.11/site-packages/requests/models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
@chowg1762
Copy link

chowg1762 commented Jun 23, 2024

저도 같은 에러를 맞아서 response 를 찍어보니

response = requests.post(url, data, headers=self._headers)
print("RESPONSE : ", response.status_code, response.text)

아래와 같은 결과를 얻었는데요.

RESPONSE : 400 INVALIDPERIOD2

해당 홈페이지에서 똑같이 테스트해보니, 2년 이상의 데이터 조회시 위의 에러가 뜹니다.
혹시라도 start date 를 2년내로 조정하시면 잘 되실거같습니다.

@QuantKang
Copy link
Author

감사합니다. 조언해 주신 방법으로 사용해 보겠습니다.

FinanceDataReader의 다음 번 release에 수정되기를 기대합니다.

@FinanceData
Copy link
Owner

수정 반영하였습니다.
업데이트하여 사용하시면 되겠습니다.

pip install -U finance-datareader

2가지 문제가 있었는데요.

  1. KRX 요청 header에 Referer가 "필수"로 변경
  2. chowg1762 말씀과 같이, KRX에서 최대 2년 데이터만 조회가 가능하게 변경되었습니다.

1번은 반영하여 업데이트 하였습니다.
2년 기간의 문제는 우선, start, end를 지정하지 않은 경우 현재로 부터 과거 2년을 조회하도록 수정하고,
응답이 200 OK 가 아닌경우, 확인 가능하도록 에러메시지(Period is up to 2 years 추가)를 출력하도록 했습니다.

>>> fdr.DataReader('KRX:000100', 1900)
400 Bad Request Period is up to 2 years

2년씩 연속으로 조회해서 자동으로 병합하는 방법도 검토해 볼만 할 것 같습니다.

감사합니다.

@FinanceData
Copy link
Owner

FinanceData commented Jul 14, 2024

2년 조회 제한 이슈를 FIX 하였습니다.
( 2년단위로 가져와 합쳐서 반환합니다. 코드 수정없이 이전과 동일하게 그대로 사용하시면 됩니다)

KRX 개별종목 가격 데이터 예시

>>> fdr.DataReader('KRX:000100') # (기간 지정 하지 않은 경우) 1995-05-02 ~ 현재, 2년단위로 가져와  합쳐서 반환합니다
             Open   High    Low  Close   Volume  Change  UpDown  Comp        Amount         MarCap    Shares
Date
1995-05-02  46600  46600  45629  46600     1840  0.0000       3     0      88220000   145536000000   3032000
1995-05-03  46600  47085  45629  45629     1130 -0.0208       2  -971      54235000   142504000000   3032000
1995-05-04  45823  47085  45629  47085     1900  0.0319       1  1456      89688000   147052000000   3032000
1995-05-06  47183  47571  44658  47085      580  0.0000       3     0      28134000   147052000000   3032000
1995-05-08  47085  48542  47085  48542     4340  0.0309       1  1457     211902000   151600000000   3032000
...           ...    ...    ...    ...      ...     ...     ...   ...           ...            ...       ...
2024-07-08  90000  90200  85900  87400  1490241 -0.0235       2 -2100  130664311800  7010272193600  80209064
2024-07-09  88400  89200  86700  88500  1072095  0.0126       1  1100   94440499600  7098502164000  80209064
2024-07-10  88500  91200  87900  89400  1163763  0.0102       1   900  104262529300  7170690321600  80209064
2024-07-11  89700  91200  88300  88300   773148 -0.0123       2 -1100   68913249000  7082460351200  80209064
2024-07-12  88000  96700  88000  94900  3637834  0.0747       1  6600  338287159700  7611840173600  80209064

[7377 rows x 11 columns]

see also
https://github.com/FinanceData/FinanceDataReader/wiki/Release-Note-0.9.92

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants