自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 在 CSDN 的 MarkDown 中编辑数学公式

1、公式定界符与关键字CSDN-MarkDown编辑器使用的公式定界符为和和和$,单美元符号包围的是行内公式,双美元符号包围的是块公式。示例:$\gamma(n) = (n-1)! \quad\forall n \in\mathbb N$效果:γ(n)=(n−1)!∀n∈N\gamma(n) = (n-1)! \quad\forall n \in\mathbb Nγ(n)=(n−1)!∀n∈N示例:$$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$效果:x=

2020-12-27 18:58:24 737

原创 将小 df 中的数据快速并入大 df 中(2020-12-28 更新)

需求描述有一大一小两个dataframe。其中 df_big 是每个股票每天的若干个日数据,行索引为 [股票代码,交易日期] 的两层。In[37]: df_big.shapeOut[37]: (90772, 6)In[38]: df_big.head()Out[38]: close pct_chge ... cap turn_ratesymbol tdate ...

2020-12-24 14:36:07 373

转载 合并 list 中的 dataframe

Intro需求很明确,有一个list,每个元素都是一个dataframe,其中dataframe的列数相同。希望把这些子数据框合并成大的数据框。这个list是多线程计算返回的结果,在R里可以直接用do.call函数,那么python中怎么用呢?先看版本信息:系统:in10Python:3.7.0(python --version)Pandas:0.23.4数据构造import pandas as pd # sample dataframesd1 = pd.DataFrame({'one'

2020-12-23 16:31:30 2278 1

转载 给定时间戳,匹配与它最接近的旧值(merge_asof 等两个方法)

