4차산업혁명의 일꾼/데이터 크롤링과 파이썬

금융인을 위한 파이썬 업무자동화 5주차

르무엘 2023. 3. 29. 15:57

금융인을 위한 파이썬 업무자동화 5주차

 

https://drive.google.com/

 

Google Drive: 로그인

이메일 또는 휴대전화

accounts.google.com

 

 

전일 종가에서 금일 시작가에서 판다. [ 오르는 추세라 판단]

[주가 가져오는 라이브러리 설치]

!pip install yfinance pandas-datareader finance-datareader

 

 

[변동성돌파전략의 최적의  k값 구하기]

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,k):
  df = fdr.DataReader(code,'2023')

  df['buy_at'] = (df['High'].shift(1) - df['Low'].shift(1)) * k + df['Open']
  df['is_buy'] = np.where(df['High'] > df['buy_at'],'buy', '')
  df['sell_at'] = df['Open'].shift(-1)

  df = df[df['is_buy']== 'buy']

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

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


df =pd.DataFrame()
 

for k in np.arange(0.4 , 0.6, 0.01):
  doc = {
      'k' :k,
      'return' : get_return('005930',k)
  }
  df = df.append(doc, ignore_index=True)

df.sort_values(by='return', ascending=False)

 

[ dart-fss 라이브러리 설치]

!pip install dart-fss
 
 
 

[ 월요일에 사서 금요일에 파는 전략]

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_mf(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'] == 'Friday') | (df['Day'] == 'Monday')

  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) == 'MFridayonday')
  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']

  cond = (df['sell_at'] !=0) & (df['buy_at']!=0 )
  df = df[cond]

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

get_return_mf('005930')

 

[ 상장종목 샘플 10개 구해 월요일에 사서 금요일에 팔면 나오는 수익 보기 ]

import dart_fss as dart_fss
import pandas as pd
from pandas_datareader import data as pdr

import yfinance as yf
yf.pdr_override()

import numpy as np
import FinanceDataReader as fdr


api_key = 'a4f6fad903b1302a1c54b6d63d2c0f7f5fc26838'
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()]

def get_return_mf(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'] == 'Friday') | (df['Day'] == 'Monday')

  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) == 'MFridayonday')
  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']

  cond = (df['sell_at'] !=0) & (df['buy_at']!=0 )
  df = df[cond]

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

df = pd.DataFrame()

for row in df_listed.sample(10)[['stock_code','corp_name']].itertuples():
  try:
    doc ={
        'name' : row[2],
        'return' : get_return_mf(row[1])
    }
    df = df.append(doc, ignore_index=True)
  except:
    print(f'error -{row[2]}')


df.sort_values(by='return', ascending=False)

 

1주차 : 네이버에서 뉴스 가져오는 함수 , 코랩 폴더에 저장 및 다운로드 ,네이버금융사진 저장
https://iamipro.tistory.com/231

 

스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 1주차

스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 1주차 import urllib.request import openpyxl wb = openpyxl.load_workbook('관리종목.xlsx') sheet = wb['종목'] new_rows = list(sheet.rows)[1:] for row in new_rows: print(row[0].val

iamipro.tistory.com



2주차 : 데이터프레임( 순이익, 종가, pbr<1, 시총1조이상, per<20) 그려보기 , 해외주식(야후쿼리) 정보 보기
https://iamipro.tistory.com/232  

 

금융인을 위한 파이썬 업무자동화 2주차

DataFrame 만들기 Pandas : 데이터 분석 해외주식야후사이트: https://finance.yahoo.com/quote/AAPL?p=AAPL&.tsrc=fin-srch Apple Inc. (AAPL) Stock Price, News, Quote & History - Yahoo Finance Find the latest Apple Inc. (AAPL) stock quote, histor

iamipro.tistory.com




3주차 : dart 상장/비상장 엑셀 추출, dart API 로 종목 정보 (증자,배당,직원정보,이사보수, 재무정보, 이익잉여금, 당기순이익, 지분율, 연봉 TOP5 등)
https://iamipro.tistory.com/233

 

금융인을 위한 파이썬 업무자동화 3주차

스파르타코딩클럽 금융인을 위한 파이썬 업무자동화 3주차 [다트 open api 발급] https://opendart.fss.or.kr/uat/uia/egovLoginUsr.do 전자공시 OPENDART 시스템 | 로그인 opendart.fss.or.kr [ 구글 드라이브 코랩 가기] h

iamipro.tistory.com



4주차 : 최적의 단기/장기 이동평균선 구하기
https://iamipro.tistory.com/234

 

금융인을 위한 파이썬 업무자동화 4주차

금융인을 위한 파이썬 업무자동화 4주차 https://drive.google.com/ Google Drive: 로그인 이메일 또는 휴대전화 accounts.google.com [라이브러리 설치 명령어 yfinance pandas-datareader finance-datareader !pip install yfinance

iamipro.tistory.com



5주차 : 변동성 돌파적략 최적값 k 구하기 , 월요일에 사서 금요일에 팔경우 수익나는 종목 보기
https://iamipro.tistory.com/235

 

금융인을 위한 파이썬 업무자동화 5주차

금융인을 위한 파이썬 업무자동화 5주차 https://drive.google.com/ Google Drive: 로그인 이메일 또는 휴대전화 accounts.google.com 전일 종가에서 금일 시작가에서 판다. [ 오르는 추세라 판단] [주가 가져오는

iamipro.tistory.com

 

LIST