저PER전략

jh_k·2023년 2월 7일
0

투자전략

목록 보기
7/7
  • BPS : 주가수익배수
  • PER : 주가수익비율
  • PBR : 주가순자산비율
  • EPS : 주당순이익
  • DPS : 주당배당금
import pandas as pd
import numpy as np

df = pd.read_excel(
    "./data_kosdaq_20210401_per.xlsx", 
    engine='openpyxl', 
    index_col= 0, 
    usecols=[0,1,6,8]
)

df.replace("-", np.nan, inplace=True)
### 거래량 데이터
df2 = pd.read_excel(
    "./data_kosdaq_20210401_sise.xlsx", 
    engine="openpyxl", 
    index_col=0
)

### df에 거래량 컬럼을 join
df2 = df.join(other=df2[["거래량"]])
### 변동성 등락룰데이터
df_change = pd.read_excel(
    "./data_kosdaq_change_2021.xlsx", 
    engine = "openpyxl", 
    index_col=0, 
    usecols=[0,5]
)

df3 = df2.join(other=df_change)
# 거래량이 0인 종목 -> 거래정지 된 목록 -> 제외
cond = df3["거래량"] != 0
df4 = df3.loc[cond]
# PER을 기준으로 오름차순 정렬
df4.sort_values("PER", inplace=True)
df4.reset_index(inplace=True)
df4.head(10)
# 저 PER을 기준으로 하위 30개를 출력
low_per30 = df4.head(30)
low_per30["등락률"].mean()
# 20개씩 데이터의 그룹을 생성 
# 각 그룹에 70개의 데이터로 분할
df4['group'] = pd.cut(df4.index, bins=20, labels=False)

# 그룹별 등락률 평균 데이터
df5 = df4.groupby('group')[['등락률']].mean()
# 시각화
import matplotlib.pyplot as plt

plt.rc("font", family='Malgun Gothic')

plt.figure(figsize=(14, 6))
plt.bar(df5.index, df5['등락률'], width=0.4)
plt.title("PER 그룹별 등락률")
plt.xlabel("PER 그룹")
plt.ylabel("수익률")
plt.show()

profile
Just Enjoy Yourself

0개의 댓글