본문 바로가기
파린이의 퀀트 투자

퀀트 투자_주식: S&P500과 KOSPI(3)

by 꿈꾸는 피터팬 2024. 4. 9.
반응형

  지난 포스팅에 이어 새로운 데이터를 업데이트 하는 코딩을 구성하고자 한다. 제일 처음 떠오른 생각은 다음과 같이 input 함수를 이용해서 분기별 데이터를 입력하는 것을 고려하였다.

 

def update_data(stock_df):
    print("\nCurrent data:")
    print(stock_df)
    new_data = float(input("Enter new return value: "))
    new_row = pd.DataFrame({'Returns': [new_data]})
    stock_df = pd.concat([stock_df, new_row], ignore_index=True)
    return stock_df

file_path_stock_a = 'KOSPI.xlsx'
file_path_stock_b = 'S&P_500_Historical Data_(2).xlsx'
df_stock_a = read_data(file_path_stock_a)
df_stock_b = read_data(file_path_stock_b)

df_stock_a = update_data(df_stock_a)
df_stock_b = update_data(df_stock_b)

df_stock_a.to_excel(file_path_stock_a, index=False)
df_stock_b.to_excel(file_path_stock_b, index=False)

print("Data Saved")

 

  위 코드를 입력하여 실행시키면 다음과 같은 결과가 나온다. (다음 분기 KOSPI S&P500 수익률은 각각 0.01로 설정하고 테스트 차원에서 두 번 입력한 상황이다.)

(좌) 주피터 노트북에서 input 함수를 이용하여 데이터를 입력하고 있다. (우) 데이터 입력 결과값

 

  그러나 위와 같은 방법으로는 꾸준한 관리가 힘들 수 밖에 없다는 결론에 도달하였다. 매 분기 별로 새로운 정보가 업데이트 될 때마다 각각의 신규 데이터를 입력하는 방식은 데이터 양, 즉 고려 대상의 수가 많아지면 많아질수록 직접 입력하여야 하는 데이터 값이 증가하게 된다는 문제점이 있었다. 또한 각 데이터가 하나의 웹사이트에서 업데이트 되는 것이 아니기 때문에 각각의 데이터를 하나하나 직접 찾아서 입력하여야 하는데 이 작업이 여간 귀찮은 일이 아니다.

 

  따라서 지금은 새로운 데이터를 웹페이지에서 자동적으로 인식하고 추출하여 저장한 뒤 평균 및 표준편차를 계산하는 것까지 완료할 수 있는 명령어를 만들어 내는 것이 맹점이다. 검색해보니 request 모듈을 통해 html 콘탠츠를 가져오고 BeautifulSoup4 모듈을 이용하여 해당 내용을 해석(parsing)할 수 있다고 한다(사실 필자는 이 부분을 정확하게는 이해 못 했다. 다음의 내용은 사실과 매우 다를 수 있음에 유의하기를 권한다.) 일반적인 웹사이트는 그 모습을 기술하기 위한 '마크업 언어' HTML(Hyper Text Mark-up Language)로 이루어져 있다.

 

  request 모듈이 여기서 사용되는 것은 request.get( ) 함수를 통해서 원하는 웹사이트에서 이러한 html을 추출하여 코딩 환경으로 가져오기 위함이고 BeautifulSoup4 모듈은 이렇게 가져온 html을 해석해서 그 중에서 내가 원하는 종류의 태그를 출력할 수 있도록 도와주기 위함이다. 다만 아직까지 필자의 코딩 실력이 모듈과 함수를 모두 이해하기는 어려워 한동안은 직접 입력하는 방식으로 진행하며 코딩에 대한 이해도를 높여야 할 것으로 보인다. 다음의 간단한 예시는 한경 코리아 마켓 홈페이지에서 코스피 데이터를 추출하기 위한 과정이다. 그러나 이는 끝내 제대로 이루어지지 않았으니 그 과정에 대하여 참고만 하기를 바란다.

 

https://markets.hankyung.com/

 

시장종합 | 한국경제

시장종합 장종료 원/달러 1,354.90 1.70 +0.13% 코리아마켓 금융 정보는 각 콘텐츠 제공업체로부터 받는 투자 참고사항이며, 오류가 발생하거나 지연될 수 있습니다. 한경닷컴과 콘텐츠 제공업체는

markets.hankyung.com

 

반응형