昨天已经完成:
1、择时模板:带创业板动量策略1份。
2、stramlit gui,支持选择策略并回测。
今日计划:
1、择时-通道突破策略。
2、streamlit显示orders, trades,并检查结果。
3、参考alphalens,引入单因子分析框架。
大家不必着急,按星球惯例,咱们是每周至少迭代一次,最晚明天更新代码。Quantlab3.3是值得期待的,全新架构与思路。
今天第一个任务是择时策略里,需要使用到talib的布林带:
def bbands_up(close, timeperiod=20, nbdevup=2, nbdevdn=2):
upper_band, middle_band, lower_band = talib.BBANDS(close, timeperiod=timeperiod, nbdevup=nbdevup, nbdevdn=nbdevdn)
return upper_band
def bbands_down(close, timeperiod=20, nbdevup=2, nbdevdn=2):
upper_band, middle_band, lower_band = talib.BBANDS(close, timeperiod=timeperiod, nbdevup=nbdevup, nbdevdn=nbdevdn)
return lower_band
使用咱们的策略模板,也非常简单:
def PickTime_bbands(): task = TaskPickTime() task.name = '择时策略-创业板-布林带' task.benchmark = '159915.SZ' task.symbols = ["159915.SZ"] task.features = ["bbands_up(close,20,2)","bbands_down(close,20,2)"] task.feature_names = ["bbands_up","bbands_down"] task.rules_buy = ['close>bbands_up'] task.rules_sell = ["close<bbands_down"] return task
运行结果如下:
年化12.8%,回撤20%+,比基准还是好不少。
今天第2项工作把交易详情打印出来:
今天的第3项工作——单因子分析框架:
传统量化主要基于规则,规则策略的优化空间就是——超参数优化,这个咱们后面会专项支持。当然机器学习模型驱动也需要超参数优化,这是通用的功能。
而AI量化的基础是——因子。
所以,我们开始建立因子分析框架。
Alphalens是比较成熟,当然现在已经年久失修的框架。
代码在datafeed/alphalens里:
之前咱们也写过alphalens相关的文章:
elif choose == "单因子分析": from config import DATA_DIR instru = DATA_DIR.joinpath('instruments') import os files = os.listdir(instru.resolve()) filename = st.selectbox('请选择投资标的集合:', options=files) with open(instru.joinpath(filename).resolve(), 'r') as f: symbols = f.readlines() symbols = [s.replace('\n','') for s in symbols] st.write(symbols) factor_expr = st.text_input('请输入因子表达式', value='slope(close,20)') if st.button('加载数据并计算因子值'): from datafeed import CSVDataloader loader = CSVDataloader(DATA_DIR.joinpath('etfs'), symbols) df = loader.load(fields=[factor_expr], names=['factor_name']) factor_df = df[['symbol', 'factor_name']] factor_df.set_index([factor_df.index, 'symbol'], inplace=True) close_df = df.pivot_table(values='close', index='date', columns='symbol') st.write(factor_df) st.write(close_df) from datafeed.alphalens.utils import get_clean_factor_and_forward_returns results = get_clean_factor_and_forward_returns(factor_df, close_df) st.write(results) from datafeed.alphalens.streamit_tears import create_full_tear_sheet create_full_tear_sheet(results)
加载因子值,和收盘价:
代码在最后检查中,最晚明天提交至星球。
择时策略:年化19.7%,回测18.8%——创业板指数动量择时策略(最优超参数是如何优化的)。
还有3位同学加入后就涨价了。
【就要提价了,进度93%】AI量化实验室——2024量化投资的星辰大海
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103568
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!