inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

4.4 Rolling correlation(상관계수)

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

516

YeongJae Kim

작성한 질문수 6

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가 날거라 생각했는데 정상작동하길래 원리가 궁금해서 물어봅니다. 

투자 pandas 퀀트

답변 2

2

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를 구하기 때문에 문제가 되지 않았던 것입니다.

 

답변이 되셧을까요?

1

신웅섭

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

0

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 공부해라 등 하라는거 안해서 제 자신이 부족하다는 느낌때문에 사소한거에 집착하는거 같습니다.ㅠㅠ

 

0

DeepingSauce

안녕하세요!

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

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

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

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

 

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

 

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

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

 

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

 

감사합니다.

수업 질문 있습니다!

0

187

1

분할 매매와 수익률 !!

0

263

2

물타기(매월 일부 투자금액 증액 효과)

0

219

2

short index 관련 질문드립니다.

0

297

1

CAGR, sharpratio 값이 다르게 나오는 이유?..추측?

0

267

1

fdr.DataReader 오류

0

1435

3

fdr.DataReader 오류

0

434

1

안녕하세요 ! 강의 내용 정리해서 github에 업로드 해도 될까요 ?

0

562

1

inverse volatile 질문입니다

0

270

1

실전1 관련

0

255

1

loc

0

259

1

cumulative rtn을 이용 부분 질문

0

286

1

퍼포먼스 지표에 표준편차를 추가하고싶은데요

0

306

1

궁금한 점이 있어 문의합니다.

0

493

4

올웨더 관련 문의

0

335

2

5:53

0

318

1

개념질문입니다

0

299

1

4.4 Rolling correlation : 상관계수를 구할때 의문이 생겼습니다.

0

464

1

시계열이 다른 자산의 포트폴리오 계산

0

372

1

타임스탬프 질문

0

333

1

으아아아아아

0

338

0

Vectorizing / Event-based Backtesting

0

553

1

후속 강의를 간절히 기다리고 있습니다.

0

217

1

df . append 또는 cocnat, merge, join 등을 (axis=1) 방향으로 병합할 때

0

236

1