
Python
文章平均质量分 62
钱塘小甲子
不懂控制的歌手不是好的投资者,不会TCM的coder不是好的FRM
展开
-
宏观经济指标分析与数据可视化——PMI
PMI是一个很有意思的东西,一般都会认为PMI是一个领先指标。PMI中文名叫做采购经理人指数,听起来有点不知所云,说白了就是一个问卷调查。1、PMI是怎么来的? 我们来假设一个场景。话说在小天才幼儿园里面,老师很关心小朋友的开心程度,于是每个月快到月底的时候都会让小朋友填一个问卷,问卷内容很简单,就是一个判断题: 你这个月比上个月开心吗?请选...原创 2019-11-04 20:40:31 · 4483 阅读 · 0 评论 -
量化投资中常用python代码分析(一)
pandas的IO 量化投资逃不过数据处理,数据处理逃不过数据的读取和存储。一般,最常用的交易数据存储格式是csv,但是csv有一个很大的缺点,就是无论如何,存储起来都是一个文本的格式,例如日期‘2018-01-01’,在csv里面是字符串格式存储,每次read_csv的时候,我们如果希望日期以datatime格式存储的时候,都要用pd.to_datetime()函数来转换一下,显得很麻...原创 2018-05-30 20:33:47 · 23430 阅读 · 7 评论 -
python的一些细节(3)
1.函数的frozen技术from functools import partialdef my_fun(st1,st2,st3,st4): print st1+st2+st3+st4frozen_fun = partial(my_fun,'er')frozen_fun('a','b','c')frozen_fun_2 = partial(my_fun, st4='er')转载 2017-12-02 23:14:18 · 701 阅读 · 0 评论 -
绕过JS写爬虫
最近要把很多数据抓下来先存起来,现有历史数据再说。其中,东方财富网有许多数据,其中有一个是机构调研的数据。 http://data.eastmoney.com/jgdy/tj.html 我们希望抓取的是js生成的表格。 这种带有js的网站抓取其实不是那么简单的,基本分为那么几种方法,一种是观察页面,有的会有json数据,有的有js代码可以解析目标的url;一种是使用渲原创 2018-02-03 20:38:06 · 7590 阅读 · 1 评论 -
python的numba加速
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx 之前笔者写过一个pypy的加速方法,可以参阅笔者之前的文章:http://blog.youkuaiyun.com/qtlyx/article/details/7...原创 2017-11-20 20:41:20 · 13245 阅读 · 5 评论 -
vn.py源码解读(一、环境配置与回测初试)
近来忙于毕业找工作,也不知道能不能继续在量化界混了。周末比较闲,抽空研究了一下vn.py。有人说,为什么学那么多的回测平台呀。其实我个人觉得,做cta的话,两个回测平台还是要的,这样,当你的策略出现和你预计不符,而你有无法在代码逻辑层面找到问题的时候,你就可以用另外一个平台试一下,来看看到底是你的策略本身就不行,还是你的代码有着当前水平无法察觉的问题,甚至,可能回测平台本身存在一个...原创 2017-11-12 21:50:37 · 26939 阅读 · 7 评论 -
Python的诡异陷阱
编程的人,特别是学过c语言,使用过很长时间c的人,都会觉得,python这种语言跟matlab一样,没什么内涵,很easy。一开始也是这么想的,那是慢慢的,越来越觉得,人生苦短,我用python的理念其实不对。python完成一些小制作是很easy的事情,但是真正要成为一种工具,其实还是要考虑很多事情。近期实习的过程中,这种感觉越来越强烈了。 python看起来简单,其实内涵很复原创 2017-07-29 22:40:52 · 2759 阅读 · 0 评论 -
python程序的pypy加速
我们知道,python作为一种几乎是脚本语言的语言,其优点固然有,但是其有一个最大的缺点,就是运行速度没有办法和c,c++,java比。最近在些一些代码的时候也是碰到了这样的问题。具体而言,python想提速度,基本思路是两个,有个就jit技术,在python中比较好用的就是pypy;另外一种就是先分析代码速度瓶颈,然后把性能瓶颈用c或者别的语言写成模块,让python调用。后面一种方法其实也存在原创 2017-09-24 18:54:26 · 9965 阅读 · 1 评论 -
python的三种字符串格式化方法
刚入门python的同学,特别是,没有系统的学习过python,而是学过别的语言,直接上手python的同学,怕是还不是很了解python强大的字符串格式化方法1.最方便的print 'hello %s and %s' % ('df', 'another df')但是,有时候,我们有很多的参数要进行格式化,这个时候,一个一个一一对应就有点麻烦了,于是就有了第二种,字典形式的。上面那种是原创 2017-08-11 20:29:56 · 20632 阅读 · 1 评论 -
python中logger日志模块的使用
一般,我们做一些简单的状态输出都会用print,但是这是最简单的情况下使用的工具。当我们的程序比较复杂的时候,我们会使用日志文件,特别是程序运行的时间特别久,中间可能存在一些问题,需要后面来看的时候。 所以,python自带了一个很有用的库,logger,也就是日志记录。 使用起来还是很方便的。#!/usr/bin/env python# -*- codi原创 2017-07-24 20:39:11 · 9312 阅读 · 0 评论 -
reportlab教程1--第一个pdf生成
实际生活工作中,我们会希望有些报告、图表可以自动生成,然后变成pdf,甚至直接发邮件到某个制定邮箱lib。这个时候有几种方式可以来实现,譬如用latex,但是这个似乎还要在电脑上装很多东西。还有一个pdfkit的东西,直接把html转成pdf,不过也要装一个插件。虽然实现起来可能pdfkit更简单,但是从功能角度来讲,似乎是report更加强,而且文档也丰富。1.第一个reportlib的de原创 2017-07-09 21:05:45 · 10149 阅读 · 2 评论 -
“房间里有100个人,每人都有100元钱,每轮每人要拿一元钱随机给另一个人”最后分布的python结果
下午看到了这个问题,一开始直觉当然是觉得每个人的期望都是一样的,大家都是公平的,最后肯定是差不多。这就是直觉,而在统计学和随机过程的世界里,直觉往往是错误的。我们用python仿真一下这个过程。# coding:utf-8# 房间里有100个人,每人都有100元钱,他们在玩一个游戏。# 每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的?impor原创 2017-07-30 17:05:48 · 9956 阅读 · 0 评论 -
python的一些细节(3)
1.python逻辑判断式的连续判断x = 2if 3 > x > 1: print xif 1 0: print x2.list转dict,其实是字典的推导式teams = ["Packers", "49ers", "Ravens", "Patriots"]print {key: value for key, value in enumerate(teams)原创 2017-07-29 23:55:38 · 595 阅读 · 0 评论 -
各种各样的图
import numpy as npimport matplotlib.pyplot as pltimport seaborn as snsx = np.random.normal(size=100)sns.distplot(x, kde=False, rug=True)plt.show()有时候,我们想画某一种图,于是就现学现卖。这里,笔者就做一个收集,使用python的matpl原创 2017-06-04 17:35:54 · 1832 阅读 · 0 评论 -
pdfminer将pdf转为csv
之前随便做了一下中金所杯的金融知识大赛的试题,低分飘过。看到复试名单,突然有一个想法,这个是pdf,万一有人想分析一下每个区域的人的分布,那怎么办。pdf文件大概是这样的。用的python库是pdfminer,这个库说实话还是有点复杂的,具体使用的时候,还是慢慢调试,print看看能够出来些什么,明白了规律之后再处理。本文作为一个记录。#!/usr/bin/python#-*原创 2017-06-02 17:08:39 · 2502 阅读 · 0 评论 -
python性能优化(1)
为什么要分析性能:运行速度如何?性能瓶颈在哪里?有什么改进方案?linux当中的time命令,real与user+sys的比值反映了程序是重IO还是重计算。如果两者很接近,比值几乎为1,那么就是重计算。原生调用与递归调用少造轮子,有的库是在c level实现的,比自己写快长用join,短用+cpython与cython不同还有pypy,使用了JIT技术,原创 2017-06-16 20:48:28 · 925 阅读 · 0 评论 -
PyQt利用百度API绘制行车路径
实验室师弟要做这个课题,所以写个demo作为参考。任务不太难,基本要求就是能够在Qt界面上根据车辆的起始经纬度,绘制出实际地图上的行车轨迹。1.构建Qwebview控件。首先,我们qt的界面中插入QWebView控件。这个控件十分傻瓜,大家任务他就是一个浏览器就可以了。这个控件有一个最核心的方法,就是load,相当于我们往一个浏览器中输入网址,然后回车。2.获取百度API原创 2017-05-18 10:12:41 · 2774 阅读 · 1 评论 -
Cython入门到放弃(一)
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx python作为一门强大的脚本语言,优势自然不必说,目前中低频的量化投资基本都是使用python作为research和production作为语...原创 2018-06-07 21:16:53 · 43090 阅读 · 14 评论 -
Backtrader入门视频教程
本人录制的backtrader视频课程,大家多多支持哦~https://edu.youkuaiyun.com/course/detail/9040原创 2018-08-16 19:31:48 · 3021 阅读 · 2 评论 -
pyecharts绘制文字云
pyecharts居然改版了,升级了一下,文字云的代码也和以前不一样了:#coding=utf-8from pyecharts.charts import WordCloudname = [ '行业研究', '市场风格', '流动性跟踪', '资金风格', '基金持仓', '上下游比较', '宏观数据', '中观数据', '微观数据', '行业比较', '资产配置',...原创 2019-09-13 21:14:22 · 976 阅读 · 0 评论 -
reportlab教程2--中文的显示
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx很多时候,我们想实现自动化报表,但是一般都会需要用中文,而reportlab天然是不支持中文的,所以我们需要让他支持,而办法其实很简单。1、下载字体比...原创 2019-08-15 19:47:20 · 7332 阅读 · 0 评论 -
pyqt中QTableWidget里的下拉列表
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx有时候我们希望在QTableWidget的单元格中进行下拉列表的选择,就像excel里面这样。那么怎么设置呢?怎么实现读和写呢?特别是在pyqt中,在c++中,网上...原创 2019-07-22 20:49:02 · 7018 阅读 · 2 评论 -
pyqtgraph嵌入pyqt
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx最近做了个东西,又开始用pyqt了,想想之前用这个,都已经好几年了。pyqt当中画图是很麻烦的事情,matplotlib据说刷新很麻烦?反正pyqtgraph和...原创 2019-07-22 20:17:49 · 4635 阅读 · 5 评论 -
Backtrader量化平台教程-作者的一篇博客(十一)
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx Backtrader的作者在他的博客上写了一篇很有意思的文章。这个哥们从csdn上面找了backtrader的代码,然后改写...原创 2019-05-22 21:33:55 · 13303 阅读 · 2 评论 -
vn.py源码解读(九、策略类代码解析)
说到这个最重要的类了。这个类说白了就是策略的实现。和绝大部分回测框架一样,策略想法是一个类的抽象,一般会继承一个基础类模板,每一个真实运行的策略就是这个策略想法类的一个实例。好的,有点绕。我们来看代码吧。 在vn.py中,每一个策略类开始不出意外都是下面这样的:1、类的定义和类变量class TRStrategy(CtaTemplate): """学习版...原创 2019-04-05 19:01:59 · 6813 阅读 · 2 评论 -
pyfolio教程3——create_interesting_times_tear_sheet
我们有时候对一些时间段特别的关注,比如911、互联网泡沫、外星人入侵什么的。在pyfolio中,有一个interesting times tear sheet,其实就是把某些特殊的时间段放大了给大家看看。 至于特殊时间段的定义: 在pyfolio的这个文件夹下面,有一个这个py文件,在里面进行设置就可以了:# Dotcom bubblePERIO...原创 2019-03-25 19:45:48 · 1710 阅读 · 1 评论 -
pyfolio教程2——第一个returns_tear_sheet
首先,说明一下我们的数据,为了一步一步的明确pyfolio的功能和一些结果,我们首先选取我们的策略是0.3的中证500指数、0.3的中证1000指数和0.4的上证50指数,也就是我们的组合的收益就是这三个指数的加权收益。换句话说,我们是把这三个指数当成了三个资产。benchmark是沪深300,后续有需要的时候,回依次加入其它的东西。 我们先来看一下我的retur...原创 2019-03-22 22:12:42 · 6322 阅读 · 2 评论 -
同比日期的获取(公历与农历)
在进行宏观数据和中观数据研究分析分的时候,经常会用到同比的概念。宏观数据一般都是月度的,所以一般一二月份由于春节效应,会合起来考虑;但是中观数据的频率有时候会比较高,比如周度或者旬度的数据。 这些数据更多的时候,我们希望看到的是一个同比的情况,而且是农历同比,比如钢铁的库存、水泥的产量、建材的成交量等等,所以就涉及计算去年同比的一个问题了。下面的代码就是在当前的有数据的时...原创 2019-03-13 19:25:17 · 3170 阅读 · 0 评论 -
tick数据研究
经常听见tick数据,回测的时候也用过,但是还真的没有自己去处理过tick数据,据说tick数据有很多坑,所以打算自己研究一下。首先的第一步就是先拿正常的tick数据来生成bar,从而能够理解一些细节,然后就是自己用ctp去接收tick数据,看看ctp有没有坑。 这里,完美的tick数据是wind上的。 这是wind上面导出来的,看起来还是比较正常的,反...原创 2019-03-15 23:24:52 · 11186 阅读 · 0 评论 -
pandas画图的几个技巧
1、pandas画图的时候颜色种类不够我们经常会用pandas处理数据,处理完之后,很多时候会画个图看看。但是pandas默认的曲线就只有十种颜色,如果我们要绘制的数据过多,就会出现颜色重复。其实很简单,pandas绘图的时候有一个colors参数,我们可以对这个参数进行赋值。data_df.plot(figsize=(19, 10), colors=cnames.keys())其实...原创 2019-03-19 19:15:33 · 3357 阅读 · 0 评论 -
pandas的Groupby加速
在平时的金融数据处理中,模型构建中,经常会用到pandas的groupby。之前的一篇文章中也讲述过groupby的作用:https://blog.youkuaiyun.com/qtlyx/article/details/80515077 但是,大家都知道,python有一个东西叫做GIL,说白了就是python并没有多线程这种东西。那么,现在如果我们要进行grou...原创 2019-02-14 22:05:52 · 8671 阅读 · 7 评论 -
pyecharts绘制K线
最近想扩展一下vnpy,优化一些功能和代码的性能。在看backtesting部分代码的时候,发现,vnpy其实回测功能挺弱的,可以自己扩展一下。随之而来的就是一个回测结果可视化的问题。vnpy原生的回测结果没有绘制k线,所以也就没有指标的可视化和开仓平仓的可视化,只有随后交易结果的可视化。笔者自己其实有点点不习惯,没有看到策略的可视化回测结果,有点点不开心,所以打算自己做一下。首先...原创 2018-12-23 20:07:15 · 19499 阅读 · 26 评论 -
Cython入门到放弃(二)
上一篇文章讲了Cython的使用流程,没有具体展开讲别的,例子也很简单。今天首先使用一个官方文档上使用Cython的例子,然后抛出几个连续的小demo,看看Cython是如何一步一步加速的。首先我们新建一个文件,primes.pyx,然后写一个cython文件:def primes(int nb_primes): cdef int n, i, len_p cdef int...原创 2018-12-11 20:25:12 · 6492 阅读 · 5 评论 -
vn.py源码解读(三、事件驱动引擎代码分析)
先抛开一切,我们来想一想,如果自己要写一个事件驱动引擎会怎么写?之前也说过,所谓的事情驱动就是你要监听一些事件,当某些事件发生的时候,要分配相对应的方法进行处理。完成这个过程的东西我们抽象出来之后就叫做事件驱动引擎了。那么,如果我们自己写的话,应该有这样几个功能:1.事件的注册和取消,使用者可以根据自己的需求来设置引擎需要关心那些事件 2.事件对于的处理方法的挂钩。显然,一个...原创 2018-12-02 12:03:12 · 7224 阅读 · 1 评论 -
statsmodels的回归R2的问题
做量化呢,得经常做回归,各种各样的,ols,wls,正则的lasso, 岭回归等等。回归有一个很重要的整体解释力度的参数就是R2,也就是可决系数。在python中,我们回归一般采用的是statsmodels这个模块,但是回归的时候获得的R2其实有那么点学问,有时候设置错参数可能得到的R2大家会觉得怪怪的。这里就给大家排个雷。首先,我们先给出两组、六个回归函数。第一组:de...原创 2018-10-10 21:23:15 · 7225 阅读 · 0 评论 -
python的一些细节(2)
想想自己写了这么久的python,其实基础的东西还是不扎实,重新学习一下廖雪峰老师的教程,有很多之前未知或者有疑惑的东西得到了解答。1.字符编码问题ASCII编码是1个字节,而Unicode编码通常是2个字节,utf-8则是1-6个字节。同时utf-8中对英文字母的编码就是ASCII码。python中u"XXX"代表的是这个字符串是Unicode编码的,而"XXX"则是utf-8编码。原创 2017-05-27 17:17:01 · 652 阅读 · 0 评论 -
pandas的引用与复制
之前一直以为pandas任何的切片和筛选都是引用,也就是说,会改变最原始的数据。但是前几天发现并不是这样的。 下面对最常见的几种pandas 数据截取的方式做一个整理。import pandas as pddef df_gen(): l1 = [1,2,3] l2 = [4,5,6] l3 = [7,6,5] df_t = pd.DataFr原创 2017-04-23 14:59:52 · 18897 阅读 · 4 评论 -
使用MIC进行变量选择
如果有很多自变量,我们能在很多自变量中选出几个对因变量影响最大的吗?或许MIC可以解决这个问题哦。# -*- coding: utf-8 -*-"""Created on Mon Mar 14 19:52:57 2016@author: Luyixiao"""import numpy as npfrom minepy import MINEimport matplotlib原创 2016-03-14 20:45:05 · 3246 阅读 · 0 评论 -
numpy的random模块
转自http://www.mamicode.com/info-detail-507676.html排列shuffle(x)现场修改序列,改变自身内容。(类似洗牌,打乱顺序)>>> arr = np.arange(10)>>> np.random.shuffle(arr)>>> arr[1 7 5 2 9 4 3 6 0 8] Thi转载 2016-02-24 20:07:26 · 5704 阅读 · 0 评论 -
python的拉链(zip)
python中有一个zip,也就是拉链,那我们来理解一下吧。>>> a = [1, 2, 3]>>> b = ['a', 'b', 'c']>>> z = zip(a, b)>>> z[(1, 'a'), (2, 'b'), (3, 'c')]>>> zip(*z)[(1, 2, 3), ('a', 'b', 'c')]我们把list当做列向量来看就很好理解了,zip就是拉链,把一原创 2016-03-08 20:47:37 · 1978 阅读 · 0 评论