파이썬으로 퀀트투자 포트폴리오 만들기 - 5. 여러가지 밸류팩터 계산해보기
책에서는 PSR, PCR, PBR, PER정도만 계산했었지만, 추가적인 밸류팩터들을 더 계산해볼 수 있습니다.
저는 이전에 제가 만들었던 스크리너에서 추렸던 것을 추가로 계산했습니다.
마침 저번 포스트에서 FCF(잉여현금흐름) 도 계산해보았으니, PFCR도 같이 계산해보겠습니다.
SQL
일단 데이터베이스에서 계산에 이용할 값들을 가져옵니다.
data = pd.read_sql("""
select * from kor_fs
where 공시구분 = 'q'
and 계정 in ('당기순이익', '자본', '영업활동으로인한현금흐름', '매출액', '매출총이익', '영업이익', 'FCF')
;
""", con=engine)
TTM 계산
그 다음 ttm을 계산합니다.
fs_data = fs_data.sort_values(['종목코드', '계정', '기준일'])
# 각 계정의 ttm 값 구하기
fs_data['ttm'] = fs_data.groupby(['종목코드', '계정'], as_index=False)['값'].rolling(window=4, min_periods=4).sum()[
'값']
# 자본의 평균구하기
fs_data['ttm'] = np.where(fs_data['계정'].isin(['자본', '자산', '부채', '유형자산']), fs_data['ttm'] / 4, fs_data['ttm'])
fs_data = fs_data.groupby(['계정', '종목코드']).tail(1)
return fs_data
밸류 팩터 계산
fs_data = fs_data[['계정', '종목코드', 'ttm']].merge(
ticker_list[['종목코드', '시가총액', '기준일']], on='종목코드'
)
fs_data['시가총액'] = fs_data['시가총액'] / 100000000 # 시가총액 단위를 억 으로 맞춘다.
fs_data['value'] = fs_data['시가총액'] / fs_data['ttm']
fs_data['value'] = fs_data['value'].round(4)
# 지표명을 입력한다.
fs_data['지표'] = self.__calculate_value_factor_name(fs_data)
fs_data.rename(columns={'value': '값'}, inplace=True)
fs_data_merged = fs_data[['종목코드', '기준일', '지표', '값']]
fs_data_merged = fs_data_merged.replace([np.inf, -np.inf, np.nan], None)
이렇게 하면 계정 컬럼에서 제가 sql을 이용해서 가져온 값들에 대해 ttm이 계산되어져있을 것 입니다.
밸류팩터에 대한 이름 바꾸기
data = np.where(data['계정'] == '매출액', 'PSR',
np.where(data['계정'] == '영업활동으로인한현금흐름', 'PCR',
np.where(data['계정'] == '자본', 'PBR',
np.where(data['계정'] == '당기순이익', 'PER',
np.where(data['계정'] == "매출총이익", "PGPR",
np.where(data['계정'] == '영업이익', 'POR',
np.where(data['계정'] == 'FCF', 'PFCR', None)
)
)
)
)
)
)
시가총액에 대해 각각의 항목으로 나눈 값들이, ttm에 저장되어있을 것입니다. 그래서 각 계정의 값에 대해 이름을 다시 수정해줍니다.
저의 경우에는 PGPR, POR, PFCR을 추가해주었습니다.
이 추가한 값을 이용해서, 팩터 포트폴리오 구상시에 이용하면 될 것 같습니다.
반응형
'파이썬으로 퀀트투자 포트폴리오 만들기' 카테고리의 다른 글
파이썬으로 퀀트투자 포트폴리오 만들기 - 6. Github action을 이용해 수정주가 주기적으로 크롤링하기 (1) | 2024.03.23 |
---|---|
파이썬으로 퀀트투자 포트폴리오 만들기 - 4. 부채비율 계산하기 (0) | 2023.09.02 |
파이썬으로 퀀트투자 포트폴리오 만들기 - 3. 재무제표를 이용해서 FCF 계산 추가하기 (0) | 2023.08.31 |
파이썬으로 퀀트투자 포트폴리오 만들기 - 2. 내가 만든 스크리너와 비교해보기 (0) | 2023.08.27 |
파이썬으로 퀀트투자 포트폴리오 만들기 - 1. 국내 주식 관련 데이터베이스 / 테이블 생성하기 (1) | 2023.08.24 |
댓글