본문 바로가기
파이썬으로 퀀트투자 포트폴리오 만들기

파이썬으로 퀀트투자 포트폴리오 만들기 - 3. 재무제표를 이용해서 FCF 계산 추가하기

by 유티끌 2023. 8. 31.

파이썬으로 퀀트투자 포트폴리오 만들기 - 3. 재무제표를 이용해서 FCF 계산하기

이번 포스트에서는, 크롤링한 재무제표를 이용해서 FCF를 계산해보겠습니다.

FCF, Free Cash Flow

FCF는 잉여현금흐름입니다. PFCR을 계산하기 위해서는 이 FCF값이 필요합니다.

FCF는 간단하게 영업활동으로인한 현금흐름 - 유형자산의증가 항목으로 계산해줄 수 있습니다.

책에 나와있는 코드는 이미 저자의 깃허브에 공개되어있으므로 따로 기재하진 않고, 제가 작성한 FCF계산로직만 소개하도록 하겠습니다.

        if frequency == "q":
            try:
                cash_flow_row = data[data['계정'] == '영업활동으로인한현금흐름']
                for row in range(len(cash_flow_row)):
                    asset_increase = data[data['계정'] == '유형자산의증가']

                    fcf_row = {
                        "계정": "FCF",
                        "기준일": cash_flow_row['기준일'].values[row],
                        "값": cash_flow_row['값'].values[row] - asset_increase['값'].values[row],
                        "종목코드": cash_flow_row['종목코드'].values[row],
                        "공시구분": frequency
                    }
                    fcf_rows.append(fcf_row)

            except IndexError:
                fcf_row = {
                    "계정": "FCF",
                    "기준일": data['기준일'].values[-1],
                    "값": 0,
                    "종목코드": data['종목코드'].values[-1],
                    "공시구분": frequency
                }
                fcf_rows.append(fcf_row)

            data = pd.concat([data, pd.DataFrame(fcf_rows)], ignore_index=False)

항목이 분기 재무제표일때만 계산합니다. 일단 재무제표에서 영업활동으로인한현금흐름유형자산의증가 를 사용합니다.
직전 4개분기 데이터를 긁어오므로 아마 종목당 4번을 반복할 것 입니다.

dictionary의 형태로 만들어주고, key는 DB의 컬럼에 맞게 만들어서 각각의 값을 넣어줍니다. 에는 아까 계산식을 넣어줍니다.

다 계산되면 fcf_rows 라는 배열에 차곡차곡 넣어주고, 반복문이 다 끝나면 마지막에 pd.concat 을 이용해서 기존 재무제표 최하단에 같이 합쳐줍니다.

이렇게 계산된 재무제표는, 기존에 DB저장하는 흐름대로 넣어주면됩니다. (즉 재무제표를 DB에 저장하기전에 계산하고 저장해야함)

계산 결과

네이버 증권 종목분석 > 기업현황 하단에 FCF가 나와있으므로 이 것과 비교해보고자합니다. 대상은 삼성전자 입니다.


보시는 바와 같이, 네이버증권 정보(위)와 제가 계산한 정보(아래)가 일치함을 알 수 있습니다.

끝!

반응형

댓글