二、常用函数

(一)读写文件

(1)创建单位矩阵(主对角线元素均为1,其余元素均为0)

i5 = eye(5)

注:eye()函数

numpy.eye(N,M=None, k=0, dtype=<type ‘float‘>)

关注第一个第三个参数就行了

第一个参数:输出方阵(行数=列数)的规模,即行数或列数

第三个参数:默认情况下输出的是对角线全“1”,其余全“0”的方阵,如果k为正整数,则在右上方第k条对角线全“1”其余全“0”,k为负整数则在左下方第k条对角线全“1”其余全“0”。

(2)写文件 savetxt函数

savetxt("eye.txt",i5)

(3)读文件 loadtxt

i = loadtxt(‘eye.txt‘)

(二)读入csv文件

股价数据存储在CSV文件中,第一列为股票代码以标识股票(苹果公司股票代码为AAPL),第二列为dd-mm-yyyy格式的日期,第三列为空,随后各列依次是开盘价、最高价、最低价和收盘价,最后一列为当日的成交量。以下为"data.csv"文件的一行数据:

AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800

读csv文件,我们将收盘价和成交量分别载入到两个数组中:loadtxt()函数

c,v = loadtxt(‘data.csv‘,delimiter=‘,‘,usecols=(6,7),unpack=True)

delimiter:分隔符设置为","

usecols:参数为一个元组,以获取第7,8列数据

unpack:参数设置为True,分拆存储不同列的数据,即分别将收盘价和成交量的数组赋值给变量c和v

(三)平均数

(1)成交量加权平均价格(VWAP)

VWAP (Volume-Weighted Average Price,成交量加权平均价格)是一个非常重要的经济学量,
它代表着金融资产的“平均”价格。某个价格的成交量越高,该价格所占的权重就越大。 VWAP
就是以成交量为权重计算出来的加权平均值,常用于算法交易。

例:

股票A,1000股,价格10;

股票B,2000股,价格15;

算术平均值 = (10 + 15) / 2 = 12.5;

加权平均值 = (10 * 1000 + 15 * 2000) / (1000 + 2000) = 13.33

c,v = loadtxt(‘data.txt‘,delimiter=‘,‘,usecols=(6,7),unpack=True)

vwap = average(c,weights=v)

(2)平均数

mean_c = mean(c)

(3)时间加权平均价格

在经济学中, TWAP(Time-Weighted Average Price,时间加权平均价格)是另一种“平均”
价格的指标。既然我们已经计算了VWAP,那也来计算一下TWAP吧。其实TWAP只是一个变种
而已,基本的思想就是最近的价格重要性大一些,所以我们应该对近期的价格给以较高的权重。
最简单的方法就是用arange函数创建一个从0开始依次增长的自然数序列,自然数的个数即为收
盘价的个数。当然,这并不一定是正确的计算TWAP的方式。事实上,本书中关于股价分析的大
部分示例都仅仅是为了说明问题。计算TWAP的代码如下。

t = arange(len(c))

twap = average(c,weights=t)

(四)极值,极差

读取数据,将每日的最高价和最低价分别载入数组

h,l = loadtxt(‘data.csv‘,delimiter=‘,‘,usecols=(4,5),unpack=True)

(1)最大值max():每日最高价的最大值

highest = max(h)

(2)最小值min():每日最低价的最小值

lowest = min(l)

(3)极差ptp():

最高价的极差:

spread_high_price = ptp(h)

等价于:spread_high_price = max(h)-min(h)

(五)简单统计分析

(1)收盘价中位数median()

c = loadtxt(‘data.csv‘,delimiter=‘,‘,usecols=(6,),unpack=True)

c_median = median(c)

(2)方差var()

c_variance = var(c)

(六)股票收益率

(1)简单收益率:diff(),std()

NumPy中的diff函数可以返回一个由相邻数组元素的差
值构成的数组。这有点类似于微积分中的微分。为了计算收益率,我们还需要用差值除以前一天
的价格。不过这里要注意, diff返回的数组比收盘价数组少一个元素:

returns = np.diff( c ) / c[ : -1]

注意,我们没有用收盘价数组中的最后一个值做除数。接下来,用std函数计算标准差:
print "Standard deviation =", np.std(returns)

(2)对数收益率:log(),diff()

先用log函数得到每一个收盘价的对数,再对结果使用diff函数即可。

logreturns = np.diff( np.log(c) )

(3)筛选收益率为正值的元素,where()

posretindices = np.where(returns > 0)

(4)波动率:

在投资学中,波动率(volatility)是对价格变动的一种度量。历史波动率可以根据历史价
格数据计算得出。计算历史波动率(如年波动率或月波动率)时,需要用到对数收益率。年波动
率等于对数收益率的标准差除以其均值,再除以交易日倒数的平方根,通常交易日取252天。我
们用std和mean函数来计算,代码如下所示:

annual_volatility = np.std(logreturns)/np.mean(logreturns)
annual_volatility = annual_volatility / np.sqrt(1./252.)
print annual_volatility

注意:sqrt使用浮点数,得到的结过才是正确的,为浮点数

(七)分析日期数据

dates, close=np.loadtxt(‘data.csv‘, delimiter=‘,‘, usecols=(1,6), unpack=True)

执行以上代码后会得到一个错误提示:

ValueError: could not convert string to float: b‘28-01-2011‘

NumPy尝试把日期转换成浮点数。按照如下步骤处理日期:

(1)日期转换函数

我们需要做的是显式地告诉NumPy怎样来转换日期,需要用到loadtxt函数中的一个特定的参数converters,

