今天继续,这是平台化的第4篇文章,主要是场内基金的选择。当然需要对场内基金做一些分类,方便大家挑选。
初步实现的效果如下:
界面逻辑基本成型,主体流程走通,当然后续最复杂的是“交易规则配置”,当然这也是“低代码”开发策略之核心。
倒不是技术上的难点,而是体验上如何做到门槛更低,但又要确保功能强大和扩展性。
# symbol, name, list_date, type:指数,ETF,LOF, 期货,转债, tags:多选:热门,宽基,QDII import json import pandas as pd from quant import mongo_utils def build_etfs(): df = pd.read_csv('etfs.csv') def get_type(name): if 'LOF' in name: return 'LOF' return 'ETF' df.rename(columns={'ts_code': 'symbol'}, inplace=True) df = df[['symbol', 'name', 'list_date', 'benchmark']] df['type'] = df['name'].apply(lambda name: get_type(name)) print(df) df['_id'] = df['symbol'] mongo_utils.write_df('basic', df, drop_tb_if_exist=True) if __name__ == '__main__': build_etfs()
习惯后端开发,多年没有写过js了,一直觉得这个东西不好调试,每次总想绕开它,之前试过streamlit, nicegui等等,但要变成真正的b/s结构的东西,整合起来怪怪的。
然后再寄希望于vue这样的前端工程化,数据驱动来解决问题。但引入npm, axios之类的反而更重。
还是之前说的那句话,两条路不知走哪一条——走难的那条。
其实jquery, bootstrap, 一些控件交互和操作,并没有那么难。
适应一下就好了。
吾日三省吾身
在大周期,大变局下,普通人为一份工作,能有多卑微?
战战兢兢,如履薄冰?
我们谈财富自由,谈梦想,谈的都在人生上限,想看看人生的潜力到底有多少。
而作为普通人,或者普通中产,在这个大变局下,更多人开始关心下限。
中年失业了怎么办?
越来越长的生命做什么?
我想,最好的办法,就是在还有工作的时候,学会与工作解耦。
去掉平台的加持和身份,你还有什么?
有没有独一无二的价值?
能没有“独立”生产和交付用户价值的能力?
大家知道,原生的GPLearn并不适合挖掘因子,主要存在以下几个问题:
1、gplearn只支持单标的,在CTA策略单标的可以,但单标的下挖掘的因子,很容易过拟合。
2、内置的函数不适合金融量化因子,需要自己扩展。而且原生的扩展,不支持常数项,比如SMA(10),这个10就是常数。
3、原生的fitness是ic和Rank IC,不支持夏普比或者卡玛比率这种。
4、而且网上能用的代码有限,版本鱼龙混杂,不成体系,或者文档不全。
5、传统的因子挖掘方法大多基于遗传规划(Genetic Programming)方法,这类方法具有收敛速度慢、超参数难以调优等局限;
网上的代码都是“暴改”之后的,且没有文档,demo未必能跑通。
我给大家跑通了一份,但是基于qlib的,与DeepAlpha同构,后续以这份代码为蓝本了。
大家直接pip install -r requirements.txt即可(python 3.8)
基于A股的qlib数据也会打包给大家,置于~/.qlib/qlib_data/cn_data_rolling目录下:
1、支持GPLearn, DSO以及强化学习的版本。
2、数据目前的A股全量数据,qlib格式。
3、支持多支股票同时挖掘。
4、支持多因子联合评测。
今天继续开发“低代码策略平台”。
咱们开源的Quantlab和DeepAlpha,尤其是DeepAlpha因子挖掘平台,对于环境的配置是比较高的,很多同学解决不了。
因此,我希望把这此功能平台化,大家可以直接使用。——当然大家希望自己读代码,仍然是可以从星球获得每周迭代升级的版本。
DeepAlpha通用因子挖掘:支持GPlearn遗传算法和深度强化学习挖掘因子(代码+数据下载)
Quantlab3.3代码发布:全新引擎 | 静态花开:年化13.9%,回撤小于15% | lightGBM实现排序学习
咱们平台的框架是Django。
没有使用前后端分离的架构,一是由于SEO等效果不好——老一代程序员,对于静态化和SEO还是有执念的。二是工程化引入的技术栈确实重,且没那么熟。——bootstrap+jquery构用了。bootstrap都只用3。
我们把精力还是花在策略和因子上。
今天的核心工作——通过jquery调用回测api(django+ninjia提供),同步得到回测结果后,动态渲染到网页上,包括回测结果指标和曲线绘图(使用g2.min.js)。
效果还不错,明天加载etf列表,可以手动修改调仓模式等参数,添加回测区间等等细节。
{%extends 'common/base.html'%} {% block main %} <div class="container"> <ol class="breadcrumb"> <li><a href="/">首页</a></li> <li>“零代码”创建AI智能量化策略</li> </ol> <!-- Nav tabs --> <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="active"><a href="#pick" aria-controls="pick" role="tab" data-toggle="tab">选择ETF列表</a></li> <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">规则配置</a></li> <li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">调仓配置</a></li> <li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">高级配置</a></li> </ul> <!-- Tab panes --> <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="pick"> <div class="row" style="padding-top:10px"> <div class="col-md-6"> </div> <div class="col-md-6"> <table class="table table-striped"> <tr> <td>名称</td> <td>代码</td> </tr> <tr> <td>沪深300ETF</td> <td>510300.SH</td> <td><button class="glyphicon glyphicon-remove" aria-hidden="true"></button></td> </tr> </table> </div> </div> <div> </div> <div role="tabpanel" class="tab-pane" id="profile">规则配置</div> <div role="tabpanel" class="tab-pane" id="messages">调仓配置</div> <div role="tabpanel" class="tab-pane" id="settings">高级配置</div> </div> <div> <button class="btn btn-success" id="backtest">策略回测</button> </div> </div> </div> {% endblock %} {%block js%} <script> $(".glyphicon-remove").click(function(){ $(this).closest('tr').remove() }); $('#backtest').click(function(){ console.log('点击回测!') $.post("http://127.0.0.1:8000/api/strategy/run", { "task_id": 7, "start_date": "20100101", "end_date": "" } ); }); </script> {%endblock%}
吾日三省吾身
最近理财类的书,个人成长,心理,幸福的书读得比较多。
还是之前的观点: 理到极致,基本是通识。
道理都是相对有效的,如果数学上的“哥德尔不完备理论”——”自洽必不完全”。
自洽一定是在边界内的自洽,没有所谓放之宇宙皆通用的公理。
哪怕是欧氏几何,那5条公理,比如过直接外一点有且仅有一条直线与已知直线平行。如果没有没有平等线,或者有无数条平等线的情况,就可以导出黎曼几何和罗巴切夫斯基几何。而后者是广义相对论的基础。
每个人的经验都带有他自身成长经历,经验,教训价值观,偏见。
比如有人告诉你有一笔不小的本金后,只要不折腾,尤其不投资,就卖理财;有人说就要投资,复利对抗通胀。
其实,需要理解作者的本意,尤其是他的隐含假设条件,以及客观环境的变化等等。
这就对于个人批判性思维要求非常重要。
如果从海量的信息中,无偏见的,真正获得自己成长需要的信息。
如无必要,勿加实体,保持专注。
搞不清楚哪条路更好,选择难的那一条。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103507
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!