kquant API document (0.3.6)

backtest_update_stock_port_daily

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

backtest_update_stock_port_daily(
    symbols_and_orders: 'list[tuple[str, int]]',
    date: 'DATE_IN',
    dict_df_result: 'Optional[dict[str, pd.DataFrame]]'=None,
    dict_df_position: 'Optional[dict[str, 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[dict[str, pd.DataFrame], dict[str, pd.DataFrame]] | tuple[dict[str, pd.DataFrame], dict[str, pd.DataFrame], logging.Logger]
  • symbols_and_orders (list[tuple[str, int]]): 주식 종목단축코드 문자열과 주문수량 정수의 튜플의 리스트
  • date (DATE_IN): 주문 발생일 날짜 문자열
  • dict_df_result (Optional[dict[str, pd.DataFrame]]): 과거의 복수종목 백테스트 매매결과 데이터프레임 딕셔너리
  • dict_df_position (Optional[dict[str, pd.DataFrame]]): 과거의 복수종목 백테스트 포지션 데이터프레임 딕셔너리
  • init_cash (int): 초기 보유현금. 디폴트 0원
  • 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
  • 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이면 로거 객체를 추가적으로 반환
  • 반환값 (tuple[dict[str, pd.DataFrame], dict[str, pd.DataFrame]]): 백테스트 매매결과 및 포지션 데이터프레임 딕셔너리
예제 코드
import kquant as kq
dict_df_result, dict_df_position = kq.backtest_update_stock_port_daily(
   [("005930",10)], "2023-01-02")
[2023-01-02] 종목: 005930, 주문전 보유수량:      0 주문수량:     10, 매매수량:     10, 주문후 보유수량:     10
[2023-01-02] <KQuantNotAllowLoan> 융자 금지 오류: 매매가능 현금 미보유
재계산
[2023-01-02] 종목: 005930, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
dict_df_result["005930"]
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 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
dict_df_position["005930"]
DATE SYMBOL QTY TRADE_PRICE HIST_VALUE FEE NOT_DELETE
dict_df_result, dict_df_position = kq.backtest_update_stock_port_daily(
   [("000660",20)], "2023-01-03", dict_df_result, dict_df_position)
[2023-01-03] 종목: 000660, 주문전 보유수량:      0 주문수량:     20, 매매수량:     20, 주문후 보유수량:     20
[2023-01-03] <KQuantNotAllowLoan> 융자 금지 오류: 매매가능 현금 미보유
재계산
[2023-01-03] 종목: 000660, 주문전 보유수량:      0 주문수량:      0, 매매수량:      0, 주문후 보유수량:      0
dict_df_result["005930"]
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 0 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
dict_df_result["000660"]
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 000660 75,700 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2023-01-03 000660 75,600 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
dict_df_result["TOTAL"]
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 TOTAL 0 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2023-01-03 TOTAL 0 0 0 0 0 0.0000 0 0 0 0 0 0 0 0 0 0 0 0 0
dict_df_position["005930"]
DATE SYMBOL QTY TRADE_PRICE HIST_VALUE FEE NOT_DELETE
dict_df_position["000660"]
DATE SYMBOL QTY TRADE_PRICE HIST_VALUE FEE NOT_DELETE