종목별 DIV/BPS/PER/EPS 조회
get_market_fundamental 함수는 DIV/BPS/PER/EPS/PBR를 조회합니다.
df = stock.get_market_fundamental("20250416")
df.head()
default가 KOSPI임으로 조회가 안되는 종목이 있으니 market = "ALL" 설정해 주십시오.
df = stock.get_market_fundamental("20250416", market="ALL")
#market 값은 KOSPI / KOSDAQ / KONEX / ALL 입니다.
일자별 DIV/BPS/PER/EPS 조회
get_market_fundamental 함수는 특정 종목에 대해 입력된 기간의 DIV/BPS/PER/EPS/PBR 리턴합니다.
df = stock.get_market_fundamental("20241203", "20250416", "005930")
df.tail()
펀더멘탈 정보를 월별로 보려면 빈도를 주시면 됩니다.
df = stock.get_market_fundamental("20240101", "20250416", "005930", freq="m") #월:m, 년:y
df
삼성전자의 PER(Price Earnings Ratio, 주가수익비율)가 많이 낮아진것으로 알 수 있습니다.
일자별 거래실적 추이 (거래대금)
get_market_trading_value_by_date 지정된 기간 동안의 일자별로 정렬된 (순매수) 거래량을 얻어옵니다. 당일자 최종 매매내역은 오후 6시 이후에 제공됩니다. 매수, 매도만 조회할때는 (ex. on = '매도') 옵션을 사용한다.
from duckdb
from matplotlib.ticker import ScalarFormatter
from matplotlib.ticker import FuncFormatter
df = stock.get_market_trading_value_by_date("20241203", "20250416", "005930")
df["ticker"] = '005930'
df = df.reset_index()
df = df.drop('전체', axis=1)
df = df[['날짜','ticker','기관합계','외국인합계','기타법인','개인']]
df.to_csv("buy.csv",index=False, encoding='utf-8-sig') #파일 저장
ticker = duckdb.query("""
SELECT 날짜,외국인합계,기관합계 FROM read_csv_auto('buy.csv', HEADER=TRUE)
""").to_df()
#그래프
plt.figure(figsize=(10, 5))
formatter = FuncFormatter(lambda x, _: f'{x / 1000000:.0f}')
plt.plot(ticker["날짜"], ticker["외국인합계"], label='외국', marker='o')
plt.plot(ticker["날짜"], ticker["기관합계"], label='기관', marker='s')
plt.title("외국인 & 기관 매수금액(단위:백만원)")
plt.xlabel("날짜")
plt.ylabel("금액")
plt.legend()
plt.grid(True)
# y축을 1000000 단위로 나눠서 표시
plt.gca().yaxis.set_major_formatter(formatter)
plt.tight_layout()
plt.show()
시장의 거래대금을 조회할 때는 ETF, ETN ELW의 포함 여부를 지정할 수 있습니다. 만약 값을 지정하지 않는다면 해당 데이터를 제외한 값을을 반환합니다.
df = stock.get_market_trading_value_by_date("20250401", "20250416", "KOSPI", etf=True, etn=True, elw=True)
df.head()
시장의 거래금액에 대해서 상세하게 보려면 detail=True 옵션을 설정합니다.
df = stock.get_market_trading_value_by_date("20250401", "20250416", "KOSPI", etf=True, etn=True, elw=True,detail=True)
df.head()
일자별 거래실적 추이 (거래량)
get_market_trading_volume_by_date 일자별 시장의 거래량을 조회합니다.
df = stock.get_market_trading_volume_by_date("20250101", "20250416", "005930")
df.head()
df = stock.get_market_trading_volume_by_date("20250101", "20250416", "ALL") #KOSPI, KOSDAQ, KONEX, ALL
df.head()
거래대금과 동일하게 ETF,ETN 거래량과 상세항목까지 동일하게 확인 가능하다.
#ETF,ETN포함
df = stock.get_market_trading_volume_by_date("20250101", "20250416", "KOSPI", etf=True, etn=True, elw=True)
df.head()
#상세내역
df = stock.get_market_trading_volume_by_date("20250101", "20250416", "KOSPI", etf=True, etn=True, elw=True, detail=True)
print(df.head())
투자자별 거래실적 추이 (거래대금)
투자자별 거래대금 조회
df = stock.get_market_trading_value_by_investor("20250401", "20250416", "005930")
df.head()
세 번째 파라미터에 KOSPI, KOSDAQ, KONEX를 지정하면 각 시장의 거래대금을 조회
df = stock.get_market_trading_value_by_investor("20210416", "20210416", "KOSPI") #KOSPI,KOSDAQ,KONEX
df
ETF,ETN포함 시 동일하게 설정해 주어야 함
df = stock.get_market_trading_value_by_investor("20250416", "20250416", "KOSPI", etf=True, etn=True, elw=True)
df
투자자별 거래실적 추이 (거래량)
거래량도 거래대금과 동일하게 조회할 수 있다.
종목별 조회
- stock.get_market_trading_volume_by_investor("20250401", "20250416", "005930")
시장조회
- stock.get_market_trading_volume_by_investor("20250401", "20250416", "KOSPI")
시장조회(ETF포함)
- stock.get_market_trading_volume_by_investor("20250401", "20250416"", "KOSPI", etf=True, etn=True, elw=True)
투자자별 순매수 상위종목
get_market_net_purchases_of_equities 는 순매수 금액 순서로 정렬된 종목 리스트를 반환합니다.
투자자 항목은 금융투자 / 보험 / 투신 / 사모 / 은행 / 기타금융 / 연기금 / 기관합계 / 기타법인 / 개인 / 외국인 / 기타외국인 / 전체 입니다.
df = stock.get_market_net_purchases_of_equities("20250414", "20250416", "ALL", "외국인")
df.head(10)
종목별 시가 총액 조회
get_market_cap 는 특정 일자의 종목별 시가총액/거래량/거래대금/상장주식수/외국인보유주식수를 조회합니다.
df = stock.get_market_cap("20250416")
df.head()
일자별 시가 총액 조회
get_market_cap 함수는 특정 종목의 일자별 시가총액/거래량/거래대금/상장주식수 를 알수 있습니다.
df = stock.get_market_cap("20250412", "20250416", "005930")
df.head()
get_market_cap() frequency 파라미터(d/m/y)를 추가할 수 있습니다. d는 일자, m은 월, y는 연도입니다.
월로 보고자 한다면 다음과 같습니다.
df = stock.get_market_cap("20240101", "20250416", "005930",'m')
plt.figure(figsize=(10, 5))
plt.plot(df.index, df["거래량"], label='거래량', marker='o')
plt.title("거래량")
plt.xlabel("날짜")
plt.ylabel("거래량")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
주로 사용하는 함수를 알아보았습니다.
이 데이터를 기반으로 머신러닝 등으로 주가 예측하는 모델을 만들어 가도록 하겠습니다.
종목 선정을 위해 데이터의 융합등이 필요할 것으로 보이네요.
몇가지 데이터를 합쳐서 사용하기 용이하도록 하는 글을 다음에 올리도록 하겠습니다.
'주식분석프로그램' 카테고리의 다른 글
pykrx 라이브러리 사용법1 (0) | 2025.04.17 |
---|---|
RSI 와 MACD (0) | 2025.04.14 |
증권 데이터 -용어(PER/PBR/EPS/BPS) (0) | 2025.03.24 |