merge_ordered:函数允许组合时间序列和其他有序数据。 特别是它有一个可选的fill_method关键字来填充/插入缺失的数据。import pandas as pdleft = pd.DataFrame({'k': ['K0', 'K1', 'K1', 'K2'], 'lv': [1, 2, 3, 4], 's': ['a', 'b', 'c', 'd']})right = pd.DataFrame({'k':

2020-12-23 10:27:05 2975 1

原创 因子类投资模型框架简介(待续)

一、capm模型1964年由夏普(Willim Sharpe)提出的capm模型奠定了本类模型的方向与基础。它在若干理想化假设下,将资产的收益率分成无风险收益和风险收益,后者与市场整体风险的关系用一个“弹性系数beta”表示,即:ri−rf=β(rm−rf)+ϵir_{i} - r_f = \beta (r_{m}-r_f) + \epsilon_{i}ri​−rf​=β(rm​−rf​)+ϵi​二、apt模型1976年由罗斯(Steven Ross)提出的apt模型扩展了capm模型,放松了ca

2020-12-22 10:29:56 1790

转载 瞧瞧,这样的代码才叫 Pythonic

来源:Python编程时光Python由于语言的简洁性,让我们以人类思考的方式来写代码,新手更容易上手,老鸟更爱不释手。要写出 Pythonic(优雅的、地道的、整洁的)代码,还要平时多观察那些大牛代码,这里明哥收集了一些比较常见的 Pythonic 写法,帮助你养成写优秀代码的习惯。01. 变量交换交换两个变量的值,正常都会想利用一个中间临时变量来过渡。tmp = aa = bb = tmp能用一行代码解决的(并且不影响可读性的),决不用三行代码。a,b = b,a02. 列表推导

2020-12-22 10:22:58 90

原创 取日期序列每半年、季度、月的最后一天

df 是保存日数据的 dataframe,格式如下:想取每个月、季度、半年最后一天: df['year-month'] = [str(i)[0:7] for i in df.index] if frequency == 'month': new_index = df.drop_duplicates('year-month').index elif frequency == 'quarter': df['month'] = [s

2020-12-21 22:17:42 967 1

原创 极简投资技术史 (to be continue)

1、交易模型的三个层次1)基于市场的表面信息建立模型1-1)概念:比如趋势、周期、形态、指标等1-2)特点:1-2-1)数据获取、模型构建相对方便,技术门槛相对较低。1-2-2)理论基础是:市场行为消化一切信息、价格以趋势方式波动、历史会重演。但是1-2-3)使用方式灵活,通用性较高,使用效果与使用者自身经验有较大关系。1-3)发展简介(西方视角)1-3-1)20世纪初出现的道氏理论及股票指数,奠定了现代技术分析的基础。1-3-2)1948年,汇总当时技术分析方法的《股市趋势技术分析》(

2020-12-14 11:04:47 235 1

转载 稳健回归(Robustness regression)

最小二乘法的弊端之前文章里的关于线性回归的模型,都是基于最小二乘法来实现的。但是,当数据样本点出现很多的异常点(outliers),这些异常点对回归模型的影响会非常的大,传统的基于最小二乘的回归方法将不适用。比如下图中所示,数据中存在一个异常点,如果不剔除改点,适用OLS方法来做回归的话,那么就会得到途中红色的那条线;如果将这个异常点剔除掉的话,那么就可以得到图中蓝色的那条线。显然,蓝色的线比红色的线对数据有更强的解释性,这就是OLS在做回归分析时候的弊端。当然,可以考虑在做回归分析之前,对数据做预

2020-12-07 10:31:58 7761

转载 谈谈基本面的量化

谈谈基本面的量化Alpha2017-03-02黄瑞庆:博时基金管理有限公司指数与量化投资部总经理兼基金经理。从2002 年起先后在融通基金、长盛基金等多家资产管理机构从事研究、投资、管理等工作。2013 年加入博时基金管理有限公司,历任股票投资部ETF及量化组投资副总监、股票投资部量化投资组投资总监。演讲内容:其实关于量化投资方面,我们很多的超额收益都来自于市场面,我非常钦佩鲁明他一直在基本面里面投入了大量的时间、精力。在我们看到的卖方的研究里也是非常有价值的,也是非常少见的投...

2020-12-06 10:56:06 1600

转载 公司自由现金流(FCFF)和股权自由现金流(FCFE)

轻松应用巴菲特式估值巴菲特用什么来估值?自由现金流!所以,只要解决了自由现金流的问题,就可以轻松应用巴菲特式估值方法!但是现行财务报告中没有现成的自由现金流数据,这成了许多价值投资者对用自由现金流估值望而却步的主要原因。笔者结合自己的一点体会,得出结论:自由现金流数据其实可以轻松获得!自由现金流分为公司自由现金流(FCFF)和股权自由现金流(FCFE),FCFF的经济意义是:归属于股东与债权人的最大现金流;FCFE即是归属于股东的最大现金流。其原始的公式为:公司自由现金流量(FCFF

2020-12-06 09:41:39 15225

转载 计算企业价值时的 净债务及超额现金

企业价值=股权的市场价值+债务-超额现金超额现金 = 总现度金 - [流动负债 -(流动资产 - 总现金)]这个公式仅在扣除现金后的流动资产规模小于流动负债时有效,假如扣除现金后的流动资产规模大于流动负债时,那么超额现金就等于总现金数额。转载自:https://zhidao.baidu.com/question/571808551.html...

2020-12-06 09:30:16 1220

转载 扣除非经常性损益后的归属母公司所有者的净利润怎么算

归属于母公司所有者的净利润 115,753,508.93 ① 扣除所得税影响后归属于母公司所有者的净利润(假设税率为25%)的非经常性损益 (19,185,967.09-210,560.35 )*(1-25%) ② 扣除非经常性损益后的归属于母公司所有者的净利润 ③=①-②非经常性损益是指与公司正常经营业务无直接关系,以及虽与正常经营业务相关,但由于其性质特殊和偶发性,影响报表使用人对公司经营业绩和盈利能力做出正常判断的各项交易和事项产生的损益。报表列示的本期营业外收入和营业外支出一般情况下...

2020-12-06 09:20:19 10785

转载 三种市盈率和环比及TTM计算法

市盈率有静态市盈率、滚动市盈率和动态市盈率,怎么计算呢?首先需要明确的是,市盈率是按照一年这样的时间单位进行计算的,这样可以与银行的利率(银行的市盈率倒数)相比较。现以000651格力电器为例:格力电器2009年EPS为1.55元,当时(指年初)总股本为18.7859亿,而目前总股本为28.1789亿,2009年EPS就变为1.55×(18.7859/28.1789)=1.0333元;又知道,2010年前三季度净利润为28.9007亿元,2009年第四...

2020-12-06 09:17:26 2527

转载 python字典:通过值反查键

方法一:通过键查值比较容易,通过值反查键就稍微麻烦点,这里给大家提供点思路。由于值是可以重复的,所以分成两种情况给大家展示:第一种是值唯一的情况直接构造列表,通过value的索引取对应的key。第二种是值不唯一的情况,需要通过for遍历出所有的索引然后查出所有对应的key。如果你需要打印所有满足查询值所对应的key,选第二种;如果你只需要打印首次出现查询值所对应的key,选第一种。代码如下:#假如值唯一mydisc = {'key1':'123', 'key2':'234', 'key3'

2020-12-06 00:37:49 1628

原创 pandas 的 to_datetime 转换日期格式很慢如何解决

从csv文件中读取数据后,要成列转换日期数据,使用 pd.to_datetime() 时,如果不指定转换方式,有时候会超级慢。此时可这么写:df.index=pd.to_datetime(df.index,format='%Y-%m-%d %H:%M:%S.%f')

2020-12-06 00:23:27 984

转载 统一转换日期格式dateutil.parser.parse

背景:我有很多很多的日志数据,每个日志里面都有日期字符串,我需要将其转换为datetime格式。问题是,这些日志里的字符串格式五花八门,有2017-05-25T05:27:30.313292255Z,有2016-07-01T00:00:00以及其他各种我还没有看到的格式。开始我写了一长串的if else来判断格式,但是总有我漏掉的。最后上网一查,发现dateutil.parser.parse。可以不用我们指定格式,直接将字符串转换为datetime格式。import datetimeimport

2020-12-06 00:08:58 859

原创 python 使用小技巧(动态更新)

1、 找出含有特定字符串的行res=res[res['choice'].str.contains("<img")]2、找出第一个字符是 ‘9’ 的行res=res[res['choice'].str[0] == '9']

2020-12-06 00:07:58 287

转载 将nan, inf转为特定的数字

最近,处理两个矩阵的点除,得到结果后,再作其他的计算,发现有些内置的函数不work;查看得到的数据,发现有很多nan和inf,导致python的基本函数运行不了,这是因为在除的过程中分母出现0的缘故。为了将结果能够被python其他函数处理,尤其numpy库,需要将nan,inf转为python所能识别的类型。这里将nan,inf替换0作为例子。In[1]:import numpy as npa = np.array([[np.nan, np.nan, 1, 2], [np.inf, np.inf,

2020-12-05 23:48:11 566

转载 pycharm 快速 跳转 :书签 函数 快速 定位 阅读代码

书签 功能 快捷键Ctrl + F11 设置书签Ctrl + 1 书签号 跳转到 该书签SHIFT F11: 显示所有书签。快速跳转CTRL F12: 当一个文件中方法太多,要快速跳到某个方法时,可以用此快捷键打开LIST,除了用上下箭选择外,还可以输入字母。移动ALT UP: 移到上一个方法ALT DOWN: 移到下一个方法CTRL B | CTRL 单击: 转到方法定义处CTRL SHIFT UP: 将当前行上移一行CTRL SHIFT UP: 将当前行下移一行SHIFT EN

2020-12-05 23:44:54 947

原创 pandas 根据内容倒查出对应的索引

1、有如下df:import pandas as pddf = pd.DataFrame([[1, 'wahaha'], [2, 'olala']], index=[0, 1], columns=['col_a', 'col_b'])想得到内容是“wahaha”的那行的索引:思路1:直接根据内容找到对应的行,再取其索引In[6]:df.query('col_b == "wahaha"')Out[6]: col_a col_b0 1 wahaha思路2:根据内容找到

2020-12-05 21:55:09 1310

原创 从大 dataframe 中删除小 dataframe 具有的记录

问题:有一大一小两个df:df_big 和 df_small,格式如下。其中 df_small 中的记录在 df_big 中也有。现在想把 df_big 中存在的 df_small 记录删掉。index tdate stk weight id type ind57304 20181116 603328.SH 0.0069 令狐冲 关注池组合2 电子57305 20181116 300476.SZ 0.0182 令狐冲 关注池组合2

2020-12-05 18:25:09 1204

原创 相同索引的 dataframe 间列值的批量赋值(数据类型要匹配)

现有时间序列 df_B,及新定义的 df_A,其时间索引与 df_B 相同,但是两者列名不同:df_A = pd.DataFrame(index=df_B.index, columns=cols_a)想从df_B 中取一列值,成批赋值给 df_A 中的某一列,常规的代码是:df_A[col_name_A] = df_B[col_name_B] 或者df_A[col_name_A] = df_B[col_name_B].values.tolist()但是实际执行时始终无法赋值成功,最后发现原

2020-12-05 18:03:46 1251

转载 pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用

我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置。我找了很久,也尝试了很多办法,都没能找到一种非常直接的函数,本文所要介绍的是一种我认为比较方便的方法:np.where()我举个例子import pandas as pdimport numpy as npdf = pd.DataFrame(np.arange(12).reshape(4,3), index=list('abcd'), columns=list('xyz'))In [14]:dfOut[14]:

2020-12-05 17:58:13 3930 2

转载 字典处理中应用 keys 的小坑

问题背景:这两天用python做大数据处理,抽取每个文本单词,进行统计排序。数据大概有2000万个,利用python多进程处理。数据同步用的python多进程通信中比较常使用的Manager Dict。原始代码是这样写的.def process_file_path_list(self, path_list, total_tf_map): for path_ in path_list: tf_dict = self.process_file(path_) # extract

2020-12-05 17:43:37 173

转载 numpy float16数据转换之精度损失

When you convert from 32bit float to 16bit float and back, some of the bits are lost, but note that this does not mean the decimal representation will be shorter. When you print out a floating point number, the computer only prints the closest decimal repr

2020-12-05 17:29:35 2268

转载 pandas.DataFrame排除特定行

使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame。如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式传入,还可以传入字典,指定列进行筛选。但是如果我们只想要所有内容中不包含特定行的内容,却并没有一个isnotin()方法。我今天的工作就遇到了这样的需求,经常查找之后,发现只能换种方式使用isin()来实现这个需求。示例如下:In [3]: df = pd.DataFrame([['GD', 'G

2020-12-05 17:25:46 483

转载 python中isdigit()、isdecimal()和isnumeric的区别!

1、函数介绍isdecimal(...) | S.isdecimal() -> bool | | Return True if there are only decimal characters in S, | False otherwise. 翻译:如果S中只有十进制字符,则返回True,否则为False。isdigit(...) | S.isdigit() -> bool | | Return

2020-12-05 17:17:28 691

转载 施密特正交化的几何解释与代码实现

1、施密特正交化的几何解释给定一组基α1,α2,…,αn,将其变换成另外一组正交基β1,β2,…,βn,使这两组基等价施密特正交化方法:首先清除一个公式,两个向量α,β,那么α在β上的投影向量为 如图红色部分即为投影部分则蓝色部分向量为对应两个向量的施密特法则可见蓝色向量为β2与β1是垂直的而当向量个数为3时,对应三维空间的几何解释如图其中绿色的为需要正交的原始基αi(α1是红色的因为α1同时也是β1)将二维得到的β2平移到坐标原点出后则α3在xoy平面的投影即是即α3在β

2020-12-04 22:43:53 3000

转载 如何在数字前面填充0,在股票代码前面补上0的三种方法

在处理股票代码的时候,在从csv文件读取股票数据的的时候,一不小心深市的股票前面的0就会没了,本文将介绍三种简单方法来补上这些丢失的0。str.zfiil()zero fill : 在字符串前面填充0括号里的参数是指输出字符串的长度In [161]:'6'.zfill(6)Out[161]: '000006'% 百分号字符串格式化输出In [162]: '%06d'%6Out[162]: '000006'str.format 字符串格式化输出In [163]:'{:06}'.form

2020-12-04 22:33:08 1980

原创 提高多层行索引的 DataFrame 的搜索效率

colone two a t 0 u 1 v 2 w 3对于以上结构的两层行索引 DataFrame,采用 data.loc[(c, u), col] 取数据时,一般情况下会触发如下警告:PerformanceWarning: indexing past lexsort depth may impact performance.这是因为索引没有排序,而是否排序对 DataFrame 的检索效率有较大影...

2020-12-04 21:48:27 428

转载 numpy数据类型dtype转换

这篇文章我们玩玩numpy的数值数据类型转换导入numpy>>> import numpy as np一、随便玩玩生成一个浮点数组>>> a = np.random.random(4)看看信息>>> aarray([ 0.0945377 , 0.52199916, 0.62490646, 0.21260126])>>> a.dtypedtype(‘float64‘)>>> a.shape

2020-12-04 21:13:58 628

转载 numpy,pandas数据处理小技巧

Edward.Fu今日是端午4天假期的最后一天,自己的2台电脑一台在处理数据,另一台电源适配器也坏掉了。感觉闲来无事,在此就简单聊聊 numpy 和 pandas 的各种冷知识、小技巧和疑难杂症。个人觉得关于 numpy 和 pandas 的坑太大,不好填,在此就不系统的介绍了,各位可以买些这块的资料先自己看看。这里就着重聊聊一些使用过程中常用到但教科书里找不着的问题,省的各位朋友还跑去stackoverflow找答案。问题一、dataframe里面.values,.iloc,.ix,.loc的区别

2020-12-04 21:12:17 462

转载 百倍加速!Python量化策略的算法性能提升指南

作者:用Python的交易员性能问题Python在2016年里可以说是风靡国内量化投资圈,目前整个生态链已经初具规模:交易:vn.py、easytrader、at_py数据:tushare回测:rqalpha在线平台:UQER、RiceQuant、JoinQuant随着用户越来越多,Python语言的性能问题也就逐渐成为整个社区关注的重点,经常遇到新手问:Python写的量化交易程序是不是很慢啊?在他们心中,Python估计是这个样子:(即使作为破旧自行车,我也深表怀疑这辆能不能骑好

2020-12-04 21:07:54 202

转载 sort、sorted、OrderedDict 的比较

1、sort 与 sortedpython对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。sort函数和sorted函数唯一的不同是,sort是在容器内排序,sorted生成一个新的排好序的容器。对于一个简单的数组 L=[5,2,3,1,4].L.sort()sorted(…)sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list其中:iterable:待排序

2020-12-04 20:59:13 143

原创 list 的排序介绍

1、list 基础排序In[2]:aList = [4, 5, 1, 2, 12, 34, 56, 9 ,80]aList.sort() #默认按升序排列print(aList)Out[3]:[1, 2, 4, 5, 9, 12, 34, 56, 80]In[4]:aList.sort(reverse=True) #按降序排列print(aList)Out[5]:[80, 56, 34, 12, 9, 5, 4, 2, 1]2、list 嵌套排序# 方法1In[

2020-12-04 20:54:16 939

原创 time、datetime、string转换

import datetime as dtimport time as tm# 把 datetime 转成字符串 def datetime_to_string(dt): return dt.strftime("%Y-%m-%d-%H") # 把字符串转成 datetime def string_to_datetime(dt_str): return dt.datetime.strptime(dt_str, "%Y-%m-%d-%H") # 把字符串转

2020-12-04 20:49:53 172

原创 读写数据库不出现乱码的方法

一般数据库编码多是 utf8 之类,大多数情况下,指定用 utf8 就能解决问题。具体方法是:1、Python 代码文件开头设置编码 utf-8```# 熟悉的开头代码# -*- coding: utf-8 -*-```2、设置Python的默认编码为 utf-8```sys.setdefaultencoding(utf-8)```3、读取数据库时将编码参数指定为 utf8```# 读取时参数 charset 指定为utf-8conn = pymysql.connect(h..

2020-12-04 20:47:04 130

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除