분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[팀_쥬혁이]MVO손실함수에_따른_1DCNN_LSTM_포트폴리오_모형
공동작성자
# Pykrx를 통한 수정주가 수집
df = pd.read_csv('train.csv')
df.columns = ['date', 'ticker', 'name', 'volume', 'open', 'high', 'low', 'Close']
df.sort_values(by=['ticker', 'date'], ascending=True, inplace=True)
df.reset_index(drop=True, inplace=True)
df['ticker'] = df['ticker'].apply(lambda x: x[1:])
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
df_ticker = df['ticker'].unique()
n=0
# Public
# start = '20210601'
# end = '20230530'
# Private
start = '20230601'
end = '20230728'
for i, ticker in tqdm(enumerate(df_ticker)):
try :
ohclv = get_ohlcv(ticker, start, end)
ohclv['ticker'] = ticker
if n == 0:
total = ohclv
else :
total = pd.concat([total, ohclv], axis=0)
n+=1
except :
n+=1
print(n, 'error')
continue
#total.to_parquet('/data/final_data.parquet', index=False)
total.to_parquet('/data/new_data_append.parquet', index=False)
삭제된 댓글입니다
[쥬혁이]팀 본 게시물로 제출합니다.
portfolio = portfolio * 250 / 2
연화율 부분인거 같은데 Trading day 15가 아닌 2로 하신 이유가 무엇인지 궁금합니다..! 알려주실 수 있으신지요
검은짱돌의계략님이 생각하신 연율화된 총자산 최종 수익률은
annualized_total_return = total_return * 250 / (trading_days) 로,
여기서 trading_days = 15일입니다.
portfolio = portfolio * 250 / 2 는 연율화된 일간 수익률을 의미합니다.
여기서 나누기 2를 한 이유는 (A)일간 매수수익률의 평균값과
(B)일간 공매도 수익률의 평균값을 더한 값의 평균값{(A+B)/2}을 구하기 때문입니다.
혹시 이해 안 되는 거 있으시면 또 질문해주세요! :)
아하. 답변이 되었습니다. 감사합니다
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
데이터 수집은 다음과 같은 방법으로 했습니다.
def process_dataframe(fdf, rename_dict):
fdf = fdf.reset_index()
fdf = fdf.rename(columns=rename_dict)
fdf['date'] = pd.to_datetime(fdf['date'])
return fdf
def get_ohlcv(ticker, start_date, end_date):
fdf = stock.get_market_ohlcv(start_date, end_date, ticker, adjusted=True) # 종가 기준 수집
fdf = process_dataframe(fdf, {'날짜': 'date', '시가': 'Open', '고가': 'High', '저가': 'Low', '종가': 'Close', '거래량': 'Volume'})
return fdf