chore: 백테스트 코드 주석 및 bt 라이브러리 제거
Some checks failed
Docker Build and Deploy / build-and-push (push) Successful in 2m35s
Docker Build and Deploy / deploy (push) Failing after 6s

This commit is contained in:
Ayuriel 2025-03-31 16:48:22 +09:00
parent 4c9908a7ac
commit 5d204e0bba
2 changed files with 48 additions and 49 deletions

View File

@ -3,7 +3,6 @@ attrs==25.3.0
bcrypt==4.3.0 bcrypt==4.3.0
beautifulsoup4==4.13.3 beautifulsoup4==4.13.3
blinker==1.9.0 blinker==1.9.0
bt==1.1.0
cachetools==5.5.2 cachetools==5.5.2
captcha==0.7.1 captcha==0.7.1
certifi==2025.1.31 certifi==2025.1.31

View File

@ -1,48 +1,48 @@
import bt # import bt
import matplotlib.pyplot as plt # import matplotlib.pyplot as plt
#
import pandas as pd # import pandas as pd
#
from db.common import DBManager # from db.common import DBManager
import streamlit_quant.strategy.multi_factor as multi_factor # import streamlit_quant.strategy.multi_factor as multi_factor
import streamlit_quant.strategy.magic_formula as magic_formula # import streamlit_quant.strategy.magic_formula as magic_formula
#
#
qc = DBManager() # qc = DBManager()
mf = multi_factor.get_multi_factor_top(qc, 20) # mf = multi_factor.get_multi_factor_top(qc, 20)
magic_formula = magic_formula.get_magic_formula_top(20) # magic_formula = magic_formula.get_magic_formula_top(20)
#
codes = ','.join(magic_formula['종목코드'].array) # codes = ','.join(magic_formula['종목코드'].array)
price = qc.get_price_list_by_code(codes) # price = qc.get_price_list_by_code(codes)
#
# price = price.set_index(['날짜']) # # price = price.set_index(['날짜'])
# price.rename(columns={"날짜": "Date"}) # # price.rename(columns={"날짜": "Date"})
price["Date"] = pd.to_datetime(price["날짜"]) # price["Date"] = pd.to_datetime(price["날짜"])
#
pivot_df = price.pivot(index="Date", columns="종목코드", values="종가") # pivot_df = price.pivot(index="Date", columns="종목코드", values="종가")
#
# print(pivot_df.tail) # # print(pivot_df.tail)
#
strategy = bt.Strategy("Asset_EW", [ # strategy = bt.Strategy("Asset_EW", [
bt.algos.SelectAll(), # 모든 데이터 사용 # bt.algos.SelectAll(), # 모든 데이터 사용
bt.algos.WeighEqually(), # 동일 비중 투자 # bt.algos.WeighEqually(), # 동일 비중 투자
bt.algos.RunMonthly(), # 매 월말 리밸런싱 # bt.algos.RunMonthly(), # 매 월말 리밸런싱
bt.algos.Rebalance() # 계산된 비중에 따라 리밸런싱 # bt.algos.Rebalance() # 계산된 비중에 따라 리밸런싱
]) # ])
#
# 가격 데이터 중 시작 시점이 모두 다르므로, dropna() 함수를 통해 NA를 모두 제거하여 시작 시점을 맞춤 # # 가격 데이터 중 시작 시점이 모두 다르므로, dropna() 함수를 통해 NA를 모두 제거하여 시작 시점을 맞춤
pivot_df.dropna(inplace=True) # pivot_df.dropna(inplace=True)
#
# 백테스트 생성 # # 백테스트 생성
backtest = bt.Backtest(strategy, pivot_df) # backtest = bt.Backtest(strategy, pivot_df)
#
# 백테스트 실행 # # 백테스트 실행
result = bt.run(backtest) # result = bt.run(backtest)
# prices: 누적 수익률이 데이터프레임 형태로 나타나며, 시작 시점을 100으로 환산하여 계산 # # prices: 누적 수익률이 데이터프레임 형태로 나타나며, 시작 시점을 100으로 환산하여 계산
# to_returns: 수익률 계산 # # to_returns: 수익률 계산
# print(result.prices.to_returns()) # # print(result.prices.to_returns())
#
result.plot(figsize=(10, 6), legend=False) # result.plot(figsize=(10, 6), legend=False)
plt.show() # plt.show()
#
result.display() # result.display()