본문 바로가기
시스템트레이딩

KRX 증거금률 및 산출변수 변경내역

by 오늘밤날다 2025. 4. 25.

 

 

낮에 증거금 부족으로 주문이 안 들어갔다.

바로 확인한 후에 예수금을 채워 넣고 포지션 진입에 성공했지만 차라리 안 들어가는 게 좋을 뻔했다.

 

 

그런데 KRX에 가서 확인해 보니 수시 변경이 있었다.

https://regulation.krx.co.kr/contents/RGL/06/06020800/RGL06020800.jsp

 

 

 

 

다른 증권사는 어떤지 모르겠지만 키움증권 OpenAPI로는 증거금률 조회가 안 되는 것 같다.

월말 정기조정 때마다 수작업으로 업데이트를 했는데 이번처럼 수시 변경에는 대응하기가 어렵다.

 

 

결국 위 게시판의 글들을 크롤링하는 코드를 만들었다.

하루에 한 번씩 실행해서 새 글이 올라오면 텔레그램으로 알림을 보내놓는 걸로...

 

import requests
import pandas as pd
from datetime import *


session = requests.Session()
session.headers.update({
    'Referer': 'https://regulation.krx.co.kr/contents/RGL/06/06020800/RGL06020800.jsp',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36'
})

# 1. 초기 페이지 호출
session.get('https://regulation.krx.co.kr/contents/RGL/06/06020800/RGL06020800.jsp')

# 2. OTP
url_ajax = 'https://regulation.krx.co.kr/contents/COM/GenerateOTP.jspx'
payload = {
    'bld': 'RGL/06/06020800/rgl06020800_01',
    'name': 'list',
    '_': int(datetime.now().timestamp() * 1000)
}
res_otp = session.post(url_ajax, data=payload)
otp = res_otp.text.strip()

# 3. AJAX 호출 URL
ajax_url = 'https://regulation.krx.co.kr/contents/RGL/99/RGL99000001.jspx'

fromdate = (datetime.now() - timedelta(days=30)).strftime('%Y%m%d')
todate = datetime.now().strftime('%Y%m%d')

payload_list = {
    'fromdate': fromdate,
    'todate': todate,
    'pagePath': '/contents/RGL/06/06020800/RGL06020800.jsp',
    'curPage': 1,
    'pageSize': 10,
    'code': otp
}

res = session.post(ajax_url, data=payload_list)
data = res.json()

df = pd.DataFrame(data['DS1'])
df['chg_dd'] = pd.to_datetime(df['chg_dd'], format='%Y/%m/%d')
df['contn'] = df['contn'].str.replace(r'\s+', ' ', regex=True).str.strip()
print(df)


# 4. 최근 게시글 추출
now = datetime.now()
now = now.replace(hour=0, minute=0, second=0, microsecond=0)

filtered_df = df[df['chg_dd'] >= now - timedelta(days=1)]
if len(filtered_df) > 0:
    data = filtered_df[['chg_dd', 'contn']].to_dict(orient='records')
    for item in data:
        text = f"{item['chg_dd'].strftime('%Y-%m-%d')}: {item['contn']}"
        print(text)  # 문자열 추출

 

 

'시스템트레이딩' 카테고리의 다른 글

거짓말이겠지?  (0) 2025.04.21
변동성  (1) 2025.04.01
공매도 금지 효과?  (0) 2025.03.06
S&P500 새 전략  (0) 2025.03.02
몇몇 전략들의 근황  (0) 2025.02.02