数据库为:mongodb

数据获取包为:tushare(但是获取市净率需要300积分,学生认证后可送1500积分)

没有积分可引入聚宽,米筐等一系列量化平台的接口

代码为:

df = ts.get_hist_data('hs300',start="2017-11-21",end='2017-12-23')      #2017-10-25     2020-4-24
df=df.sort_index()
allmoney=[]
sub=pd.DataFrame()
monlist=[10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,]      #选15只股,每只股1W元
da=get_trade_days(start_date="2017-11-21",end_date='2017-12-23')code = []
conn = pymongo.MongoClient()
tdb = conn.platform
post_info = tdb.strategy                                   #连接数据库
#获取每天策略的收益情况
for i in range(len(da)):print(i)t=0if i==0:                      #第一天直接买股pb = get_fundamentals(query(valuation.code, valuation.pb_ratio).filter(valuation.pb_ratio > 0,).order_by(valuation.pb_ratio.asc()),date = da[i])code=list(pb['code'][:15])for j in code:s=j[:6]hs=ts.get_hist_data(code=s, start=str(da[i]), end=str(da[i]))hs['buy']=monlist[t]/hs['open'][0]hs['code']=shs['monnum']=ths['state']="have"t=t+1sub = sub.append(hs)allmoney.append(sum(monlist))print(sub)post_info.insert_many(json.loads(sub.to_json(orient='records')))else:                  #非第一天进行买卖操作summon=0buynum=[]numb =[]pb = get_fundamentals(query(valuation.code, valuation.pb_ratio).filter(valuation.pb_ratio > 0,).order_by(valuation.pb_ratio.asc()), date=da[i])codesub = list(pb['code'][:15])buycode=Jundgebuy(code,codesub)sellcode=Jundgesell(code,codesub)print(sellcode)code=codesubfor j in sellcode:          #卖股票s = j[:6]cursor = post_info.find({"code": s,"state":"have"})sj=pd.DataFrame(list(cursor))post_info.update_many({'code': s}, {'$set': { 'state': "no"}})hs = ts.get_hist_data(code=s, start=str(da[i]), end=str(da[i]))summon=summon+list(hs['open'])[0]*list(sj['buy'])[0]numb=list(sj['monnum'])[0]monlist[numb]=list(hs['open'])[0]*list(sj['buy'])[0]for j in buycode:      #买股票s = j[:6]hs = ts.get_hist_data(code=s, start=str(da[i]), end=str(da[i]))hs['buy'] = summon/len(buycode) / hs['open'][0]hs['code'] = shs['monnum'] = ths['state'] = "have"hp=hs.to_json(orient='records')post_info.insert_one(json.loads(hp[1:-1]))cursor = post_info.find({ "state": "have"})sj = pd.DataFrame(list(cursor))ncode=sj['code']nbuy=sj['buy']nsum=0for j in range(15):               #计算每只股票的收盘价总金额hs = ts.get_hist_data(code=ncode[j], start=str(da[i]),end=str(da[i]))nsum=nsum+nbuy[j]*hs['close'][0]allmoney.append(nsum)print(nsum)
conn.close()
allmoney=[i /36 for i in allmoney]
df['strategy']=allmoneydf[['close', 'open','strategy']].plot(figsize=(15, 8), grid=True)             以所获金额按比例和hs300比较
plt.show()
print(df['strategy'])

图的结果为:

在本地写一个以市净率为因子的回测结果相关推荐

  1. 【76 backtrader可转债策略】一个基础的可转债交易策略回测(供参考的可转债回测模板)

    这个可转债的策略并不复杂,由于是交易在1分钟上,所以交易特别频繁,对交易手续费特别敏感,如果不考虑手续费,曲线特别好,考虑过手续费(万分之二)之后,亏的很惨.如果在这种频繁交易的话,需要考虑和券商协商 ...

  2. 自己动手写一个印钞机 第四章

    2019独角兽企业重金招聘Python工程师标准>>> 作者:阿布? 未经本人允许禁止转载 ipython notebook git版本 目录章节地址: 自己动手写一个印钞机 第一章 ...

  3. 量化交易 米筐 单因子回测框架(因子方向性确定)

    因子方向性确定 当筛选出部分因子后,其实我们还要去观察它在回测过程中真实的收益率情况, 所以需要建立每个因子的回测框架,主要对不同分位上的股票进行统计. 也就是 以下图: 代码 # 可以自己impor ...

  4. 使用java开发一个股票交易及量化投资回测分析系统

    经过近两年的研究和学习,我使用java开发(也使用了部分python,数据源:聚宽)出了一个股票交易及量化投资回测分析系统,将于近期陆续推出系列文章,向大家介绍一下整个开发过程,当整个系列文章都完成后 ...

  5. ds查找—二叉树平衡因子_面试官让我手写一个平衡二叉树,我当时就笑了

    平衡二叉树对于初学者一直是一个比较复杂的知识点,因为其里面涉及到了大量的旋转操作.把大量的同学都给转晕了.这篇文章最主要的特点就是通过动画的形式演示.确保大家都能看懂.最后是手写一个平衡二叉树. 一. ...

  6. VUE写一个本地教室管理系统

    VUE写一个本地教室管理系统 实现效果 主体 模态框 Vue JS主体 Vue实现删除功能 splice语法 Vue实现添加功能 push()语法 Vue实现修改功能 源码 实现效果 点击添加按钮后, ...

  7. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫

    导语 前几篇文章介绍了爬取静态网站的主要方法.今天写一个小项目实践一下.本项目可以在终端窗口查询全国3400多个区县的当日天气信息和近七天天气信息. 实现效果 [Python爬虫]写一个爬取中国天气网 ...

  8. 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)

    首先需要用Navicat Premium创建一个student表 用Java连接好MySQL数据库(需要copy一个mysql-connector-java-5.1.44-bin.jar包,该包可在网 ...

  9. 利用Flutter写一个跨平台的果核APP(4)——数据存储

    前言 目前我们已经实现了几个界面,今天这篇文章开始着手进行登录页的制作,主要流程就是获取输入框中的内容,发送给后台进行验证,如果成功将返回信息保存在本地并跳转至首页,如果失败就提示用户重新输入. 在这 ...

最新文章

  1. 加油站会员管理系统源码php_分享一下:关于一对一直播源码的重要组成部分
  2. Linux给用户添加sudo权限
  3. Android自定义控件(四)仿网易客户端上拉加载更多
  4. Android文件存储方式之openFileOutput与获取数据openFileInput
  5. scanf sscanf 的用法
  6. .jardesc文件
  7. Cocos2d-x 3 X CMake MinGW版本编译运行
  8. 值对于int32太大或太小怎么解决_数控车床加工螺纹时常见故障及解决方法
  9. 状态空间模型中实际参数估计
  10. Python练习:求100以内的素数和
  11. linux的启动流程和加载程序
  12. paper 63 :函数比较:imfilter与fspecial
  13. Python三种设计模式
  14. 【计算机网络】谢希仁笔记 数据链路层
  15. axure rp9安装教程,axurerp9安装步骤
  16. 【Android ROM定制】CyanogenMod源码下载和编译
  17. 推荐一些 iOSer 创办的硬核公众号
  18. 笔记 - chalk 使用
  19. Android幸运大转盘
  20. js中类似`${xx,xxxy}`的语句

热门文章

  1. Integration using Feynman technique
  2. 四、LockSupport与线程中断
  3. ssr pac_全新回馈丨购金币三日礼,获取主线SSR羁绊
  4. Windows引导过程(BIOS,UEFI)
  5. 中国微量营养素市场趋势报告、技术动态创新及市场预测
  6. 因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?Link ID=135170 中的 about_Execution_Policies
  7. [侯捷]C++ STL 体系结构与内核分析--从平地到万丈高楼(数据结构)
  8. ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...
  9. ODrive应用 #3 odrive_gui入门指南
  10. iOS报错:108 duplicate symbols for architecture arm64