인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Hoon님의 프로필 이미지
Hoon

작성한 질문수

(2024년) 파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석

PairTradingFinancialAnalysisIntraDay 클래스 생성 (OOP Part2) - 상속과 다형성의 의해

안녕하세요 선생님! 왜 Log를 취해주는지 궁금합니다.

해결된 질문

작성

·

58

0

선생님 안녕하세요!

 

앞에서, 하루 단위의 종목의 ratio같은 경우는 Log를 씌어주지 않았는데,

 

5분 단위의 data는 왜 log를 씌어주는지 궁금합니다!

(scale이 큰것도 아닌데 왜 앞이랑 차이가 나는지 궁금하네요!)

답변 1

0

다니엘님의 프로필 이미지
다니엘
지식공유자

안녕하세요! Hoon님!

아래의 내용을 확인하시면, zscore_calculation 메서드를 PairTradingIntraDay에서 재정의할 때 ratio_intraday와 ratio 모두에서 np.log를 적용하였습니다.

def zscore_calculation(self):
        """
        주어진 주식 Pair에 윈도우를 기반으로 가격 비율의 이동 평균, 이동 표준 편차를 기반으로 zscore를 계산합니다.
        
        Attributes (속성): 
            - self.pair (튜플): 분석할 주식 쌍의 주식 심볼을 포함하는 튜플입니다.
            - self.df_pair (DataFrame): 분석할 주식에 대한 주식 가격을 포함하는 DataFrame입니다.
            - self.window (정수): 이동 평균과 이동 편차을 계산하는 데 사용되는 일수 (days)입니다.

        Reseults (결과):
            - 현재 가격 비율 from IntraDay Data과 주어진 윈도우의 과거 from 1-d interval Data로부터의 이동 평균, 이동 표준 편차를 추가하여 zscore를 계산하여 self.df를 업데이트합니다.
        """
        self.df_pair_intraday["Day"] = self.df_pair_intraday.index.date
        self.df_pair_intraday["ratio_intraday"] = np.log(self.df_pair_intraday[self.stock1]/self.df_pair_intraday[self.stock2])

        temp_df = self.df_pair.copy()   # 1-d interval data                                              
        temp_df["Day"] = temp_df.index.date
        temp_df["ratio"] = np.log(temp_df[self.stock1] / temp_df[self.stock2])
        temp_df["ma"] = temp_df["ratio"].rolling(window=self.window).mean().shift(1)
        temp_df["msd"] = temp_df["ratio"].rolling(window=self.window).std().shift(1)

하지만 추가적으로 PairTrading class의 ratio에도 np.log를 적용하는 것이 맞습니다. 제가 간과했던 부분입니다. 좋은 지적 감사합니다. 향후 강의에 반영하도록 하겠습니다.

 

감사합니다.

다니엘 드림

Hoon님의 프로필 이미지
Hoon
질문자

아! 넵 감사합니다 선생님!

Hoon님의 프로필 이미지
Hoon

작성한 질문수

질문하기