本文中的例子来自于优矿的新用户引导中提供的代码;

记录在优矿这个平台一下学习的回测和取数据用到的基本方法

首先第一个策略是新用户引导里面给的,大概干了这么一件事:

  1. 回测2017-01-01到2018-01-01这段时间的数据
  2. 在沪深300这个池子里的所有股票中,每天去找市盈率PE最低的100只股票,每天买10000股(100手)
  3. 如果当天仓里有某一只之前买入的股票不在当天PE最低的100只股票里了,就把这只股票卖出,保证随时仓里都有100只股票(除非钱不够了),而且这100只一定是当天PE最低的100只
  4. 回测使用天级别,即一天只交易一次

代码的理解分析都写在注释里了


# 先会初始化一些回测用到的参数,这里参数名应该是预定义好的, 有一些有初始值,比如start,end什么的不设也可以;
# 这里的benchmark就是最后回测结果里的基准值,如果把这个值设置为上证综合指数,那就能知道自己有没有跑赢大盘,具体成绩怎么样了。
# 上证综指的secid是000001.ZICN,这里取的是沪深300作为基准,但是这里不知道为啥是HS300,这个代码我没找到在哪儿
# 所有的板块指数在这里可以找到 https://uqer.datayes.com/help/appendixIndex/#%E6%9D%BF%E5%9D%97%E6%8C%87%E6%95%B0%E5%88%97%E8%A1%A8
start = '2017-01-01'                       # 回测起始时间
end = '2018-01-01'                         # 回测结束时间
universe = DynamicUniverse('HS300')        # 证券池,支持股票、基金、期货、指数四种资产
benchmark = 'HS300'                        # 策略参考标准
freq = 'd'                                 # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
refresh_rate = 1                           # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟# 配置账户信息,支持多资产多账户
# 这里的account_type支持四种类型:'security'股票和场内基金、 'futures'期货、'otc_fund'场外基金(不含货币基金), 'index'指数 。
# 这部分其他参数在这里 https://uqer.datayes.com/help/faq#AccountConfig%E8%B4%A6%E6%88%B7%E9%85%8D%E7%BD%AE
accounts = {'fantasy_account': AccountConfig(account_type='security', capital_base=10000000)
}# 这个初始化应该全局只会调用一次
def initialize(context):pass# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context):    # 先拿到前一天的时间previous_date = context.previous_date.strftime('%Y-%m-%d')# 获取因子PE的的历史数据集,截止到前一个交易日# 这里先用history这个方法去查股票的历史数据# 这个hitory的入参有:# symbol表示需要查询的股票,可以是一个list,这里传的是一个universe,应该本质也是一个list,这里一定要是上面初始化的时候定义的universe中存在的股票# attribute表示你要查询股票数据的哪一个参数,这里选的PE,市盈率(Price Earnings Ratio),这个PE差不多就等于公司股票价格除以公司盈利的钱;# 所有可以选择的因子在这里 https://uqer.datayes.com/help/appendixFactors/# time_range这个参数要和freq一起用,freq表示单位,可以设置1d,1m,5m,30m这些,然后time_range就表示你要获取多少个freq的数据,这里freq没设,估计默认是1d,不确定# style这个表示输出的格式,s=symbol, t=time, a=attribution,不同的组合输出的格式会变,例如ast就表示返回的字典中的键是attribute,其值是列为symbol、行为time的DataFrame,其他以此类推。# 然后这里是按tas排序的,就是key为时间,所以这里[previous_date]取了前一天的数据,得到的就是一个二维as维度的表格hist = context.history(symbol=context.get_universe(exclude_halt=True), attribute='PE', time_range=1,freq="1d", style='tas')[previous_date]# 将因子值从小到大排序,并取PE最小的100支股票作为目标持仓signal = hist['PE'].order(ascending=True)# 因为这里是一个as维度的表格,所以取index实际上就是取的s这个维度,就是取股票的代码target_position = signal[:100].index# 获取当前账户信息account = context.get_account('fantasy_account')   # 这个get_positions是获得当前账户持仓的所有股票listcurrent_position = account.get_positions(exclude_halt=True)       # 卖出当前持有,但目标持仓没有的部分for stock in set(current_position).difference(target_position):# 这个order_to,入参第一个是要卖的股票,第二个参数是要卖到还剩多少股# 这里的策略是要卖就一次性全卖完,所以就是卖到还剩0股account.order_to(stock, 0)# 根据目标持仓权重,逐一委托下单for stock in target_position:# 这里的order方法,入参第一个是要买的股票,第二个参数是要买多少股account.order(stock, 10000)pass;

