트레이딩

[백테스팅] Python으로 정확하게 국내 주식 수수료, 세금, 수익금 그리고 수익률 계산하기 (키움증권 HTS/MTS와 동일)

성민석 2023. 7. 19. 13:28

백테스팅을 위해서 코드를 짜다보면,

 

반드시 종목별로 정확하게 수수료, 세금, 수익금 그리고 수익률을 구해야하는 경우가 생깁니다.

 

사실 이게 가치투자나 스윙매매와 같이 호흡이 긴 매매를 하는 입장에선 별거 아닌거 같은데,

(물론 상대적으로 비교했을 때 그렇다는거지, 절대로 이런 매매를 한다고 무시한다는 입장은 아닙니다.)

 

제가 주로 연구하고 있는 단타 전략에 대해서 백테스팅할 경우는 수수료와 세금이 정말 중요하게 작용합니다.

 

키움증권에서 제시하고 있는 수익률 산출식

 

위 사진은 키움증권에서 제시하고 있는 수익률 산출식인데, 이게 사실 글로 보면 조금 복잡합니다.

 

처음에 하면 보통 잘 안 맞는 부분이

1) 수수료는 10원 미만으로 절사를 하고 세금은 1원까지 모두 포함시켜야한다는 점입니다.

2) 추가적으로 수수료는 매수할 때 1번 그리고 매도할 때 한번해서 총 2번 발생된다(0.015% X 2)는 점입니다. 

 

물론 국내 선물의 경우에는 세금이 없고 수수료가 진입과 청산시 한꺼번에 발생하여 계산된다는 점이 조금 다르긴 합니다만, 기본적으로 포맷은 비슷하다고 생각하시면 됩니다.

 

아래는 제가 Python 코드로 2023년 기준으로 세금 0.20%로 계산할 때의 코드를 첨부하였습니다.

 

실제로 제 자동매매에서 사용하고 있는 코드 일부이고, MTS와 HTS를 비교했을 때 1원단위까지 정확하게 맞아드는 코드입니다.

 

# 매수 관련
entry_price = 32_700
entry_volume = 91
entry_pricevol = entry_price * entry_volume
entry_commission_rate = 0.00015  # 0.015%
entry_commission = int(entry_pricevol * entry_commission_rate // 10 * 10)  # 10원 미만 절삭

# 매도 관련
exit_price = 34_400
exit_volume = 91
exit_pricevol = exit_price * exit_volume
exit_commission_rate = 0.00015  # 0.015%
exit_commission = int(exit_pricevol * exit_commission_rate // 10 * 10)  # 10원 미만 절삭

# 세금
tax = int(exit_pricevol * 0.0020)  # 0.20% / 1원단위까지 포함

# 수익금
profit = int(exit_pricevol - entry_pricevol - entry_commission - exit_commission - tax)

# 수익률(%)
profit_rate = profit / entry_pricevol * 100

print(f"""
[매수] 진입가 {entry_price:,}원 진입수량: {entry_volume:,}주 진입금액: {entry_pricevol:,}원 수수료: {entry_commission:,}원
[매도] 청산가 {exit_price:,}원 청산수량: {exit_volume:,}주 청산금액: {exit_pricevol:,}원 수수료: {exit_commission:,}원

=> 수수료합: {entry_commission+exit_commission:,}원 세금: {tax:,}원 제세금합: {entry_commission+exit_commission+tax:,}원
=> 수익금: {profit:,}원 수익률: {profit_rate:.2f}%
""")

 

 

실제로 제가 지난 7.17 포스코엠텍을 매매했을 때 정보와 비교해보겠습니다.

 

 

아래는 실제 MTS에서의 실현손익 정보를 가져왔습니다. 보시다시피 1원까지 정확한 것을 확인하실 수 있습니다.

 

 

참고로 키움증귄에서 모의투자의 경우는 아래와 같이 수수료 차이가 있습니다.

실거래시 매수 매도 수수료는 각각 0.015%이며  모의투자의 수수료율은 0.35% 의 수수료로 계산됩니다

728x90
반응형