인프런 커뮤니티 질문&답변

YeongJae Kim님의 프로필 이미지

작성한 질문수

파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2

4.4 Rolling correlation(상관계수)

[4.4 Rolling Correlation] 두 종목 Correaltion 시 rolling 적용 문의

작성

·

405

2

위 코드에서 두종목 corr_pair_df를 정의하여 correlation을 위한 코드를 작성해주셨는데, daily_rtn_df['KOSEF 국고채10년']에는 왜 rolling을 적용안하는지 궁금합니다.

코딩결과는 daily_rtn_df['삼성전자'].rolling(window=60).corr(daily_rtn_df['KOSEF 국고채10년']과

daily_rtn_df['삼성전자'].rolling(window=60).corr(daily_rtn_df['KOSEF 국고채10년'].rolling(window=60))이 동일하지만

제 생각에는 첫번째 코드는 삼성전자의 60개 묶음 수익률 data에 해당하는 KOSEF국고채10년 데이터가 비교가 안되어  error가 날거라 생각했는데 정상작동하길래 원리가 궁금해서 물어봅니다. 

답변 2

2

DeepingSauce님의 프로필 이미지
DeepingSauce
지식공유자

안녕하세요!

정말 좋은 질문을 주셨습니다.

저는 다음과 같이 확인했습니다.

우선 저도 비슷한 의문이 생겼기에, pandas 코드를 직접 까봐야 겠다고 판단했습니다.

In [1]: import pandas as pd

In [2]: pd

Out[2]: <module 'pandas' from '/Users/chois/miniconda3/lib/python3.9/site-packages/pandas/__init__.py'>

이렇게 pandas 설치 위치를 알아낸뒤, 해당 경로를 vscode등과 같은 코드편집기로 오픈합니다.

rolling 함수를 찾아내면 다음과 같은 파일에 도달할 것입니다: https://github.com/pandas-dev/pandas/blob/7c48ff4409c622c582c56a5702373f726de08e96/pandas/core/window/rolling.py#L1830 

 

여기서 보시면, a, b를 이용해 rolling을 주어진 window로 재계산 하시는 모습을 볼 수 있습니다(판다스 1.2.x 기준입니다)

때문에 국고채에 대해 rolling을 하든 안하든, 어차피 함수 내부적으로 window에 맞게 재계산을 각각 진행해서 corr를 구하기 때문에 문제가 되지 않았던 것입니다.

 

답변이 되셧을까요?

수업 듣는 도중 같은 고민 있었는데,
강사님, 질문자님 모두 감사합니다 ㅎㅎ

0

YeongJae Kim님의 프로필 이미지
YeongJae Kim
질문자

설명은 이해했는데,

문제 해결하는 process가 저는 잘안되네요...

 

In [1]: import pandas as pd

In [2]: pd

Out[2]: <module 'pandas' from 'c:\\users\\yeongjaekim\\anaconda3\\lib\\site-packages\\pandas\\__init__.py'>

pandas 설치 위치 찾은 후에 하기 사진과 같이 __init__.py 를 vscode로 실행하고 ctrl+F를 이용하여  rolling을 검색해 봤는데에 관련 함수가 없어요.

어떻게 하면  위 답변에서 알려주신 링크인 https://github.com/pandas-dev/pandas/blob/7c48ff4409c622c582c56a5702373f726de08e96/pandas/core/window/rolling.py#L1830 로 도달할 수 있을까요?

 

별로 중요하지 않는거 같은데 여태까지 강의에서 수업시간에 다루지 않지만  github공부해라 apply 공부해라 등 하라는거 안해서 제 자신이 부족하다는 느낌때문에 사소한거에 집착하는거 같습니다.ㅠㅠ

 

DeepingSauce님의 프로필 이미지
DeepingSauce
지식공유자

안녕하세요!

우선 __init__.py 말고 그보다 한단계 위 디렉터리인 pandas에 위치한 후에, 해당 하위폴더내에서 find를 하셔야 합니다

이 때, '특정 파일내에서 찾기'가 아닌 '하위 폴더내에 있는 모든 파일에서' 찾기를 통해 def corr 를 찾아내셔야 합니다.

제가 vscode를 쓰지 않아서 해당 방법은 구체적으로 말씀드리기는 어려우나 모든 IDE는 해당 기능을 제공하고 있습니다.

혹여나 찾아냈다고 하시더라도, pandas 버전에 따라 코드가 조금 상이할 수 있으니, 참고바랍니다.

 

그리고 우선 제가 정말 "모든 내용"을 수업에서 다뤄드리지 못한점은 죄송스럽게 생각합니다. 하지만 스스로 학습하시면서 좌절감을 갖지 않으셨으면 좋겠습니다. 아 이런게 있구나, 저런게 있구나 정도만 알아두고, 따로 keep 해두면, 반드시 해당 부분을 공부해야할 순간이 언젠간 찾아올거에요. 그 때 깊게 들여다봐도 늦지 않습니다. 

 

수강생분이 질문하신 내용만 봤을 때, 코드 하나하나에 대해 정말 깊은 고민을 하고 계시는 것처럼 느껴졌고, 이렇게만 꾸준히 하시면, 제가 봤을 때는 빠른시일내에 급성장을 하실 것 같다는 예감이 드네요 ㅎㅎ

(저도 많은 수강생 분들을 만나봐서 감이 딱 옵니다)

 

수업 수강하시면서 궁금한 사항이 있으시면 언제든지 Q&A에 남겨주세요! 저도 최대한 알고있는 범위내에서, 경험에 비추어 답변 드리겠습니다.

 

감사합니다.