본문 바로가기
KHOpenAPI

KHOpenAPI: 절대 OPT10085로 평가손익을 구하지 마라

by Falto 2023. 9. 30.

/********************************************************************/
/// ########## Open API 함수를 이용한 전문처리 샘플코드 예제입니다.

 [ opt10085 : 계좌수익률요청 ]

 1. Open API 조회 함수 입력값을 설정합니다.
    계좌번호 = 전문 조회할 보유계좌번호
    SetInputValue("계좌번호"    , "입력값1");


 2. Open API 조회 함수를 호출해서 전문을 서버로 전송합니다.
    CommRqData( "RQName"    ,  "opt10085"    ,  0    ,  "화면번호");

/********************************************************************/

[INPUT] (1)
    "계좌번호"

[OUTPUT:멀티데이터] (17)
    "일자", "종목코드", "종목명", "현재가", "매입가", "매입금액", "보유수량", "당일매도손익"
    , "당일매매수수료", "당일매매세금", "신용구분", "대출일", "결제잔고", "청산가능수량", "신용금액", "신용이자"
    , "만기일"

opt10085의 출력에는 평가손익 항목이 없다. 그말인즉슨 위 정보를 토대로 사용자 프로그램이 세금과 수수료를 계산을 해야 한다는 뜻이다. 계산 과정은 생략하고, 다음과 같은 계산 결과가 나왔다고 가정해보자.

매입가: 7277원

보유수량: 100주

수수료: 4790원

세금: 0원

현재가: 6450원

평가손익 계산식이 (현재가-매입가)x보유수량-수수료-세금이므로 위 계산 결과에 따르면 평가손익은 (6450-7277)x100-4790-0 이다. -87490원이 나온다. 그런데 놀라운 점이 있다. 사실 실제 평가손익은 -87515원이라는 것이다!!

도대체 왜 평가손익이 다르게 나오는 걸까? 예상해보건대 매입가의 오차 때문인 것 같다. 파이썬 인터프리터에 (6450 - 7277.25) * 100 - 4790을 넣어보면 -87515가 나온다. 즉 사실 내 평단가는 7277.25원인데 키움증권이 반올림해버려서 7277원으로 표시되고 그로 인해 오차가 발생한다는 것.

그럼 정확한 평가손익은 어떻게 구하나요? 네, OPW00004를 쓰시면 됩니다.

 

댓글