월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
df . append 또는 cocnat, merge, join 등을 (axis=1) 방향으로 병합할 때
질문 드려요! df를 axis=1 방향 -> 이쪽방향으로 추가하려고 합니다. 이 때, df1 = pd.DataFrame() for i in dflist: df1 = pd.concat([df1, i], axis=1, join='outer') 대략 이런식으로 설정하려고 합니다. 그리고 매월 혹은 분기마다 종목들이 설정되게 하려고합니다. 해당코드가 '멀티팩터'에서 사용되는데, 밸류팩터에서 1개종목, 모멘텀팩터에서 1개종목, 퀄리티팩터에서 1개종목, 배당팩터에서 1개종목 이렇게 해서 매 분기 4종목씩 소팅이 되게 하려하는 목적입니다. 그리고 그 4개 종목에 동일배분을 하려고 하고요!! 다만, 한 분기에 모멘텀팩터와 밸류펙터에서 같은 종목을 선택하는 경우에 그 분기에는 3개종목만 픽 하게 됩니다. 이 때, 데이터프레임에 3개 종목만 골라지게 되면 원래 4개 종목일 땐 각 팩터당 25%씩 투자해서 sum=100% 를 맞춰주는건데 3개 종목으로 소팅 되면 2개 팩터가 1개 팩터를 골랐을 때 그 1개종목엔 50%를 주고, 나머지 각 팩터의 각 종목(2개)는 25%씩 줘야 하는게 로직 상 맞습니다. 다만, 이렇게 했을 때 코드 차원에서 df를 axis=1 방향으로 추가할 때 인덱스를 종목으로 주어서 axis=0방향으로도 추가가 되는데 컬럼이 axis=1방향으로 df들이 결합될 때 늘어나는 row에서 코딩이 같은 종목을 중복값 처리 해버리네요... 이런식으로요!! A라는 종목이 한 번 더 row 밑으로 추가가 되어야 하는데 컬럼에서 값이 있다보니 그 값을 사용하면서 중복처리가 되어버립니다 ㅠ_ㅠ append 도 사용해보고 join 도 사용해보고 ignore index 무시도 해보고, 모든 경우의 수를 다 해보았는데 안되어서.. 이럴 때 어떻게 해야하는지 코드좀 요청 드립니다 ;ㅅ; 혹시 이럴 때 if문을 사용해서 ~~가 ~~일 때에는 중복 무시 이런식으로 컨디셔너 소팅을 for loop 안에 해야하는지요.
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
지수가중이동평균의 alpha 방식 쓰임에 대한 질문입니다.
먼저 매우 유익한 강의를 해주셔서 감사드립니다. 강의를 들으면서 정말 큰 도움을 받고 있습니다. 제가 질문드리고 싶은 것은, EWMA의 강의에서 alpha 방식에는 t -> ∞ 경우와 t ≠ ∞ 경우로 설명을 해주셨습니다. 두 경우 결과가 약간씩 차이가 나는데 강사님께서는 각 어플리케이션에서의 필요에 맞게 사용하라고 언급해주셨습니다. 그런데 제가 생각해 봤을 때 현실적으로 t는 무한대가 아니므로 t ≠ ∞의 식을 사용하는 경우가 대부분일거라는 생각이 듭니다. 그렇다면 t -> ∞ 인 경우의 식을 왜, 그리고 언제 사용하는 것인지, 이 식을 사용했을 경우의 이점이 무엇인지에 대한 의문이 생깁니다. 얼른 생각했을 때는 t -> ∞ 로 놓고 계산하는 것이 근사를 계산하는 방식이므로 performance 측면에서 더 유리하기 때문이 아닐까 추측해봅니다. 즉, 데이타가 광범위하고 아주 클 때 t -> ∞ 로 놓고 계산하는 것이 프로그램 성능을 높여주기 때문이 아닐까 생각이 되는데 그렇다면 상대적으로 다루는 데이타 사이즈가 크지 않은 개인이 사용하는 프로그램에서는 대부분은 그냥 t ≠ ∞ 으로 놓고 사용하면 될 것 같습니다. 이런 저의 추측이 맞는 것인지, t -> ∞ 로 가정하는 방식을 사용하는 딱히 다른 이유가 있는 것인지 궁금합니다. 감사합니다~
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
No module named 'FinanceDataReader'
안녕하세요 아나콘다의 쥬피터로 강의를 듣는 학생입니다. No module named 'FinanceDataReader' 에러가 떠서 다음과 같이 실행해보았는데 아직 문제가 해결되지 않아 이렇게 질문을 올립니다. !pip install -U finance-datareader !pip install --upgrade pandas
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
지수이동평균의 alpha 값에 문의가 있습니다.
안녕하세요. 만들어 주신 강의 정말 감사히 잘 수강하고 있습니다. 너무 이론적인 질문이 아닌가 싶기는 하지만, df.ewm()에 들어가는 alpha 값에 관하여 문의가 있어서 글을 남깁니다. alpha값 산정의 기준은 어떤게 있을까요? 혹시 이동평균화할 구간에 맞춰서 변동을 하나요? 밑에 질문이 좀 장황해졌는데, 아무래도 진행해본 과정을 자세히 알려드리는게 나을것 같아서 좀 많이 적었습니다. 현재 수강을 하면서 추가적으로 기술적 지표 코딩을 연습하는데, 이 교재에서는 numpy array를 이용하여 for 문등 원초적인? 코딩을 따라하며 익히고 있습니다. Pandas DataFrame을 이용해 하면 좋지 않나 싶지만, 저자가 옛날 스타일의 코딩을 좋아하는것인지 모르겠지만, 일단 따라서 연습하고 있습니다. 다시 질문으로 돌아가, alpha 값에 관하여 궁금한 점이 있습니다. 강의중에 alpha 값을 0.8을 쓰시기도, 0.2를 쓰시기도 하셔서, 어떤 값이 더 적합한지 찾아보았습니다. 최근에 개인적으로 ema 함수로 사용하는 과정들이 많아졌는데, 혹시 잘못되면 문제일것 같아서, 찾아보았습니다. 아래 링크에 있는 Investopia의 설명에서는 2/(이평하고자하는 n갯수 +1)의 값이 alpha에 들어간다고 나옵니다. 수학적인 증명의 과정은 정확히 모르겠습니다. 그래서 연산되어 나오는 값을 비교해 보았습니다. 현재 제가 연습한 코딩은 아래와 같습니다. def ema(Data, alpha, lookback, what, where): alpha = alpha / (lookback + 1.0) beta = 1 - alpha # First value is a simple SMA Data = ma(Data, lookback, what, where) # Calculating first EMA Data[lookback + 1, where] = (Data[lookback + 1, what] * alpha) + (Data[lookback, where] * beta) # Calculating the rest of EMA for i in range(lookback + 2, len(Data)): try: Data[i, where] = (Data[i, what] * alpha) + (Data[i - 1, where] * beta) except IndexError: pass # Cleaning Data = jump(Data, lookback) # lookback 구간동안 새로생긴 칼럼의 값은 nan 이라서 삭제한다. return Data 여기에서 5일 지수이평을 구한다고 값을 내어보고, ema(Data, alpha, lookback, what, where)에서는 alpha에 2, lookback에는 5를 입력하였습니다. Pandas에 들어가있는 오브젝트인 ewm를 이용해 계산을 해보았습니다. 아래와 같이 0.333을 입력하여야 근사한 값이 나오는것 같습니다. 2/(20+1)로 0.333333를 계산한 것입니다. pd.DataFrame(dfe).iloc[:,1].ewm(alpha = 0.3333).mean() 이미 지수이평의 값은 단순이평보다 반응이 빠르기에 어떤 값을 넣어도 문제가 없다고 생각하는 분들도 계시겠지만, 그래도 확실히 알아보는게 나을것 같아서 문의 드립니다. 새해 복 많이 받으시고, 감사합니다. 출처: How Is Exponential Moving Average (EMA) Calculated? (investopedia.com)
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
후속강의에 대해 질문이 있습니다.
안녕하세요 디핑소스님 강의 너무 잘듣고있습니다. 실전적으로 사용할수있는 것들, 특히나 데이터 처리에 있어서 다루어보지 않았으면 알수 없는 고민들을 많이 알려주셔서 감사드립니다. 혹시 후속강의를 준비하시거나 고려하고 계신부분이 있으신지요?
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
[4.4 Rolling Correlation] 두 종목 Correaltion 시 rolling 적용 문의
위 코드에서 두종목 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가 날거라 생각했는데 정상작동하길래 원리가 궁금해서 물어봅니다.
- 미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
선생님 Part1-VAA 38:40 에서 포트폴리오 CAGR, Sharp R 이 잘못된 이유 발견
선생님 8.2. 동적자산배분 Part1-VAA 38:40 에서 왜 Shar R, CAGR이 잘못되셨냐고 했는데 데이터 문제입니다. fdr.datareader 혹은 investpy, pdr.datareader 등으로 야후파이낸스 데이터 가져오면 주가데이터가 가격이 안맞아요!!