kquant API document (0.3.6)

backtest_update_stock_daily

단일 주식의 일간기준 백테스트 결과를 하루 단위로 업데이트하는 함수

backtest_update_stock_daily(
    symbol: 'str',
    order: 'int'=0,
    date: 'DATE_IN'=None,
    df_result: 'Optional[pd.DataFrame]'=None,
    df_position: 'Optional[pd.DataFrame]'=None,
    init_cash: 'int'=0,
    trade_close: 'bool'=False,
    allow_loan: 'bool'=False,
    broker_fee_percent: 'float'=0.0,
    exchange_fee_percent: 'float'=0.0,
    trade_tax_percent: 'float'=0.0,
    slippage_tick: 'int'=0,
    use_notadj: 'bool'=False,
    logger: 'Optional[logging.Logger]'=None,
    logname: 'Optional[str]'=None,
    logpath: 'Optional[str]'=None,
    loglevel: 'Optional[int]'=None,
    return_logger: 'Optional[bool]'=False,
) -> tuple[pd.DataFrame, pd.DataFrame] | tuple[pd.DataFrame, pd.DataFrame, logging.Logger]
  • symbol (str): 주식 종목단축코드 문자열
  • order (int): 해당 날짜, 해당 주식의 주문수량, 양수는 매수, 음수는 매도. 디폴트 0
  • date (DATE_IN): 주문이 발생한 날짜 문자열
  • df_result (Optional[pd.DataFrame]): 과거의 백테스트 매매결과 데이터프레임
  • df_position (Optional[pd.DataFrame]): 과거의 백테스트 포지션 데이터프레임
  • init_cash (int): 초기 보유현금. 디폴트 0원 만약 df_result 인수가 주어지면 init_cash 인수를 무시하고 df_result 인수로부터 계산
  • trade_close (bool): True면 매매정보를 무시하고 보유잔고 정리. 디폴트 False
  • allow_loan (bool): 융자가능여부 즉, 음수인 보유현금 허용 설정값. 디폴트 False
  • broker_fee_percent (float): 증권사 수수료(%). 디폴트 0
  • exchange_fee_percent (float): 유관기관 수수료(%). 디폴트 0
  • trade_tax_percent (float): 매도시 주식양도세(%). 디폴트 0
  • slippage_tick (int): 거래시 발생하는 슬리피지(slippage)틱(호가가격단위). 디폴트 0
  • df_order_date_col (str): 날짜 열의 이름. 디폴트 “DATE”
  • symbol_col (str): 종가 열의 이름. 디폴트 “SYMBOL”
  • order_col (str): 주문수량 열의 이름. 디폴트 “ORDER”
  • return_position (bool): 포지션 정보 데이터프레임을 반환할지의 여부. 디폴트 False
  • use_notadj (bool): 수정주가가 아닌 원주가 사용. 디폴트 False
  • logger (Optional[logging.Logger]): 로거 객체. None이면 자동생성
  • logname (Optional[str]): 로거 이름. 로거 객체 logger가 None이면 이 이름으로 생성
  • logpath (Optional[str]): 로그파일 경로 문자열. None이 아니면 로그파일 생성
  • loglevel (Optional[int]): 로그레벨. 디폴트 logging.INFO :param Optional[bool] return logger: True이면 로거 객체를 추가적으로 반환 :return tuple[pd.DataFrame,pd.DataFrame] | tuple[pd.DataFrame,pd.DataFrame,logging.Logger]: 백테스트 매매결과 및 포지션 데이터프레임
예제 코드
import kquant as kq
df_result, df_position = kq.backtest_update_stock_daily(
   "005930", 1, "20230102")
[2023-01-02] <KQuantNotAllowLoan> 융자 금지 오류: 매매가능 현금 미보유
[2023-01-02] 종목: 005930, 주문전 보유수량:      0 주문수량:      1, 매매수량:      0, 주문후 보유수량:      0
df_result
DATE SYMBOL PRICE ORDER QTY TRADE_PRICE POSITION AVG_PRICE FEE TRADE_TAX SLIPPAGE CASHFLOW CASH HIST_VALUE STOCK_VALUE TOTAL_VALUE REAL_PROFIT UNREAL_PROFIT PROFIT HIGHWATERMARK DRAWDOWN
0 2023-01-02 005930 55,500 1 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
df_position
DATE SYMBOL QTY TRADE_PRICE HIST_VALUE FEE NOT_DELETE
df_result, df_position = kq.backtest_update_stock_daily(
   "005930", -1, "20230111", df_result, df_position)
[2023-01-03] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
[2023-01-04] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
[2023-01-05] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
[2023-01-06] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
[2023-01-09] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
[2023-01-10] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
[2023-01-11] <KQuantNotAllowShort> 공매도 금지 오류: 매도 수량이 현재 보유수량보다 큼
[2023-01-11] 종목: 005930, 주문전 보유수량:      0 주문수량:     -1, 매매수량:      0, 주문후 보유수량:      0
df_result
DATE SYMBOL PRICE ORDER QTY TRADE_PRICE POSITION AVG_PRICE FEE TRADE_TAX SLIPPAGE CASHFLOW CASH HIST_VALUE STOCK_VALUE TOTAL_VALUE REAL_PROFIT UNREAL_PROFIT PROFIT HIGHWATERMARK DRAWDOWN
0 2023-01-02 005930 55,500 1 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2023-01-03 005930 55,400 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
2 2023-01-04 005930 57,800 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
3 2023-01-05 005930 58,200 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
4 2023-01-06 005930 59,000 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
5 2023-01-09 005930 60,700 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
6 2023-01-10 005930 60,400 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
7 2023-01-11 005930 60,500 -1 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
df_position
DATE SYMBOL QTY TRADE_PRICE HIST_VALUE FEE NOT_DELETE