월요일 시작가로 무조건 사고 금요일 시작가로 무조건 파는 전략으로 수익이 나는 주식이 있었는지 2018년부터 찾아보는 함수 ㅋㅋㅋ
그런데 일단 딱 시작가로 사고 팔 수가 있긴 있나? ㅋㅋㅋ 몇 초만에 값이 바뀔 텐데? ㅋㅋㅋ
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 monfri(ind):
df = fdr.DataReader(ind,'2018')
df=df.reset_index()
df=df[['Date','Open']]
df['Day'] = 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': # 첫줄이 Friday면 없애고 막줄이 Monday면 없앰
df=df.drop(index=df.index[-1])
cond1 = (df['Day']== 'Monday') &(df['Day'].shift(-1)=='Monday')
df=df.drop(index=df[cond1].index) #금요일이 휴일이라서 월요일이 연속인 경우 삭제
cond2 = (df['Day']== 'Friday') &(df['Day'].shift(-1)=='Friday')
df=df.drop(index=df[cond2].index)
df['Open_Fri'] = df['Open'].shift(-1)
df=df[df['Day']=='Monday']
df=df[['Open','Open_Fri']]
df.columns=['buy_at','sell_at']
cond3 = (df['sell_at']!=0) & (df['buy_at']!=0)
df=df[cond3]
df['rt'] = (df['sell_at']/df['buy_at']).cumprod()
return df[['rt']].iloc[-1,-1]-1
저 함수로 추출할 상장기업을 다 가져옴
import dart_fss as dart_fss
import pandas as pd
api_key = '9201cdfa9f493f1d7571e6fbf1ebaa70ec895b6f'
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()]
저 상장기업 목록 중에 100개만 랜덤 추출하여 첫번째 함수에 돌려봄
d = pd.DataFrame()
for row in df_listed.sample(100)[['stock_code','corp_name']].itertuples():
try:
dc={
'name' :row[2],
'return':monfri(row[1])
}
d=d.append(dc,ignore_index=True)
except:
print(f'error: {row[2]}')
d.sort_values('return',ascending=False)
결과는... 수익률이 높은 종목은 별로 많지 않음 ㅎㅎㅎ
묻지마 투자를 하지 맙시다