【优矿学习】分析新用户引导的代码相关推荐

  1. 互联网金融投放获客优化的讨论(新用户引导流程)

    众所周知,互联网金融行业获客成本非常之高,如何用一个完善流畅的新手引导承接住花钱购买来的流量,是比较值得关注的一个问题.最近整理了一些思路,希望能够讨论一下这个问题,请大家多多指教. 我们把整个投放获 ...

  2. vue点击切换类名_vue 新用户引导(vue-dirver)

    最近公司经理让我在项目上做一个新用户引导,讲真这玩意我只在APP上看见过,网页上没啥功能啊,还需要引导! 没办法,刚它!!! 在网上查了点资料 Vue 基本上都是 intro.js 和 driver. ...

  3. Vue 页面引导效果(首次登录新用户引导) driver.js 引导页

    轻量级.无依赖的原生 JavaScript 引擎,可将用户的注意力集中在整个页面上:这是一个功能强大且高度可定制的基于原生JavaScript开发的新用户引导库. 简介及使用教程 Driver.js是 ...

  4. 每天记录学习的新知识:开源代码是否可以商用在项目中?

    开源代码是否可以商用? 是否可以商用? 如何查看许可证是哪个? 什么是 Apache License 2.0 ? 如何使用开源代码? 1.根路径添加 LICENSE 文件 2.根路径添加 NOTICE ...

  5. 腾讯与新浪微博是如何引导新用户的?

    一个新网站对于用户的引导是十分重要的,好的引导流程可以加快网站在用户心中的知名度与品牌建设,比如本文举例的国内两大微博:腾讯与新浪.目前依然还是有大量的新用户加入进来,通过他们各自的引导用户方式我们可 ...

  6. 网站运营活跃用户、流失用户、流失率、新用户流失率定义以及诠释

           核心提示:本文简单介绍了活跃用户数.流失用户数.流失率.新用户流失率这几个概念.当然,比较大型的网站还会有许多细分数据:普通用户.活跃用户.优质用户.普通用户流失率.活跃用户流失率.优质 ...

  7. wordpress默认密码_如何在WordPress中为新用户设置默认管理员配色方案

    wordpress默认密码 One of the most talked about feature of WordPress 3.8 is the new admin interface. It i ...

  8. 通过亚马逊云新用户入门学习计划快速上手云上无服务器化的MySQL数据库

    前言 之前一直使用云服务器一直都是使用实例来使用MySQL数据库,因为刚好又能学习Linux的知识,但是通过购买实例服务来充当数据库,不仅资源不能得到充分应用,也会有操作麻烦容易出这样那样的问题. 今 ...

  9. 用超算平台跑深度学习模型【新用户赠送200元体验金】

    文章目录 前言 一.北鲲云-一站式云超算平台介绍 二.如何领取 总结 前言   最近在训练YOLO模型,奈何自己的笔记本跑不起来,通过朋友介绍,才了解到北鲲云--一站式超算平台,跑深度模型真的很nic ...

最新文章

  1. VLC RTP Over TCP
  2. Oracle去除表中重复记录
  3. pandas:数据类型的转换
  4. java定义json数组_Java面试题:json该如何定义?json与xml的区别有哪些?
  5. YBTOJ危桥通行洛谷P3163:危桥通行(网络流)
  6. centos7.4 安装配置rabbitmq-server 实操记录
  7. symantec linux版命令,symantec backup exec 2010 linux客户端的配置
  8. Java中解密微信加密数据工具类
  9. javascript有声调的汉字注音字典(兼容各浏览器)
  10. MySQL,从删库到跑路
  11. python实现爬虫统计学校BBS男女比例(三)数据处理
  12. OA系统资产管理借力工作流,覆盖从采购申请-报废的全过程
  13. toad连接数据库时报错 cannot load OCI DLL
  14. Vue简单入门及使用(二)---基本语法及组件使用
  15. 翻译考试用计算机作答,法语考试:全国翻译专业资格(水平)考试(CATTI)介绍
  16. vite2 antD 动态切换主题
  17. 软件构造Lab2总结
  18. 浅谈DelayQueue
  19. Object Oriented Programming面向对象编程
  20. linux 文件权限 rwt,Linux文件权限

热门文章

  1. 轻量化的分布式服务框架 Hasor-RSF 盘点
  2. yolov5检测框显示中文标签
  3. 对象存储 S3 在分布式文件系统中的应用
  4. areaCode_raw.txt
  5. java程序员的必用的9款开发工具
  6. 《Python零基础快乐学习之旅》学习笔记13——模块的设计与应用
  7. 《关于费尔巴哈的提纲》读书笔记
  8. 【计算机原理与技术】[笔记]第2章 计算机的发展及应用
  9. 利用 Kubeadm部署 Kubernetes 1.13.1 集群实践录
  10. 2012国内移动App开发者大调查结果:在哪里能赚钱