python
云金杞
量化研究员\CTA量化基金经理,金融硕士,CIIA,CFP,FRM,CFA,擅长使用python进行数据分析和建模,熟练使用backtrader、tbquant等量化平台。
展开
-
pandas数据处理高级系列001-如何用一行代码优雅的删除一行数据中不包含特定字符串的行
方法一实现起来最简单,但是并不优雅,最优雅的是方法三,用了一行代码实现了。原创 2022-12-22 22:04:07 · 721 阅读 · 0 评论 -
均值回归中的半衰期计算方式
import statsmodels.api as smdef get_halflife(s): s_lag = s.shift(1) s_lag.iloc[0] = s_lag.iloc[1] s_ret = s - s_lag s_ret.iloc[0] = s_ret.iloc[1] s_lag2 = sm.add_constant(s_lag) model = sm.OLS(s_ret,s_lag2) res = model.fit.原创 2021-03-26 10:47:43 · 2283 阅读 · 0 评论 -
使用python做协整模型分析并进行残差检验
from statsmodels.graphics.tsaplots import plot_acf, plot_pacffrom statsmodels.tsa.stattools import adfullerimport pandas as pdimport numpy as npimport osimport statsmodelsimport statsmodels.formula.api as sm### 省略很多数据处理# 对near和far进行协整检验simple =.原创 2021-03-26 09:33:16 · 4792 阅读 · 1 评论 -
在ubuntu系统上,pypy安装scipy
ubuntu20.04的系统,配置好pypy之后,安装scipy总是出错,记录下如何安装scipy。这个也不一定准,因为尝试的方法太多了,可能多种因素导致最终成功了。首先,报错原因安装scipy的时候出现因为没有lapack/blas报错,查找scipy的相关文档,说是要安装openblas,其实并没有安装这个,因为下载太慢了,还没有成功,就尝试了另外一种方法。其次,安装相应的包sudo apt-get install libatlas-base-devcd /usr/local/libsudo原创 2021-02-04 21:37:29 · 1138 阅读 · 1 评论 -
ImportError: cannot import name ‘PackageFinder‘ from ***
报错如下:ImportError: cannot import name 'PackageFinder' from 'pip._internal.index' (c:\python\python37\lib\site-packages\pip\_internal\index\__init__.py)解决方式 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py pythonget-pip.py 非linux相关的电脑,可.转载 2020-12-11 21:29:35 · 2162 阅读 · 2 评论 -
把K线的时间增加15分钟
import time,datetimeimport pandas as pd data=pd.read_csv("C:/Users/WIN10/Desktop/ru000.csv",encoding='gbk')data['时间']=pd.to_datetime(data['时间'])data['时间']=[i+datetime.timedelta(seconds=900) for...原创 2020-05-07 15:46:14 · 580 阅读 · 0 评论 -
基于JQData的有效前沿及投资组合优化
转自:https://www.joinquant.com/community/post/detailMobile?postId=15331&page=&limit=20&replyId=&tag=(1)现代资产组合理论(MTP)是关于在特定风险水平下投资者(风险厌恶)如何构建组合来最大化期望收益的理论,这一理论最基本的原则是投资者可以构建投资组合的有效集合,即...转载 2020-03-04 11:01:01 · 352 阅读 · 0 评论 -
JQData | 十年一瞬 · 量化分析股市涨跌周期规律(日内)
本文转自:https://www.joinquant.com/view/community/detail/781e477fbbb05dd6953f5e535e4b7861JQDATA可以怎么玩呢?统计还是一件蛮有意思的事(给我一行数据,我能撬动地球),我们总是喜欢开盘买入,这是为什么呢?开盘卖出是否是合理的呢?今天我们就利用JQDATA统计一下历史上日内走势的上涨下跌概率及幅度工具 :...转载 2020-03-04 10:58:40 · 844 阅读 · 0 评论 -
JQData | 股市估值分析,带你穿越资本市场迷雾
转载自:https://www.joinquant.com/view/community/detail/9e0c400b057e246bdca2db2d54b85941投资最重要的事 -- 估值投资最重要的是什么?答:判断“胖瘦”的能力。巴菲特:对面过来一个200斤的人,你不需要一台体重秤,也该知道他是胖子。要想做好投资,你该知道自己心仪的标的到底是贵还是便宜。在资本市场,判断“...转载 2020-03-04 10:54:18 · 445 阅读 · 0 评论 -
array和list效率对比1--增加数据
from array import arrayimport numpy as npimport time # append数据content_append_by_array=array('d')content_append_by_list=list()# 尝试分别给每个增加10**n的数据(n从1,到11),计算时间# n=range(1,12)array_time=[]lis...原创 2019-12-31 17:24:15 · 1047 阅读 · 1 评论 -
python创造一个新的元类,用于给现有的类增加相应的方法
from collections import OrderedDictdef pop_by_index(self,i): count=0 for key in self.keys(): if count==i: mykey=key count+=1 self.pop(mykey,None)class DelI...原创 2019-11-27 09:06:38 · 501 阅读 · 0 评论 -
backtrader_源码学习_findbases函数用于发现两个类之间有多少继承的类
# 从当前类出发到top类,中间有多少继承的类def findbases(kls, topclass): retval = list() for base in kls.__bases__: if issubclass(base, topclass): retval.extend(findbases(base, topclass)) ...原创 2019-11-20 16:57:01 · 530 阅读 · 0 评论 -
numpy重新学习系列-numpy的四则运算(13)
import numpy as npa = np.array( [20,30,40,50] )b = np.arange(1,5)print("a is ",a,"\n")print("b is ",b,"\n")# 从加减乘除等基本运算中,可以看到,都是numpy中对应的元素的运算print("a+b",a+b,"\n")print("a-b",a-b,"\n")print("...原创 2019-11-10 20:00:18 · 512 阅读 · 0 评论 -
numpy重新学习系列-如何设置numpy的打印信息输出量(12)
import numpy as npimport sysnp.set_printoptions(threshold=sys.maxsize)这个其实相对来说非常简单,只需要三行代码就可以实现。按照系统最大的输出信息量来打印出来。sys.maxsize是一个数字,在ubuntu18.04的系统中,打印出来是:print(sys.maxsize)922337203685477...原创 2019-11-10 19:39:29 · 1078 阅读 · 0 评论 -
python-CFA-计算实现理财目标需要准备的现金流期数
An individual wants to be able to spend €80,000 per year for an anticipated 25 years in retirement. To fund this retirement account, he will make annual deposits of €6,608 at the end of each of his w...原创 2019-11-05 22:44:56 · 592 阅读 · 0 评论 -
python-CFA-计算现值的函数(1)
A financial contract offers to pay €1,200 per month for five years with the first payment made immediately. Assuming an annual discount rate of 6.5%, compounded monthly the present value of the contr...原创 2019-11-05 22:21:51 · 2514 阅读 · 0 评论 -
numpy重新学习系列(11)---如何用np.linspace生成等间距的N个数字
作用:1. 通过特定的间隔,返回均匀分布的array2. 根据需要多少的数字,通过计算相应的间隔,返回包含这么多数字的均匀分布的array3. 结尾的数字可以选择包含,也可以选择不包含参数:start 这个序列开始的值stop 这个序列结束的值,除非参数endpoint=False,才不会是最终的值;在endpoint=False的时候,这个序列包含num+1个数字的前nu...原创 2019-10-31 20:37:30 · 2456 阅读 · 0 评论 -
numpy重新学习系列(10)---如何用np.arange生成均匀间隔分布的array
'''numpy.arangenumpy.arange([start, ]stop, [step, ]dtype=None)Return evenly spaced values within a given interval.Values are generated within the half-open interval [start, stop) (in other word...原创 2019-10-31 20:13:32 · 2127 阅读 · 0 评论 -
python中两个列表形成dict,要确保作为key的list的值,最好是没有重复的
# 比较好奇如果两个list想要生成一个dict,但是作为key的list有重复的情况下,会发生什么?name_list=["yun","li","guo",'yun','yun']score_list=['90','80','90','70','100']target_dict=dict(zip(name_list,score_list))print(target_dict)在ke...原创 2019-10-31 10:10:55 · 3213 阅读 · 1 评论 -
对一个list取前M个数字和后M个数字,形成两个列表
s=list(range(20))def get_first_m_and_last_m(s,m): # 注:如果使用s[:m-1],s[-m:-1],就会出错,特此记录 return s[:m],s[-m:]get_first_m_and_last_m(s,3)([0, 1, 2], [17, 18, 19])...原创 2019-10-31 09:35:54 · 511 阅读 · 0 评论 -
numpy重新学习系列(9)---如何用np.empty_like创建一个新的和原来array形状一样的,但是未初始化的array
用法参考numpy.zeros_like,参数几乎一样。原创 2019-10-30 21:18:36 · 5584 阅读 · 0 评论 -
numpy重新学习系列(8)---如何用np.empty创建一个未初始化的array
# 用法几乎和np.ones,np.zeros一样# 参考np.zeros的用法# 比较值得探索的是,初始化的值,是否一样import numpy as np原创 2019-10-30 21:13:44 · 4627 阅读 · 1 评论 -
numpy重新学习系列(7)---如何用np.ones_like创建一个新的和原来array形状一样的,但是元素为1的新的array
# 用法和numpy.zeros_like一样# 具体用法参考:numpy.zeros_like原创 2019-10-30 21:03:34 · 1052 阅读 · 0 评论 -
numpy重新学习系列(6)---如何用np.ones创建一个新的array,里面元素是1
'''numpy.onesnumpy.ones(shape, dtype=None, order='C')[source]Return a new array of given shape and type, filled with ones.Parametersshape int or sequence of intsShape of the new array, e....原创 2019-10-30 20:59:21 · 1127 阅读 · 0 评论 -
一行代码安装talib
首先,要找到要安装的talib的模块https://www.lfd.uci.edu/~gohlke/pythonlibs使用的是第三方的非正式的talib模块,正式的安装不上去打开cmd或者conda,使用命令:pip install https://download.lfd.uci.edu/pythonlibs/g5apjq5m/TA_Lib-0.4.17-cp36-cp3...原创 2019-10-30 09:56:13 · 4029 阅读 · 3 评论 -
numpy重新学习系列(5)---如何用np.zeros_like创建一个新的和原来array形状一样的,但是元素为0的新的array
'''numpy.zeros_likenumpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)[source]Return an array of zeros with the same shape and type as a given array.Parametersa array_like ...原创 2019-10-28 20:12:21 · 2066 阅读 · 0 评论 -
numpy重新学习系列(4)---如何用np.zeros创建填充元素为0的array
### 创造数字为0的array'''np.zeros的用法numpy.zerosnumpy.zeros(shape, dtype=float, order='C')Return a new array of given shape and type, filled with zeros.Parametersshape int or tuple of ints ...原创 2019-10-27 12:19:49 · 3846 阅读 · 0 评论 -
numpy重新学习系列(3)---如何创建一个array-四种从其他形式转化成array的方法
numpy有几种方法可以创建array数据结构。第一种是转换,把python的list,tuple,或者pandas的series或者dataframe转化为array.# 转换成array的几种方法import numpy as npimport pandas as pdarray_from_list=np.array([1,2,3,4,5,6])print("array...原创 2019-10-24 21:29:01 · 748 阅读 · 0 评论 -
numpy重新学习系列(2)---numpy的属性
先决知识:1、要熟悉一些python的基本语法2、如果想要运行本文的案例,需要你先安装一些软件;基础知识:numpy主要的结构是同种的多维的数据类型;它是一些元素的目录表,这些元素通常是数字,同样的数据类型,被非负数的数字,以index标记。numpy的类主要是ndarray,有时候也用array表示。python的array.array只能处理一维的数据,并且只有少量的...原创 2019-10-23 20:56:27 · 267 阅读 · 0 评论 -
numpy重新学习系列(1)---重新认识numpy
学习使用python三年多的时间了,在平常的生活中,在日常的工作中,或多或少都要使用到numpy,pandas,matplotlib,scipy,plotly等模块,却发现,对这些模块并没有能够达到精通的程度,仅仅了解了其中某些函数的用法。希望通过这次的学习能够进一步夯实python的基础。这次的python学习之旅,将会以场景化应用为主,覆盖尽可能多的函数,精读,希望每...原创 2019-10-20 19:55:30 · 299 阅读 · 0 评论 -
采用蒙特卡洛模拟方法计算欧式期权的价值--python
信息:1、股票指数化水平:s0=1002、欧式看涨期权行权价格:K=105;3、到期时间:T=1;4、固定无风险利率:r=5%;5、固定波动率:&=20%;代码:so=100K=105T=1r=0.05sigma=0.2from numpy import*I=100000z=random.standard_normal(I)st=翻译 2016-10-22 20:59:07 · 9897 阅读 · 0 评论 -
零基础安装python的pip包
搞了很久,找了很多的教程,多数存在问题,结合几个帖子,终于安装好了。激动下,不容易啊,几个小时。 首先说一下,我的电脑系统是win10 64位,python34; 第一步,找到windows cmd(对于初学者来说,并不知道这个是什么,可以百度下或者在电脑程序,运行,输入cmd)http://jingyan.baidu.com/article/a3aad71a8d01c3b1fb翻译 2016-10-12 20:02:52 · 516 阅读 · 0 评论 -
win10系统下python3.5如何安装scipy
找了各种教程,试了各种方法,最后找到一个比较适合的,具体方法如下: win10 64位系统 python 3.5 --32第一步:在http://www.lfd.uci.edu/~gohlke/pythonlibs网站下载下载numpy-1.10.4+mkl-cp35-cp35m-win32.whl、scipy-0.17.0-cp35-none-win32.whl和Theano原创 2016-11-04 23:09:45 · 2069 阅读 · 0 评论 -
用python进行简单欧式期权定价
python3.5版本源代码:###期权计算from math import log,sqrt,expfrom scipy.stats import normdef call_option_pricer(spot,strike,maturity,r,vol): d1=(log(spot/strike)+(r+0.5*vol*vol)*maturity)/vol/sqr翻译 2016-11-05 09:12:29 · 15274 阅读 · 2 评论 -
python程序运行时间-期权组合计算
spot = 2.45strike = 2.50maturity = 0.25r = 0.05vol = 0.25from math import log, sqrt, expfrom scipy.stats import normdef call_option_pricer(spot, strike, maturity, r, vol):翻译 2016-11-05 14:47:32 · 2305 阅读 · 0 评论 -
windows系统下R语言如何安装rPython包?
系统配置: win10;64位 R3.1.1,32位 python3.5;32位安装步骤: 1、安装R包 install.packages("devtools")library(devtools)2、下载rPython-winhttps://github.com/cjgb/rPython-win下载好之后,解压到一个单独的文原创 2016-11-07 16:39:12 · 2576 阅读 · 2 评论 -
python如何安装spyder?
系统:win10,64位python3.5 ,32位pip install;方法:首先,安装wheel,之后安装PyQt4-4.11.4-cp35-none-win32,这个包要和自己的python匹配安装好之后,直接用pip install spyder 安装就可以了。对网速要求比较高,要下载30多个依赖包注:pyqt4下载地址:http://download.c原创 2016-11-08 08:54:01 · 19593 阅读 · 2 评论 -
python中pandas包学习笔记(1)
直接上源代码,英文基础好的,建议去官方网站学习:http://pandas.pydata.org/pandas-docs/stable/10min.html我的学习代码:import pandas as pdimport numpy as npimport matplotlib as plts = pd.Series([1,3,5,np.nan,6,8])dates翻译 2016-11-08 17:51:31 · 1352 阅读 · 0 评论 -
用python计算20日均线数值
小案例: 参考了一些文章。做了一个20日移动平均线;这算是第一篇自己用python实现的功能吧。步骤: 1、在网易财经下载000300的历史数据。 2、配置好python和pandas包代码:#加载pandas包和os包import pandas as pdimport os#获取工作目录os.getcwd()#把数据放入工作目录当原创 2016-11-08 21:41:44 · 17282 阅读 · 0 评论 -
如何用python编写函数把摄氏温度转化为华氏温度-学习笔记1
用python编写函数把摄氏温度转化为华氏温度小代码:def fc(x): f=x*9/5+32 return(str(f)+'华氏温度')f=fc(35)print(f)原创 2016-11-10 17:56:04 · 27339 阅读 · 3 评论