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

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

르무엘 2023. 3. 28. 19:20

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

https://drive.google.com/

 

Google Drive: 로그인

이메일 또는 휴대전화

accounts.google.com

 

[라이브러리 설치 명령어 yfinance pandas-datareader finance-datareader

!pip install yfinance pandas-datareader finance-datareader

 

[삼성전자/ LG전자 최근 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

df_1 = fdr.DataReader('005930 ','2023')
df_2 = fdr.DataReader('066570 ','2023')

df = pd.DataFrame()
df['Samsung'] = df_1['Close']
df['LG'] = df_2['Close']

# tail(100) 최근 100일  15,8 사이즈 
df.tail(100).plot(figsize=[15,8], grid=True)

#df[df['Change'] > 0.05]

#df.plot(y=['Open','Close'],figsize=[15,8], grid=True)

[3 일 이동평균선의 수익률 구하기]

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

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

# 종가
df = df[['Close']]
# 3일간의 평균
df['ma'] = df.rolling(3).mean()
df['action'] = np.where(df['Close'] > df['ma'], 'buy', 'sell')
#df['action_temp'] = df['action'].shift(1)
df.iloc[-1,-1] = 'sell'

cond1 = (df['action'] == 'buy') & (df['action'].shift(1)=='sell')
cond2 = (df['action'] == 'sell') & (df['action'].shift(1)=='buy')

df_buy = df[cond1]
df_sell = df[cond2]

df_result = pd.concat([df_buy, df_sell], axis=1)
df_result.head(30)


#df['real_buy'] = np.where(cond1, 'buy','')
#df

 

 

[n 일 이동평균선의 수익률 구하기]

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,n):
  df =fdr.DataReader(code,'2023')
  # 종가
  df = df[['Close']].copy()
  # 3일간의 평균
  df['ma'] = df.rolling(n).mean().shift(1)
  df['action'] = np.where(df['Close'] > df['ma'], 'buy', 'sell')
  #df['action_temp'] = df['action'].shift(1)
  df.iloc[-1,-1] = 'sell'

  cond1 = (df['action'] == 'buy') & (df['action'].shift(1)=='sell')
  cond2 = (df['action'] == 'sell') & (df['action'].shift(1)=='buy')

  df_buy = df[cond1].reset_index()
  df_buy.columns  = ['날짜','종가(buy)','이평값','액션']

  df_sell = df[cond2].reset_index()
  df_sell.columns = ['날짜','종가(sell)','이평값','액션']

  df_result = pd.concat([df_buy, df_sell], axis=1)

  df_result['수익률'] = df_result['종가(sell)'] / df_result['종가(buy)']  
  #cumprod 누적곱
  return df_result[['수익률']].cumprod().iloc[-1,-1] -1

get_return('005930',6)

 

[단기n, 장기 n2 일 이동평균선의 수익률 구하기]

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_sl(code, n1,n2):

  df =fdr.DataReader(code,'2023')
  # 종가
  df = df[['Close']].copy()
  # 3일간의 평균
  df['ma1'] = df['Close'].rolling(n1).mean().shift(1)
  # 3일간의 평균
  df['ma2'] = df['Close'].rolling(n2).mean().shift(1)

  df['action'] = np.where(df['ma1'] > df['ma2'] ,'buy' , 'sell')

  df.iloc[-1,-1] = 'sell'

  cond1 = (df['action'] == 'buy') & (df['action'].shift(1)=='sell')
  cond2 = (df['action'] == 'sell') & (df['action'].shift(1)=='buy')

  df_buy = df[cond1].reset_index()
  df_buy.columns  = ['날짜','종가(buy)','이평값1','이평값2','액션']

  df_sell = df[cond2].reset_index()
  df_sell.columns = ['날짜','종가(sell)','이평값1','이평값2','액션']

  df_result = pd.concat([df_buy, df_sell], axis=1)

  df_result['수익률'] = df_result['종가(sell)'] / df_result['종가(buy)']  
  #cumprod 누적곱
  df_final = (df_result[['수익률']].cumprod().tail(1) -1) *100
  df_final['단기'] = n1
  df_final['장기'] = n2

  return df_final

[최적의 이동평균선 구하기]

for short in range(3,11):
  for long in range(30,61):
    try:
      df= get_return_sl('005930',short,long)
      dfs.append(df)
    except:
      print(f'error - {long, short}')

df_result = pd.concat(dfs)

df_result.sort_values(by='수익률',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