它是一本数据列和转换函数之间进行映射的字典。

  • 重新定义datestr2num()函数:

def datestr2num(s):

  s = str(s,‘utf-8‘)

  return datetime.datetime.strptime(s,"%d-%m-%Y").date().weekday()

  • 将日期函数挂上去:

dates,close = loadtxt(‘data.csv‘,delimiter=‘,‘,usecols=(1,6),converters={1:datestr2num},unpack=True)

  • 创建一个包含5个元素的数组,分别代表一周的5个工作日。数组元素将初始化为0。

averages = np.zeros(5)

  • 遍历0到4的日期标识,或者说是遍历星期一到星期五,然

后用where函数得到各工作日的索引值并存储在indices数组中。在用take函数获取这些索引值
相应的元素值。最后,我们对每个工作日计算出平均值存放在averages数组中。

for i in range(5):
indices = where(dates == i)
prices = take(close, indices)
avg = mean(prices)
print("Day:%d,prices:%s,Average:%f"%(i,prices,avg))
averages[i] = avg

时间: 2024-10-18 10:42:19

二、常用函数的相关文章

初识PHP(二)常用函数

在此记录一些常用库函数和常用语法以便查阅 一.PHP手册 php手册中文地址 http://php.net/manual/zh 二.一些常用操作 2.1字符串操作 2.1.1 strpos — 查找字符串首次出现的位置 mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 返回 needle 在 haystack 中首次出现的数字位置. haystack 在该字符串中进行查找. needle 如果 needl

【COCOS CREATOR 系列教程之二】脚本开发篇&事件监听、常用函数等示例整合

[Cocos Creator ](千人群):  432818031 上一篇,介绍了Himi在使用过cc所有组件后的一篇总结,没有具体介绍每个组件的原因在于官方文档很齐全,而且也有视频的介绍. 所以希望童鞋们可以把我这两篇博文当成对组件.脚本两部分开发的整理与总结. 后续的文章,Himi应该主要更新一些官方还未补充或者还没有的教程.避免无用功. 下面直接放出代码,因为不是很难理解.所以不再一一赘述,都是常用的函数.事件监听.动作回调.定时器等开发过程中必接触的. 大致内容如下: cc 属性介绍 获

乐哥学AI_Python(二):Numpy索引,切片,常用函数

Numpy的索引和切片 ndarray对象的内容可以通过索引和切片查看和修改. 索引:ndarray对象中的元素索引基于0开始 切片:对数组里某个片段区域的描述 数组的切片也可以理解为原始数组的局部视图,都是指向内存中的原始数组,所以不同于列表复制,切片上的修改都会直接反映到原始数组上. 索引切片的实例代码演示: Numpy常用函数的代码演示: Numpy的置换函数transpose.T和swapaxes演示与区别 T适用于一.二维数组 arr = np.arange(12).reshape(3

PHP 常用函数总结(二)

4.PHP处理数据库的常用函数. 汇总表 PHP 5 MySQLi 函数 函数 描述 mysqli_affected_rows() 返回前一个 Mysql 操作的受影响行数. mysqli_autocommit() 打开或关闭自动提交数据库修改功能. mysqli_change_user() 更改指定数据库连接的用户. mysqli_character_set_name() 返回数据库连接的默认字符集. mysqli_close() 关闭先前打开的数据库连接. mysqli_commit() 提

javascript 常用函数(二)

/***javascript 常用函数**/function each( object, callback ) { if ( undefined === object.length ){ for ( var name in object ) { if (false === callback( object[name], name, object )) break; } } else { for ( var i = 0, len = object.length; i < len; i++ ) {

vbs脚本基础编程(之二)-----VBS常用函数与正则表达式

1.常用函数: asc(s)      返回s内第一个字母对应的ASCII码 chr(51)   将数字返回对应的字符 cbool()    返回表达式的boolean值 cByte()    将表达式转换为byte子类型的variant cCur()     将表达式转换为currency cdate()    将表达式转换为date cdble()    将表达式转换为double类型 cint()      转换为integer cLng()     转换为long csng()     

sql server常用函数、常用语句

一.常用函数 1.字符串函数 : charindex(':','abc:123')    --寻找一个字符在一段字符串中起始的位置 len('zhangsan')   --获取一段字符串的长度 left('Ly,君子之耀',2) --从一段字符串左边返回指定长度的字符 right(char_expr,int_expr)  --返回字符串右边int_expr个字符 substring(expression,start,length) --截取字符串 datalength(Char_expr)  -

2015-8-25-关于后端的知识以及常用函数整理

首先结构一般是分为B/S(Browser/Server)和C/S(Client/Server)的,我们所用的是基于B/S结构的. 其中这里的B主要是一些控件的组成的页面,主要是由JScript控制的, 其中的S主要是由SSL代码控制的,又分为Server Script和Data Sources,首先来说说两者的一些区别(Server Script用SS代替,Data Sources用DS代替): 对于我们这个LIMS系统来说,最常用的操作就是对数据库的增.删.改.查,其中的“查”,也就是从数据库

c++中string的常用函数说明

string可以说是是字符数组的升级版,使用更加啊方便,不容易出错.本文对string的常用函数进行简单介绍,做到会用即可. string中的常用函数分为四类,即赋值,添加,比较和删除. 一.赋值 1.str="adf" 2.str.assign("adf");str.assign(str1);//将括号中的字符串赋值给str: str.assign(str1,1,4);//将str1的1-4赋值给strs: str.assign(5,'a');//将五个a赋值给s

[独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数

本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table.View [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure.function.Sequence [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Curs