hyunyulhenry / quant_py Goto Github PK
View Code? Open in Web Editor NEW파이썬을 이용한 퀀트 투자 포트폴리오 만들기
파이썬을 이용한 퀀트 투자 포트폴리오 만들기
w = port.optimization(model=model, rm=rm, obj=obj, rf=rf, l=l, hist=hist)
가중치 계산 코드까지는 실행되어서 결과가 데이터프레임으로 잘 저장이 되지만
rp.plot_bar(w=w)
코드를 실행하면
AttributeError: 'DataFrame' object has no attribute 'append'
오류가 발생합니다.
riskfolio-lib 의 3.3.0 버전과 최신버전인 4.4.0 모두 같은 에러가 발생하였고
해당 오류에 대해 검색해보았을땐
pandas 2.0 버전 부터 append 기능이 사라졌기 때문이라고 알게되어
pandas 1.3.1 버전으로 다운그레이드하여 실행해보았지만
이렇게 하니 yfinance와 버전이 맞지 않는것 같아 yf.download가 실행되지 않았습니다.
어떻게 해결 할 수 있을까요??
책 페이지 282 에서
try: except: 부분 이해가 안가서 질문드립니다.
이페이 코드 실행하면
error_list 안에 다운로드 성공한 ticker 들이 있고, 다운로드 실패한 ticker 들은 안보입니다.
코드는 맞는것 같은데 이해가 안갑니다.
부탁드립니다^^
책과 유튜브 영상을 매우 잘보고 있습니다. 감사합니다.
책 p242에 나오는
engine = create_engine(~~~)
query = """
select * from kor_ticker
where 기준일 = (select max(기준일) from kor_ticker)
and 종목구분 = '보통주';
"""
ticker_list = pd.read_sql(query, con=engine)
engine.dispose()
해당 코드 실행시
'Connection' object has no attribute 'exec_driver_sql' 메세지가 나오는데 구글링을 해봐도 모르겠어서 문의 드립니다
248쪽 파이썬 코드에서 i가 돌아가면서 url이 바뀌고 pd.read_html()로 계속 크롤링을 하는데 마지막 줄에 list comprehension으로 쓴 반복문에서 time.sleep()을 쓰지 않아도 되나요?
import pymysql
con = pymysql.connect(
user= 'root',
passwd= '1234',
host= '127.0.0.1',
db= 'shop',
charset= 'utf8'
)
이 부분에서
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods 이런 오류가 발생합니다.
cryptography를 설치해야 한다고 해서 프롬프트에서 설치하였는데,
프롬프트에선 cryptography가 이미 설치되었다고 뜨는데 vscode에서는 계속 위 에러가 발생합니다.
혹시 이 문제와 관련하여 해결방안이 있을까요?
감사합니다.
p299 sp = web.DataReader('^GSPC', 'yahoo', start='1990-01-01') 시 에러발생.
mktId : 'STK',
... trdDd : 20230714,
... money : '1',
... csvxls_isNo : 'false',
... name : 'fileDown',
... url : 'dbms/MDC/STAT/standard/MDCSTAT03901'
... }
Traceback (most recent call last):
File "", line 2, in
NameError: name 'mktId' is not defined
고유 번호 다운로드 문의 드려요
특정 시점 부터 안되는 게 많네요 ㅠㅠ
하기와 같이 실행했는데, import Error 가 발생하네요...
코딩상 문제인지 패키지 문제인지 몰라 문의드립니다.
ImportError: Unable to find a usable engine; tried using: 'sqlalchemy'.
A suitable version of sqlalchemy is required for sql I/O support.
Trying to import the above resulted in these errors:
import keyring
import requests as rq
from io import BytesIO
import zipfile
codezip_url = f'''https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key=?????????'''
codezip_data = rq.get(codezip_url)
codezip_file = zipfile.ZipFile(BytesIO(codezip_data.content))
import xmltodict
import json
import pandas as pd
code_data = codezip_file.read('CORPCODE.xml').decode('utf-8')
data_odict = xmltodict.parse(code_data)
data_dict = json.loads(json.dumps(data_odict))
data = data_dict.get('result').get('list')
corp_list = pd.DataFrame(data)
import pymysql
from sqlalchemy import create_engine
corp_list = corp_list[~corp_list.stock_code.isin(
[None])].reset_index(drop=True)
engine = create_engine('mysql+pymysql://root:[email protected]:3306/stock_db')
con = pymysql.connect(user='root',
passwd='???????',
host='127.0.0.1',
db='stock_db',
charset='utf8')
mycursor = con.cursor()
corp_list.to_sql(name='dart_code', con=engine, index=True, if_exists='replace')
engine.dispose()
con.close()
driver.find_element(By.XPATH, value = '//*[@id="snb"]/div[2]/ul/li[2]/div/div/a[2]').click()
코드를 반복해서 실행하다보면
아래와 같은 에러가 빈번하게 나옵니다. 효과적으로 해결할 수 있는 방법이 있을까요?
driver.find_element(By.XPATH, value = '//*[@id="snb"]/div[2]/ul/li[2]/div/div/a[2]').click()
File "C:\Users\kimha\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webelement.py", line 93, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\kimha\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webelement.py", line 403, in _execute
return self._parent.execute(command, params)
File "C:\Users\kimha\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute
self.error_handler.check_response(response)
File "C:\Users\kimha\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=110.0.5481.178)
Stacktrace:
Backtrace:
(No symbol) [0x010A37D3]
(No symbol) [0x01038B81]
(No symbol) [0x00F3B230]
(No symbol) [0x00F6E337]
(No symbol) [0x00F63253]
(No symbol) [0x00F8B41C]
(No symbol) [0x00F62B96]
(No symbol) [0x00F8B774]
(No symbol) [0x00FA1215]
(No symbol) [0x00F8B216]
(No symbol) [0x00F60D97]
(No symbol) [0x00F6253D]
GetHandleVerifier [0x0131ABF2+2510930]
GetHandleVerifier [0x01348EC1+2700065]
GetHandleVerifier [0x0134C86C+2714828]
GetHandleVerifier [0x01153480+645344]
(No symbol) [0x01040FD2]
(No symbol) [0x01046C68]
(No symbol) [0x01046D4B]
(No symbol) [0x01050D6B]
BaseThreadInitThunk [0x76857D69+25]
RtlInitializeExceptionChain [0x7732BB9B+107]
RtlClearBits [0x7732BB1F+191]
안녕하세요 만들어주신 교재 너무 잘 보고 있습니다.
14장 포트폴리오 p.368 에 price = pd.read_sql('select * from sample_etf;', con = engine) db에서 저장한 데이터를 불러와 사용하는 것으로 나와있는데
해당 변수인 price 는 사용이 안되고 바로 직전에 dataframe 형태인 prices 변수만 활용이 되더라구요...
혹시 다른 이유가 있는 것인지 궁금합니다.
price로 하려면 어떤 구문을 더 추가해야되는지 궁금합니다.(오류가 발생함)
재무재표 크롤링에서 코드가 잘못된 부분이 있어 문의드립니다. 크롤링해오는 사이트의 날짜표시방식이 바뀐거같습니다.
2024-03 ▶ 2024/03 이런식으로 바뀌어서 제대로 크롤링을 해오지 못하는 문제가있네요 아래와같이 바꿔서 했더니 해결했습니다.
def clean_fs(df, ticker, frequency):
df = df[~df.loc[:, ~df.columns.isin(['계정'])].isna().all(axis=1)]
df = df.drop_duplicates(['계정'], keep='first')
df = pd.melt(df, id_vars='계정', var_name='기준일', value_name='값')
df = df[~pd.isnull(df['값'])]
df['계정'] = df['계정'].replace({'계산에 참여한 계정 펼치기': ''}, regex=True)
df['기준일'] = pd.to_datetime(df['기준일'],
format='%Y-%m') + pd.tseries.offsets.MonthEnd()
df['종목코드'] = ticker
df['공시구분'] = frequency
return df
변경 format='%Y/%m') + pd.tseries.offsets.MonthEnd()
import keyring
keyring.set_password('dart_api_key', 'User Name', 'Password')
api_key = keyring.get_password('dart_api_key', 'Henry')
codezip_url = f'''https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key={api_key}'''
안녕하세요
상기처럼
keyring.set_password 한 후에
api_key = keyring.get_password 로 받아오는 데,
그렇게 되면 api_key = 'Password' 값이 되서
codezip_url = f'''https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key={api_key}'''
상기 값이 제대로 안먹는게 아닌가요?
계속 안되어서
{api_key} ==> 'dart_api_key'를 직접 입력해서 실행하니 먹히던데...
제가 잘못 이해하고 있는건지 문의드립니다.
감사합니다.
도서와 인터넷 강의를 통하여 잘 학습하다.
Chapter 10 국내 주식 데이터 수집의 import pymysql(234 Page)부터 Spyder를 실행하면
"ModuleNotFoundError: No module named 'pymysql'"를 발생하여
Anaconda Prompt로 pip install pymysql하면 "Requirement already satisfied: pymysql in c:\users\david\appdata\roaming\python\python310\site-packages (1.0.3)"로 되어 있습니다.
아주 기초적인 부분일지 모르겠으나 어떠한 이유인지 찾을 수 없군요.
Line 141은 아래와 같으며,
(Line141) # price = res.json()['output']['stck_prpr']
책 P445 한줄 씩 실행하며 검증해 보니. (현재가 확인 실행시) get_price (Line141) 에러가 발생하는데, 해결 방법 부탁드립니다.
jupyternotebook, spyder, pycharm 등.
교재에 명시된 바가 없어 질의드립니다. ㅠㅠ
import pymysql
con = pymysql.connect(
user='root',
passwd='1234',
host='127.0.0.1',
db='shop',
charset='utf8'
)
파이썬에서 sql db에 접속하는데 위 쿼리를 실행하는데
아래같은 deny 메시지가 뜨네요.
OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
어떻게 해결할 수 있을련지요..
import keyring
keyring.set_password('xxxxxxxxxxxx','email주소','password')
import keyring
import requests as rq
from io import BytesIO
import zipfile
api_key = keyring.get_password('xxxxxxxxxxxx', 'Kim')
codezip_url = f'''https://opendart.fss.or.kr/api/corpCode.xml?crtfc_key={api_key}'''
codezip_data = rq.get(codezip_url)
print(codezip_data.headers)
상기와 같이 따라하면 하기와 같이 나와 책과 다르게 나오네요
{'Connection': 'keep-alive', 'Set-Cookie': 'WMONID=gnNui8TZXqd; Expires=Wed, 11-Sep-2024 16:41:10 GMT; Path=/', 'Date': 'Tue, 12 Sep 2023 07:41:10 GMT', 'Content-Type': 'application/xml;charset=UTF-8', 'Transfer-Encoding': 'chunked'}
api 주소만 따로 떼서 f stirng으로 넣지않고 바로 넣어 url 불러오면 책과 정상적으로 나오는데...
어디가 잘못된건지 알 수 있을까요?
여기에 질문을 올리는 걸 모르고 유튜브에 올려놓았네요.
영상은 잘 보고 있습니다. 좋은 교육 영상 감사드립니다. 교수님 영상을 보고 따라하다가
WICS 기준 섹터정보 크롤링 파트에서 biz_day를 생성하기 위해 다음과 같은 코드를 작성했는데 경로가 잘못되었다는 걸로 계속 나옵니다.
제가 전공자가 아니다보니 생각보다 쉽지 않군요.
url = 'https://www.wiseindex.com/index#/G10'
data = rq.get(url)
data_html = BeautifulSoup(data.content)
parse_day = data_html.select_one(
'#ng-app > div > div > div.col-xs-9.contentsBox > div.ng-scope > div:nth-child(3) > input').text
시간 괜찮으실때 답변 부탁드리겠습니다. 감사합니다.
p255 전 종목 재무제표 크롤링 질문드립니다.
해당 파이썬 코드 입력하여 db 저장하면,
종목코드가 20,40,50,70 까지만 저장되고 그 이후는 저장이 안되는데,
어느 부분이 잘못 되었는지 문의드립니다.
여기 깃허브에 올라온 코드 복붙해도 같은 현상이라서... 답변 부탁드려요
안녕하세요, 좋은 책 잘 보고 있습니다.
책 265페이지에서 Tiingo의 경우 상장폐지된 종목을 커버한다고 되어 있는데, (미국 주식에 한해서여도 상관없습니다) documentation을 봐도 잘 모르겠어서 질문드립니다.
감사합니다.
Mac book air M1 에서 MySQL Workbench를 설치하고 SELECT 문을 호출했을 때 세션이 닫히는 에러가 있습니다.
현 최신 Workbench 버전은 8.0.33 인데, 8.3.30 으로 down grade 하니 작동 됩니다.
안녕하세요
2가지 질문 드립니다.
뒤로가기 실행을 위해 driver.back() 명령문을 실행하면 에러는 나지 않는데 열었던 네이버 '뉴스' 페이지에서 naver home 으로 넘어가지 않습니다. 네어비 홈에서 뉴스로 진입할 때에 같은 페이지가 '뉴스'로 변경 되는 것이 아니고 뉴스 탭이 별도로 생기면서 뒤로가기 버튼이 활성화되지 않아서 인 것 같은데 해결 방법은 무엇인지요
검생창으로 실행하는 명령
driver.find_element(By.CLASS_NAME, value = 'input_text').send_keys('퀀트 투자 포트폴리오 만들기') 을 실행하면 다음과 같은 에러가 발생합니다.
NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":".input_text"}
(Session info: chrome=115.0.5790.171); For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
워낙 초보라서 해당 페이지에 가서 확인해 보아도 이해가 가지 않아 질문 드립니다. 해결 방법을 부탁드립니다.
안녕하세요 선생님.
코드를 하나하나 따라하다 보니 궁금증이 많아 자꾸 질문의 글을 드립니다.
324페이지의 모멘텀 포트폴리오 코드를 따라하다 return 결괏값들이 수익률이 너무 괴리가 있어서 보니 다음과 같은 문제에 부딛쳤습니다.
과거 데이터 2022년12월28일 인바이오젠(종가 16320원) 아이오케이(종가 9061원) 시티랩스(9589원) 이었습니다. 그런데, 이 종목들이 전부 감자를 하여 과거 주가 데이터를 받아보니 수정주가로 되어 인바이오(816원) 아이오케이(425원) 시티랩스(592원) 으로 되어 2023년12월29일 주가로 수익률을 계산하니 전부 수익률 상위권 입니다.
현실은 기업이 감자를 할 정도로 나쁜 기업의 수익률이 수정주가로 인해 수익률 상위권으로 나타나면 모멘텀으로 투자를 했을때 의미가 없을거 같습니다. 이렇듯 과거 주가는 수정주가로 인해 감자전 주가를 반영하지 못해 모멘텀 순위가 바르게 나타나지 않을때 어떻게 하면 모멘텀 투자에 부합되는 코딩방법이 있는지 알고 싶습니다.
언제나 건승 하시고, 앞으로도 좋은 책 출간을 바랍니다.
재무제표 크롤링에서
df['기준일'] = pd.to_datetime(df['기준일'],
format='%Y-%m')
이 부분을 실행하게 되면
ValueError: time data "2020/12" doesn't match format "%Y-%m", at position 0. You might want to try:
- passing format
if your strings have a consistent format;
- passing format='ISO8601'
if your strings are all ISO8601 but not necessarily in exactly the same format;
- passing format='mixed'
, and the format will be inferred for each element individually. You might want to use dayfirst
alongside this.
다음과 같은 오류가 뜹니다 해결할 수 있는 방법이 있는지 궁금합니다!
안녕하세요..
교재 99페이지와 100페이지에 나와있는
df.groupby(['species','sex']).mean() 코드와
df.groupby(['species']).agg(['max','min'])코드가 판다스 최신버전에서는 에러가 나오는데 해결 방법이 있을까요?
아마 판다스 버전 2.0 이하에서는 잘 되는것 같은데 그 이상 버전에서는 에러가 나네요..
책 p472에 Port(3306)부분에 다음과 같이 !표에 The specified port is already in use라고 표시 됩니다. next를 할 수 없습니다. 어디가
문제입니까?
안녕하세요, p228 위에 코딩 (3)을 실행할 시 저는 인코딩 에러가 뜨는데 왜 그럴까요?
sector_stk = pd.read_csv(BytesIO(down_sector_stk.content), encoding = 'euc-kr')
=>
'UnicodeDecodeError: 'euc_kr' codec can't decode byte 0xef in position 10: illegal multibyte sequence'
import talib
import yfinance as yf
stock_data = yf.download('^GSPC')
다음 코드를 실행하면 결과가 다음과 같이 나옵니다.
[100%**] 1 of 1 completed
1 Failed download:
['^GSPC']: TypeError('super(type, obj): obj must be an instance or subtype of type')
이렇게 나오고 stock_data 에 값이 저장되지 않습니다.
기초적인 것인데 어디서 잘못된건지 모르겠습니다..
책에서는 조금 다른 방법으로 데이터를 받아오길래 다른 방법으로 시도해보았습니다.
import pandas_datareader as web
stock_data = web.DataReader('^GSPC', 'yahoo')
결과:
Traceback (most recent call last):
Input In [25] in <cell line: 3>
stock_data = web.DataReader('^GSPC', 'yahoo')
File ~\anaconda3\lib\site-packages\pandas\util_decorators.py:207 in wrapper
return func(*args, **kwargs)
File ~\anaconda3\lib\site-packages\pandas_datareader\data.py:370 in DataReader
return YahooDailyReader(
File ~\anaconda3\lib\site-packages\pandas_datareader\base.py:253 in read
df = self._read_one_data(self.url, params=self._get_params(self.symbols))
File ~\anaconda3\lib\site-packages\pandas_datareader\yahoo\daily.py:153 in _read_one_data
data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"]
TypeError: string indices must be integers
이처럼 다른방법도 오류가 나네요..
p.347 부분에서
select * from kor_setor 이후
where 기준일 = (select max(기준일) from kor_ticker) ;
해당 부분에서
from kor_sector 로 변경해야 될 듯합니다.
책 p231에
코스피 코스닥 데이터 합치기에서 kor_ticker = pd.merge(krx_sector,
krx_ind,
on=krx_sector.columns.intersection(
krx_ind.columns).tolist(),
how='outer')
kor_ticker.head()를 실행하면 "문법에러"가 나타납니다. 어떻게된 것인지 가르쳐 주십시요
p85, result = pd.merge(left, right, on="key", how="right")
-. 오류 -> 결과는 how="left" 결과
-. 수정 -> result = pd.merge(left, right, on="key", how="left")
p86, result = pd.merge(left, right, on="key", how="left")
-. 오류 -> 결과는 "right" 결과
-. 수정 -> esult = pd.merge(left, right, on="key", how="right")
p.244~245에 나오는 코드 관련 질문입니다.
import pymysql
from sqlalchemy import create_engine
import pandas as pd
from datetime import date
from dateutil.relativedelta import relativedelta
import requests as rq
import time
from tqdm import tqdm
from io import BytesIO
#DB 연결
engine = create_engine('mysql+pymysql://root:[email protected]:3306/stock_db')
con = pymysql.connect(user='root',
passwd='1234',
host='127.0.0.1',
db='stock_db',
charset='utf8')
mycursor = con.cursor()
ticker_list = pd.read_sql("""
select * from kor_ticker
where 기준일 = (select max(기준일) from kor_ticker)
and 종목구분 = '보통주';
""", con=engine)
#DB저장 쿼리
query = """
insert into kor_price(날짜, 시가, 고가, 저가, 종가, 거래량, 종목코드)
values (%s,%s,%s,%s,%s,%s,%s) as new
on duplicate key update
시가 = new.시가, 고가 = new.고가, 저가 = new.저가,
종가 = new.종가, 거래량=new.거래량;
"""
error_list = []
for i in tqdm(range(0, len(ticker_list))):
#티커선택
ticker = ticker_list['종목코드'][i]
#시작일과 종료일
fr = (date.today()+relativedelta(years=-5)).strftime("%Y%m%d")
to = (date.today().strftime("%Y%m%d"))
try:
#url 생성
url = f'''https://fchart.stock.naver.com/siseJson.nhn?symbol={ticker}&requestType=1
&startTime={fr}&endTime={to}&timeframe=day'''
#데이터 다운로드
data = rq.get(url).content
data_price = pd.read_csv(BytesIO(data))
#데이터 클렌징
price = data_price.iloc[:, 0:6]
price.columns = ['날짜', '시가', '고가', '저가', '종가', '거래랑']
price = price.dropna()
price['날짜'] = price['날짜'].str.extract('(\d+)')
price['날짜'] = pd.to_datetime(price['날짜'])
price['종목코드'] = ticker
#주가 데이터를 DB에 저장
args = price.values.tolist()
mycursor.executemany(query, args)
con.commit()
except:
print(ticker)
error_list.append(ticker)
#타입슬립 적용
time.sleep(2)
#DB연결종료
engine.dispose()
con.close()
다음과 같이 작성해서 실행하면 price랑 args 까지는 모두다 데이터가 정상적으로 들어있는데
mycursor.executemany(query, args) 해당 부분에서 데이터가 sql에 저장되지 않습니다.
price
Out[68]:
날짜 시가 고가 저가 종가 거래랑 종목코드
0 2018-07-02 10200.0 10250.0 9900.0 9940.0 146002.0 000020
1 2018-07-03 9940.0 10350.0 9940.0 10000.0 114950.0 000020
2 2018-07-04 9980.0 10450.0 9980.0 10450.0 45931.0 000020
3 2018-07-05 10450.0 10600.0 10150.0 10400.0 32153.0 000020
4 2018-07-06 10450.0 10750.0 10150.0 10450.0 40958.0 000020
... ... ... ... ... ... ...
1229 2023-06-26 10830.0 10970.0 10730.0 10890.0 124535.0 000020
1230 2023-06-27 10970.0 11020.0 10600.0 10820.0 118043.0 000020
1231 2023-06-28 10850.0 10850.0 10460.0 10540.0 135671.0 000020
1232 2023-06-29 10450.0 10530.0 10340.0 10400.0 112113.0 000020
1233 2023-06-30 10400.0 10440.0 10200.0 10390.0 86693.0 000020
[1234 rows x 7 columns]
mycursor.executemany(query, args)
Out[69]: 0
실제로 i=0만 대입해서 콘솔에 입력해보면 price와 args는 데이터가 모두 나오는데
mycursor.executemany(query, args) 를 실행하면 out이 0으로 뜨고 sql에 저장되지 않습니다
어디서 잘못된 걸까요..?
WICS > 에너지 > Components 에서 List 부분 데이터를 불러 올 수 없습니다.
책 P237-238.
import json
import requests as rq
import pandas as pd
url = f'''https://www.wiseindex.com/Index/GetIndexComponets?ceil_yn=0&dt=20230927&sec_cd=G10'''
data = rq.get(url).json()
data['list'][0]
print(data['list'][0]) 하면, 아무 비어있는 것으로 출력됩니다.
해당 url의 개발자 페이지에서 Network > Preview 혹은 Response를 보면 데이터가 있는데도 말이죠.
해결 방안이 있을까요?
428페이지에 아래 코드에서 오류발생하고 있습니다.
res = requests.post(url, headers=headers, data=json.dumps(body))
access_token = res.json()['access_token']
KeyError: 'access_token'
res.json()는 이상없고 res.json()['access_token']에서 오류가 발생하는데 확인 요청드립니다.
안녕하세요! 책 보고 공부 중입니다!
Anaconda Prompt에서 pip install bt를 통해 bt패키지를 받으려 했는데 오류가 나와서요!
ERROR: Failed building wheel for bt
Failed to build bt
ERROR: Could not build wheels for bt, which is required to install pyproject.toml-based projects
이러한 오류가 나왔는데 파이썬 버전 문제일까요?? C:\Users\user> python를 통해서 버전을 확인하면 Pthon 3.10.9로 나옵니다!
책과 함께 유투브 동영상을 보면서 지식을 알려주심에 감사 드립니다.
실습을 해 가면서 이해가 되지 않고 또, 코드가 제대로 동작 하지 않아 두가지 질문 드립니다.
1. 230페이지
krx_ind = rq.post(down_url, {'code': otp}, headers=headers) 에서 'code'는 주식의 코드를 의미하는지요?
안녕하세요 @hyunyulhenry 님.
10.2.2 개별종목 지표 크롤링 부분에서 선행EPS 컬럼이 존재하지않아 크롤링이 불가능한 이슈가 있습니다.
KRX들어가봤는데 선행EPS컬럼이 어느순간 삭제된 것 같더라구요.
저는 일단 크롤링 후 쿼리 저장부분에서 null
값을 박아서 넣어주고있고, 233쪽 컬럼 재정의 부분에서 선행EPS
컬럼을 제거해주고있습니다.
확인해보시고 대응방안 알려주시면 좋을 것 같습니다..
http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201
안녕하세요 대표님 책과 유툽으로 부지런히 공부하고 많이 배우고 있습니다!
14장 포트폴리오 구성 전략을 진행을 해야되는데
pip install riskfolio-lib==3.3.0 해당 부분에서 오류로 시작을 못하고 있습니다.
유튜브에 나와있는 대로 cvxpy 부분이 설치가 안되있어 구글링하여 열심히 해봤지만
결국 .whl 파일을 구해서 나름 진행이 된듯하지만
후에 다시 pip 으로 진행을 해봐도 계속 막히더라구요..
이틀이 넘게 진행을 못하고 있어서
많이 바쁘시겠지만 답답한 마음에 도움을 받고자 문의 드립니다.
C:\Users\Grit_Upward\Desktop\Grit_Upward>pip install riskfolio-lib==3.3.0
Collecting riskfolio-lib==3.3.0
Using cached Riskfolio_Lib-3.3.0-py3-none-any.whl (90 kB)
Requirement already satisfied: scipy>=1.0.1 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (1.7.3)
Collecting arch>=4.15
Using cached arch-5.3.1-cp39-cp39-win32.whl (814 kB)
Requirement already satisfied: numpy>=1.17.0 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (1.21.5)
Requirement already satisfied: statsmodels>=0.10.1 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (0.13.2)
Requirement already satisfied: xlsxwriter>=1.3.7 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (3.0.3)
Requirement already satisfied: scikit-learn>=0.22.0 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (1.0.2)
Requirement already satisfied: matplotlib>=3.3.0 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (3.5.1)
Requirement already satisfied: networkx>=2.5.1 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (2.7.1)
Requirement already satisfied: pandas>=1.0.0 in c:\users\grit_upward\appdata\roaming\python\python39\site-packages (from riskfolio-lib==3.3.0) (1.4.1)
Requirement already satisfied: astropy>=4.3.1 in c:\anaconda3\lib\site-packages (from riskfolio-lib==3.3.0) (5.0.4)
Collecting cvxpy>=1.0.25
Using cached cvxpy-1.3.1-cp39-cp39-win32.whl
Requirement already satisfied: property-cached>=1.6.4 in c:\anaconda3\lib\site-packages (from arch>=4.15->riskfolio-lib==3.3.0) (1.6.4)
Requirement already satisfied: pyerfa>=2.0 in c:\anaconda3\lib\site-packages (from astropy>=4.3.1->riskfolio-lib==3.3.0) (2.0.0)
Requirement already satisfied: PyYAML>=3.13 in c:\anaconda3\lib\site-packages (from astropy>=4.3.1->riskfolio-lib==3.3.0) (6.0)
Requirement already satisfied: packaging>=19.0 in c:\anaconda3\lib\site-packages (from astropy>=4.3.1->riskfolio-lib==3.3.0) (21.3)
Requirement already satisfied: scs>=1.1.6 in c:\anaconda3\lib\site-packages (from cvxpy>=1.0.25->riskfolio-lib==3.3.0) (3.2.2)
Collecting osqp>=0.4.1
Using cached osqp-0.6.2.post8.tar.gz (227 kB)
Installing build dependencies ... error
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> [84 lines of output]
Collecting oldest-supported-numpy
Using cached oldest_supported_numpy-2022.11.19-py3-none-any.whl (4.9 kB)
Collecting setuptools>=40.8.0
Using cached setuptools-67.6.1-py3-none-any.whl (1.1 MB)
Collecting wheel
Using cached wheel-0.40.0-py3-none-any.whl (64 kB)
Collecting setuptools_scm>=6.2
Using cached setuptools_scm-7.1.0-py3-none-any.whl (43 kB)
Collecting qdldl
Using cached qdldl-0.1.5.post3.tar.gz (69 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status 'done'
Collecting numpy==1.19.3
Using cached numpy-1.19.3-cp39-cp39-win32.whl (11.0 MB)
Collecting packaging>=20.0
Using cached packaging-23.0-py3-none-any.whl (42 kB)
Collecting tomli>=1.0.0
Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting typing-extensions
Using cached typing_extensions-4.5.0-py3-none-any.whl (27 kB)
Collecting scipy>=0.13.2
Using cached scipy-1.10.1.tar.gz (42.4 MB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
Installing backend dependencies: started
Installing backend dependencies: finished with status 'done'
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error
Preparing metadata (pyproject.toml) did not run successfully.
exit code: 1
[37 lines of output]
+ meson setup --prefix=C:\anaconda3 C:\Users\Grit_Upward\AppData\Local\Temp\pip-install-c94p7j4m\scipy_ce8926b2efa9402fbba293eb9115979b C:\Users\Grit_Upward\AppData\Local\Temp\pip-install-c94p7j4m\scipy_ce8926b2efa9402fbba293eb9115979b\.mesonpy-olf21y77\build --native-file=C:\Users\Grit_Upward\AppData\Local\Temp\pip-install-c94p7j4m\scipy_ce8926b2efa9402fbba293eb9115979b\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2
The Meson build system
Version: 1.0.1
Source dir: C:\Users\Grit_Upward\AppData\Local\Temp\pip-install-c94p7j4m\scipy_ce8926b2efa9402fbba293eb9115979b
Build dir: C:\Users\Grit_Upward\AppData\Local\Temp\pip-install-c94p7j4m\scipy_ce8926b2efa9402fbba293eb9115979b\.mesonpy-olf21y77\build
Build type: native build
Project name: SciPy
Project version: 1.10.1
Activating VS 17.5.3
C compiler for the host machine: cl (msvc 19.35.32216.1 "Microsoft (R) C/C++ 최적화 컴파일러 버전 19.35.32216.1(x64)")
C linker for the host machine: link link 14.35.32216.1
C++ compiler for the host machine: cl (msvc 19.35.32216.1 "Microsoft (R) C/C++ 최적화 컴파일러 버전 19.35.32216.1(x64)")
C++ linker for the host machine: link link 14.35.32216.1
Cython compiler for the host machine: cython (cython 0.29.33)
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -Wno-unused-but-set-variable: NO
Compiler for C supports arguments -Wno-unused-function: NO
Compiler for C supports arguments -Wno-conversion: NO
Compiler for C supports arguments -Wno-misleading-indentation: NO
Compiler for C supports arguments -Wno-incompatible-pointer-types: NO
Library m found: NO
..\..\meson.build:63:0: ERROR: Unknown compiler(s): [['ifort'], ['gfortran'], ['flang'], ['pgfortran'], ['g95']]
The following exception(s) were encountered:
Running `ifort --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `ifort -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `gfortran --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `gfortran -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `flang -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `pgfortran --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `pgfortran -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `g95 --version` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
Running `g95 -V` gave "[WinError 2] 지정된 파일을 찾을 수 없습니다"
A full log can be found at C:\Users\Grit_Upward\AppData\Local\Temp\pip-install-c94p7j4m\scipy_ce8926b2efa9402fbba293eb9115979b\.mesonpy-olf21y77\build\meson-logs\meson-log.txt
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
Encountered error while generating package metadata.
See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
위 내용이 오류 전문입니다. 너그러운 양해 부탁드립니다.
안녕하세요
책 사서 보면서 공부중인데요
P 351 에 하기 코드가 안 먹네요
유투브 동영상 보면 이상없이 실행되시던데...
저는 하니까 z-score가 data_bind 칼럼에 안들어가져서
dataframe이 빈 데이터가 되더라고요
print(data_bind.groupby('SEC_NM_KOR', dropna=False)['return'].apply(stats.zscore, nan_policy='omit'))
상기처럼 실행하면
리스트 형식으로 들어가 있는게 보이는데,
print(data_bind['z-score'])
해당 항목으로 하면 NaN이 됩니다.
인덱스 설정을 해줘야 하는건지...
고민하다가 해결방법을 몰라 문의드립니다.
data_bind.loc[data_bind['SEC_NM_KOR'].isnull(), 'SEC_NM_KOR'] = '기타'
data_bind['z-score'] = data_bind.groupby('SEC_NM_KOR', dropna=False)['return'].apply(stats.zscore, nan_policy='omit')
1: print(data_bind.groupby('SEC_NM_KOR', dropna=False)['return'].apply(stats.zscore, nan_policy='omit'))
print(data_bind['z-score'])
1: 결과
SEC_NM_KOR
IT [0.1436575842145283, -0.5022560341142324, 0.05...
건강관리 [0.4589118861712773, 1.4471044349054212, -0.43...
경기관련소비재 [-0.6546025396542542, -0.7265392401358445, -0....
금융 [-0.5998644806935471, 0.3806968904761906, -0.6...
.....
2: 결과
Name: return, dtype: object
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
....
slack을 만들다보니 4개를 만들었습니다. slack삭제하는 법을 가르쳐주세요
질문을 작성하는 오늘은 3월 16일이고 최근 영업일은 3월 15일입니다. 그런데 네이버 증권 증시자금동향에서 크롤링하는 최근 영업일은 3월 13일입니다. 왜 가장 최근인 영업일을 크롤링하지 않고 이틀 전 날짜를 크롤링하나요?
그리고 재무제표를 크롤링한 결과에서 삼성전자의 자본을 보면 실제 사이트에서 본 금액과 달리 마지막 자릿수에서 반올림되어있던데 이건 왜 그런 건가요? 당기순이익, 매출액, 영업활동으로인한현금흐름은 그렇지 않은 것을 보면 큰 수는 반올림이 되는 것 같아요.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.