昨天我们分享了调研,并确定了星球下一步的工作重点:
CTA+指增多因子策略为主,收益10-15%,夏普2+(私募团队调研分享),建立科学的因子挖掘”流水线“是咱们实验室后续重点
因子挖掘的流水线,一定是量化投资的未来。
分解下来,
一是数据,最常用的量价数据,无论是高频还是日频,对于我们处理没什么影响。
二是挖掘流程。gplearn或者深度强化学习,这也是通过框架。
三、扩展函数集,这个是可以积累的,比如ts_rank,甚至各种技术指标。
四、因子合成:加权,线性,或者树模型,深度学习。
五、回测,止损,投资体系。
六、实盘对接
后续我们会围绕这些主题,持续完善咱们的quantlab。按星球惯例,预计明天统计更新迭代后的代码。【星球优惠券】AI量化实验室——量化投资的星辰大海
从上面的路线图来,回测系统只占其中一小部分,新手一般认为这基本就是全部。其实不是。
市场上开源的量化回测系统很多,而且你自己实现一个简单的也超级容易,星球里有好几个版本。另外,回测到实盘,或者说,所谓“无缝切换”,其实不是什么大问题,broker,获取数据的方式,本身就不一样,只是少一点代码罢了,不必为了兼容实盘而兼容。实盘系统本身比回测更简单。
我一直在考虑回测系统,希望功能要够,足够简单,这样我们才能专注在策略和因子上,而不是与框架“做斗争”。
回测系统按运行方式有三类:向量化,时间驱动,事件驱动。
一般现在市面上主流是时间驱动,就是按bar来循环。真正的事件驱动pyalgotrade显得有点多余。这个好处是与实盘的运行机制一样,vnpy早看也是,后来改成时间驱动,因为调试起来更加容易。
按如上规划:回测系统够用即可,重点策略,核心是因子。
数据自动更新之类的,也不在回测系统范围内,自行加载CSV即可。
下载期货主连合约数据:
import akshare as ak from datetime import datetime import pandas as pd ''' 0 V0 dce PVC连续 1 P0 dce 棕榈油连续 2 B0 dce 豆二连续 3 M0 dce 豆粕连续 4 I0 dce 铁矿石连续 5 JD0 dce 鸡蛋连续 6 L0 dce 塑料连续 7 PP0 dce 聚丙烯连续 8 FB0 dce 纤维板连续 9 BB0 dce 胶合板连续 10 Y0 dce 豆油连续 11 C0 dce 玉米连续 12 A0 dce 豆一连续 13 J0 dce 焦炭连续 14 JM0 dce 焦煤连续 15 CS0 dce 淀粉连续 16 EG0 dce 乙二醇连续 17 RR0 dce 粳米连续 18 EB0 dce 苯乙烯连续 19 LH0 dce 生猪连续 20 TA0 czce PTA连续 21 OI0 czce 菜油连续 22 RS0 czce 菜籽连续 23 RM0 czce 菜粕连续 24 ZC0 czce 动力煤连续 25 WH0 czce 强麦连续 26 JR0 czce 粳稻连续 27 SR0 czce 白糖连续 28 CF0 czce 棉花连续 29 RI0 czce 早籼稻连续 30 MA0 czce 甲醇连续 31 FG0 czce 玻璃连续 32 LR0 czce 晚籼稻连续 33 SF0 czce 硅铁连续 34 SM0 czce 锰硅连续 35 CY0 czce 棉纱连续 36 AP0 czce 苹果连续 37 CJ0 czce 红枣连续 38 UR0 czce 尿素连续 39 SA0 czce 纯碱连续 40 PF0 czce 短纤连续 41 PK0 czce 花生连续 42 FU0 shfe 燃料油连续 43 SC0 ine 上海原油连续 44 AL0 shfe 铝连续 45 RU0 shfe 天然橡胶连续 46 ZN0 shfe 沪锌连续 47 CU0 shfe 铜连续 48 AU0 shfe 黄金连续 49 RB0 shfe 螺纹钢连续 50 WR0 shfe 线材连续 51 PB0 shfe 铅连续 52 AG0 shfe 白银连续 53 BU0 shfe 沥青连续 54 HC0 shfe 热轧卷板连续 55 SN0 shfe 锡连续 56 NI0 shfe 镍连续 57 SP0 shfe 纸浆连续 58 NR0 ine 20号胶连续 59 SS0 shfe 不锈钢连续 60 LU0 ine 低硫燃料油连续 61 BC0 ine 国际铜连续 62 IF0 cffex 沪深300指数期货连续 63 TF0 cffex 5年期国债期货连续 64 IH0 cffex 上证50指数期货连续 65 IC0 cffex 中证500指数期货连续 66 TS0 cffex 2年期国债期货连续 ''' symbol = 'V0' df = ak.futures_main_sina(symbol="V0", start_date="19900101", end_date=datetime.now().strftime('%Y%m%d')) print(df) df.rename(columns={'日期':'date','开盘价':'open', '最高价':'high', '最低价':'low','收盘价':'close', '成交量':'volume','持仓量':'open_interest','动态结算价':'vwap'}, inplace=True) from config import DATA_DIR df.to_csv(DATA_DIR.joinpath(symbol+'.csv'),index=None)
数据格式已经处理好了。
新增CSVLoader:
from config import DATA_DIR_CACHE_H5, DATA_DIR import os class CSVDataloader(Dataloader): def __init__(self, path:WindowsPath, symbols, start_date='20100101', end_date=datetime.now().strftime('%Y%m%d')): super(CSVDataloader, self).__init__(path, symbols, start_date, end_date) def _load_dfs(self): dfs = [] csvs = os.listdir(self.path.resolve()) for csv in csvs: df = pd.read_csv(self.path.joinpath(csv).resolve(), index_col=None) df.set_index('date', inplace=True) dfs.append(df) return dfs
因子通过表达式计算:
gplearn也是整合到这里,信号计算之后,进行回测。
代码和数据请前往星球下载:
吾日三省吾身
昨天与一位大模型公司CEO吃饭,兄弟是前知名上市公司CTO,早就财富自由。现在是为了理想而战,
这是最佳的工作状态,不必畏首畏尾,纯粹为兴趣而战,享受过程中的快乐与心流状态。
当然,谁都有需要焦虑的事情。
比如,我们聊起的主题,孩子上初中了,教育分流的事情。
我们都是高考受益的一代人,对于好大学和学历是有执念的。
但孩子学习这个事情吧,未必都可以强求。
大家会说,未来的事,谁知道呢。尽管我们劝别人都说“儿孙自有儿孙福”,但时代的一粒沙,落在个人身上就是一座山。
记得20年前,刚出校园时,大家聊起北京户口。很多朋友说,户口的作用也就是孩子读书,20年后,没准不需要了呢,或者你把孩子送出国了呢?
20年过去了,似乎更重要的。能送出国的家庭寥寥。很多朋友陷入孩子一上初中,不得不将孩子送回老家上学的困境。
未来是不可预知的。
谁知道会发生什么?
不必去焦虑未来,但要充分做好准备。
比如多读书,书中有几乎一切问题的答案和解决方案。
专注自己的成长,但行好事,莫问前程。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103594
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!