복수 주식의 일간기준 백테스트 결과를 하루 단위로 업데이트하는 함수
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]]
): 백테스트 매매결과 및 포지션 데이터프레임 딕셔너리
예제 코드
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
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"]
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
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 |
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 |
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"]
dict_df_position["000660"]