커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
월금전략쪽 코드 질문
undefined주차
북마크
이*민
댓글
2
추천
0
조회수
10
조회수
10
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


-함수는 정상인 점 확인했습니다.

>> print(get_return('005930')) 으로 최종 수익률 나오는 것 확인


밑쪽의 dart 자료를 불러와서 for 문을 돌리는 과정에서, append 사용이 불가해 concat 을 사용했는데 결과값이 항상 error 로만 떨어집니다.

Empty DataFrame 이라고 뜨는데 구글링을 해보니 " " 값도 아니고, NaN 도 아닌 행열이 어긋난 상태라는것 같은데요,

이부분 코드좀 봐주실수 있을까요?


코드를 df = pd.concat([df,doc]) 로 한 이유는, 앞선 수업인 '최적의 K값 구하기' 에서는 해당 코드로 정확한 결과값을 얻었기 때문입니다.


샘플10 으로 계속 돌려도 항상 결과값은 10개의 에러값만 떨어집니다. 이에 샘플50, 샘플100을 해보아도 마찬가지여서, 확인한번만 부탁드려요



스파르타 즉문즉답





작성한 코드 및 에러 메세지

#월요일에 사서, 금요일에 파는 전략

from pandas_datareader import data as pdr

import yfinance as yf

yf.pdr_override()


import numpy as np

import pandas as pd

import FinanceDataReader as fdr


def get_return(code):

    df = fdr.DataReader(code,'2023')

    df = df.reset_index()

    df = df[['Date','Open']]

    df['Day'] = pd.to_datetime(df['Date']).dt.day_name()


    cond = (df['Day'] == 'Monday') | (df['Day'] == 'Friday')

    df = df[cond]


    if df.iloc[0,2] == 'Friday':

        df = df.drop(index = df.index[0])

    if df.iloc[-1,2] == 'Monday':

        df = df.drop(index = df.index[-1])


    cond = (df['Day'] == 'Monday') & (df['Day'].shift(-1) == 'Monday')

    df = df.drop(index = df[cond].index)  #인덱스 전체 지우기

    cond = (df['Day'] == 'Friday') & (df['Day'].shift(-1) == 'Friday')

    df = df.drop(index = df[cond].index)  #인덱스 전체 지우기


    df['Open_Fri'] = df['Open'].shift(-1)

    df = df[df['Day'] == 'Monday']

    df = df[['Open','Open_Fri']]

    df.columns = ['buy_at','sell_at']


    df['return'] = df['sell_at'] / df['buy_at']

    return df['return'].cumprod().iloc[-1] - 1


import dart_fss as dart_fss


api_key = 'f5941f9609fed0691fb8dec96802ff8bb63a7243'

dart_fss.set_api_key(api_key=api_key)

all = dart_fss.api.filings.get_corp_code()

df = pd.DataFrame(all)

df_listed = df[df['stock_code'].notnull()]


df = pd.DataFrame()

for row in df_listed.sample(10)[['stock_code','corp_name']].itertuples():

  try:

    doc = pd.DataFrmae({

       'name': row[2],

       'return': get_return(row[1])

    })

    df = pd.concat([df,doc])

  except:

     print(f'error - {row[2]}')


print(df)




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