DeepAlphaNet:端对端的因子挖掘与策略构建

目标:建立以因子挖掘为核心的“流水线”策略工厂。

10月目标:gplearn改造,整合,alphanet实现。

系统代码发布V1.7:

图片

代码及数据均可以下载,请同学们更新:

图片

今日todo:

1、完成量化平台发布代码前检查,发布v1.7。

freeze requirements.txt。

select signal去掉做空,weight equally。

2、gpquant/gplearn代码对比。看下如何改造。

3、alphanet端到端的因子挖掘与合成框架代码。

大家更新环境时,使用pip install requirements_freezed.txt,这样就不会有版本问题。

图片

按信号选股,去掉做空逻辑:

class SelectBySignal(Algo):
    def __init__(self, rules_buy=[], buy_at_least_count=1, rules_sell=[], sell_at_least_count=1):
        super(SelectBySignal, self).__init__()
        self.rules_buy = rules_buy
        self.rules_sell = rules_sell

        if buy_at_least_count > len(rules_buy):
            buy_at_least_count = len(rules_buy)
        if buy_at_least_count <= 0:
            buy_at_least_count = 1
        self.buy_at_least_count = buy_at_least_count

        if sell_at_least_count > len(rules_sell):
            sell_at_least_count = len(rules_sell)
        if sell_at_least_count <= 0:
            sell_at_least_count = 1
        self.sell_at_least_count = sell_at_least_count

    def _check_if_matched(self, df_bar, rules, at_least_count):
        se_count = pd.Series(index=df_bar.index, data=0)
        for r in rules:
            se_count += df_bar.eval(r)

        matched_items = se_count[(se_count.values >= at_least_count)].index
        return list(matched_items)

    def __call__(self, target):
        df_bar = target.df_bar
        matched_buy = []
        matched_sell = []
        if self.rules_buy and len(self.rules_buy):
            matched_buy = self._check_if_matched(df_bar, self.rules_buy, self.buy_at_least_count)

        if self.rules_sell and len(self.rules_sell):
            matched_sell = self._check_if_matched(df_bar, self.rules_sell, self.sell_at_least_count)

        holdings = target.get_long_symbols()
        if holdings and len(holdings) > 0:
            matched_buy += holdings

        if matched_sell:
            for sell in matched_sell:
                if sell in matched_buy:
                    matched_buy.remove(sell)

        target.temp['selected'] = matched_buy
        return True

吾日三省吾身

昨天看到一个词叫“去魅”,有意思。

你永远无法评价一个你不曾得到的东西,那是阿Q心态,酸葡萄心理。

人总是在痛苦和无聊之间徘徊。

得不到的痛苦,得到就无聊。

然后寻找更高的目标去痛苦。

儿时,一罐八宝粥或者一听健力宝,就算愿望。

学生时代,几张烧饼,一本故事会或者小小说,就是美好的中午时光。

长大后,你有能力随意安排时,你发现也就那样。

东西还是那些东西,味却不对。

满满当当的超市,找不到一件想吃的东西。

世界那么大,我们想去看看。

被困在写字楼的方寸之间,其实当你走遍世界,你发现不过如此。

旅行就是去一个别人待腻了的地方拍照。

但你只有去了,方能“去魅”。

人生本来就是一场体验,尽最大可能性去体验,深度体验罢了。

当然不必穷举,走遍数十个城市之后,你发现城市其实大同小异。

没有感受风土人情是一种遗憾,人生尽量少留遗憾。

昨天看到一篇文章,批评冯唐,说他高高在上,自己得到的所有,劝年轻人躺平。

也许,到达顶峰的人,确实发现也就那样。

马云说他不需要钱,也是真的。

但是,只有你真的有钱,你才可以这么说。

从长期来看,投资离钱这么近,离数据这么近,信息决策如此重要的领域,AI一定是要主导的。

技术面者首当其冲。

基本面者好一些,但ChatGPT如日中天,时间问题。

因此,我们做长期主义的事情。

另外,有一个根本的问题,我们聊财富自由,背后的基础逻辑是“被动收入”。职业股民是一个比工作还累,还要承担风险,高度紧张的工作。这与自由也没有关系呀,最多算地点自由,但时间不自由。

只要高度自动化,智能化,还是赚钱的模式,才是真正的自由,因此,拥抱AI量化吧。

 

底层引擎替换成了pybroker,为机器学习作准备。

今天说说DeepAlphaNet

图片

AlphaNet的架构如上图:

输入是股票的基础价量数据。

图片

  1. 股票池:全 A 股,剔除 ST、PT 股票,剔除每个截面期下一交易日涨跌停和停牌的股
    票。
  2. 原始数据:未经过特征工程的个股量价信息,对于每只股票,将其
    量价数据拼接成 9*30 的“数据图片”,30 为历史时间天数。
  3. 预测目标:个股 10 天后标准化的收益率;个股 5 天后标准化的收益率。

    未来几周,将逐步复现这这个代码。

    当然这里可以提升的空间还很多,比如提取特征的函数,比如网络的层数等等。

    框架的造型,会考虑keras(tersorflow)dataloader重构与keras入门体验,pytorch,结构化数据我们之前分享过autogluon年化26.8%,夏普1.28,单向做多螺纹钢的期货策略,Autogluon机器自主调参(策略+代码下载)。,当然还是StockRanker(梯度提升排序算法)qlib与深度集成学习实现StockRanker,因子挖掘的gplearngplearn筛选高ic值因子,单因子回测(代码下载)等等。

吾日三省吾身

昨天周例会,会议纪要详见星球里的总结。

提炼几点:

1、量化私募里很多团队是赚钱的。

2、信号,机器学习,端对端学习正在成为主流。

基于经验,天赋也许存在,在不可复制,不可传承,仍然是一份苦差事,且不容易自进化,而对于AI来说,这是基本功。

如同Alphago到AlgoMaster,从学习棋谱到双手互搏,也许投资经验也非刚需。

其实这是真正意义上的跨界,在算法,人工智能领域,这些技术成熟,且可以说算是入门级别的。

但在信息如何值钱的金融投资领域,是如何稀缺。

这会是星球下一个阶段之重心。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103799
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注