jquery+django+ninjia走通“低代码”AI量化关键一步(代码+数据下载)

今天继续,这是平台化的第4篇文章,主要是场内基金的选择。当然需要对场内基金做一些分类,方便大家挑选。

初步实现的效果如下:

图片

界面逻辑基本成型,主体流程走通,当然后续最复杂的是“交易规则配置”,当然这也是“低代码”开发策略之核心。

倒不是技术上的难点,而是体验上如何做到门槛更低,但又要确保功能强大和扩展性。

图片

# symbol, name, list_date, type:指数,ETFLOF, 期货,转债, 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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

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

相关推荐

发表回复

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