《金融计算:基于Python》 课件 第1、2章-金融数据及Python环境、Python科学计算_第1页
《金融计算:基于Python》 课件 第1、2章-金融数据及Python环境、Python科学计算_第2页
《金融计算:基于Python》 课件 第1、2章-金融数据及Python环境、Python科学计算_第3页
《金融计算:基于Python》 课件 第1、2章-金融数据及Python环境、Python科学计算_第4页
《金融计算:基于Python》 课件 第1、2章-金融数据及Python环境、Python科学计算_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

金融计算:基于Python

第1章 金融数据及Python环境【教学目的与要求】通过本章学习,结合习近平新时代中国特色社会主义经济思想,讲授金融数据来源、类型,及金融计算Python语言及环境。【重点和难点】JupyterNotebook数据分析平台【思政育人目标】将习近平新时代中国特色社会主义经济思想融入到JupyterNotebook数据分析平台的学习中。【课程学习目标】了解金融数据来源、类型,熟悉掌握JupyterNotebook、Python语言及环境。金融计算:基于Python2主要内容1.1.金融数据来源及类型1.2.Python环境1.3.JupyterNotebook数据分析平台1.4.金融计算编程基础金融计算:基于Python31.1.金融数据来源及类型1.1.1.金融数据来源金融数据的来源主要有付费数据源和开源数据源。付费数据源包括彭博终端、路透终端、万得资讯等,这些付费数据终端几乎能够满足所有需求,但费用过于昂贵,只适合机构使用。开源数据源是学生广泛使用的数据来源。金融计算:基于Python4.宏观经济开源数据源宏观经济开源数据源包含国民收入支出,通货膨胀,就业,银行业和利率等数据,一般地可从国家统计局和央行获取。国际货币基金组织中国国家统计数据库美国联邦储备系统美国财政部数据……金融计算:基于Python5. 价格开源数据源雅虎财经1forge数据平台Ivolatility上海证券交易所深圳证券交易所金融计算:基于Python61.1.2. 金融数据类型金融数据可以分成原始文件数据、市场价格数据、其他数据与二次数据等四种类型。.原始文件数据原始文件数据可以在监管文件和商业分析报告当中获得,主要是季度报告的数据。.市场价格数据市场价格数据描述了在交易所(例如上海证券交易所)或交易平台(例如提供金融机构使用的债券电子竞价交易平台MarketAxess)中发生的所有交易活动。金融计算:基于Python7.其他数据其他数据包括个体数据(社交媒体、新闻、网络搜索等)、业务流程数据(交易、公司数据、政府机构等)。.二次数据二次数据是根据原始文件数据、市场价格数据、其他数据进行处理分析而得到的衍生数据,数据分析的价值并不来自信息概念有多新颖,也不是信息源有多么地独特,而在于其获得和处理的方式。金融计算:基于Python81.2.Python环境1.2.1.Python简介Python的官方网站为/,在该网站可以下载Python软件和许多程序包,以及有关Python的资料。金融计算:基于Python91.2.2. Python特色Python是一个结合了解释性、编译性、互动性和面向对象高层次的脚本语言,设计具有很强的可读性。第一,Python是解释型语言,即开发过程中省略了编译这个环节;第二,Python是交互式语言,即可以在Python提示符下直接互动编写、执行程序。第三,Python是面向对象语言,即Python支持面向对象的风格或代码封装在对象中的编程技术。第四,Python更适合初学者学习的语言,Python支持从简单的文字处理→WWW浏览器→游戏等广泛的应用程序开发。金融计算:基于Python101.2.3. Python优点.简单易学.开源免费.兼容性.面向对象.效率更高.丰富的库.规范的代码.可扩展性金融计算:基于Python111.2.4. Python编程环境Python是面向对象的编程语言,需要我们不仅熟悉命令的操作,还须熟悉DOS编程环境。可以在Python官网下载最新版本。本书采用基于Anaconda的Jupyter平台进行金融计算。Anaconda个人版是世界上最受欢迎的Python发行平台,超过7500个数据科学和机器学习包。使用conda-install命令,可以安装数千个开源Conda、R、Python和许多其他软件包。在全球拥有超过2000万用户。进入网址/products/individual即可下载Anaconda64-Bit或32-Bit版本(本书采用的是Anaconda64-Bit),建议下载Python3.8及以上版本。金融计算:基于Python121.3.JupyterNotebook数据分析平台1.3.1.JupyterNotebook简介JupyterNotebook是一个交互式笔记本,支持运行包括Python、R、Julia和Scala等40多种编程语言。JupyterNotebook允许用户创建和共享各种内容,包括实时代码、方程式、可视化和叙述文本的文档。它的用途包括:数据清理和转换、数值模拟、统计建模、数据可视化与机器学习等。1.3.2. Jupyternotebook启动三种方式金融计算:基于Python131.3.3. 设定工作目录设置当前运行路径是金融计算基础的工作之一。Jupyternotebook默认的工作目录是C:\Users\Administrator,如果想修改工作文件夹或目录:方法一是可以在终端执行cd或cd-或cd~或cd/Users/<user_name>,此命令会进入到指定的目录。“<user_name>”是用户名。用户名两边不加尖括号“<>”。如cdG:\python-1(在G盘上已经建立了该文件夹);方法二是在Jupyternotebook主页面下进行操作。金融计算:基于Python141.3.4.基本操作工具栏的使用比较直观简单,在此特别说明的是“单元格的状态”有Code、Markdown、RawNBconvert、Heading。最常用的是代码状态和Markdown编写状态。JupyterNotebook已经取消了Heading状态,即标题单元格。取而代之的是Markdown的一级至六级标题。而RawNBconvert目前极少用到。

重命名在使用JupyterNotebook时,可以直接在其内部进行重命名。在左上方“Jupyter”的图标旁有程序默认的标题“Untitled”,点击“Untitled”然后在弹出的对话框中输入自拟的标题,点击“Rename”即完成了重命名。金融计算:基于Python15

数据读取为了读取本地csv文件,我们需要pandas这个数据分析库中的相应模块。其中的read_csv函数能够读取本地和web数据。读取本地数据:金融计算:基于Python161.3.5.常用快捷键单击【New】可建立Jupyternotebook文档文本,文档默认为Untitled.ipynb,就可以用Python3进行金融计算和分析。也可先建文件夹,再建文档。编写文档时,cell类型分成markdown和code,可任意切换;科学计算和画图时,numpy、scipy、pandas等包以前的版本需要安装方能使用,现在不用安装了。金融计算:基于Python171.3.6.字体对于非斜体的罗马文本,请使用\textrm{Roman}或\rmRoman:\large\textrm{Roman}或\large\rmRoman要更改字体大小:\rm\tinytiny\TinyTiny\smallsmall\normalsizenormal\largelg\LargeLg\LARGELG\hugehg\HugeHg金融计算:基于Python181.4.金融计算编程基础1.4.1.Python金融计算相关的程序包Python官方网站提供了282622个扩展库,包含丰富的数据分析模块,从衍生品定价到量化交易的金融计算可使用Python强大的数据分析功能。只有当一个包被安装并被载入(import)时,它的内容才可以被访问。一是为了提交编程效率(完整的列表会耗费大量的内存并且增加搜索的时间);二是为了帮助包的开发者,防止命名和其他代码中的名称冲突。由于Anaconda发行版已安装常用的数据分析包,所以我们只要调用即可。金融计算:基于Python191.4.2. Python数据管理由于Python数据管理的缺陷,其自带的数据管理器管理不方便,因此,要用好Python,就需要将Python与Excel等电子表格进行结合,发挥各自的优点,达到事半功倍的效果。金融计算:基于Python20库名说明xlwings深度整合Python和Excelopenpyxl读取/写入Excel2007、xlsx/xlsm文件xlrd从Excel电子表格提取数据xlsxwriter将数据写入Excel电子表格xlwt创建跨平台和向后兼容的电子表格DataNitro深度整合Python和Excel,可免费试用,商业付费软件xlloop创建Excel用户自定义函数expyExcel插件,允许用户从电子表格中执行Python代码和定义自定义函数pyxllExcel插件,从Excel中执行Python代码金融计算:基于Python21金融计算:基于Python

第2章Python科学计算【教学目的与要求】通过本章学习,结合习近平新时代中国特色社会主义经济思想,讲授Python的投资组合收益率和风险计算、最优投资组合的计算。【重点和难点】Python的最优投资组合的计算。【思政育人目标】将习近平新时代中国特色社会主义经济思想融入到Python的的投资组合收益率和风险计算、最优投资组合的计算的学习中。【课程学习目标】掌握Python的投资组合收益率和风险计算、最优投资组合的计算。金融计算:基于Python23主要内容2.1.Python的数据类型2.2.数值分析库numpy2.3.数据分析库pandas金融计算:基于Python242.1. Python的数据类型2.1.1Python对象python使用对象模型来存储数据,构造任何类型的值都是一个对象。对象可以是变量、数组、字符串、函数或结构。在Python中,对象是通过名字创建和保存的,都拥有三个特性:身份、类型、值。身份:每个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内置函数id()来得到。类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以使用type()函数查看python对象的类型。type()返回的是对象而不是简单的字符串。金融计算:基于Python252.1.2 Python数据的类型Python定义了一些标准类型,用于存储各种类型的数据。Python有五个标准的数据类型:Numbers(数字)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)。金融计算:基于Python262.1.3 Python数据类型转换内置的函数可以执行数据类型之间的转换,这些函数返回一个新的对象,表示转换的值。金融计算:基于Python27函数描述int(x[,base])将x转换为一个整数long(x[,base])将x转换为一个长整数float(x)将x转换到一个浮点数complex(real[,imag])创建一个复数str(x)将对象x转换为字符串repr(x)将对象x转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s)将序列s转换为一个元组list(s)将序列s转换为一个列表set(s)转换为可变集合dict(d)创建一个字典。d必须是一个序列(key,value)元组。frozenset(s)转换为不可变集合chr(x)将一个整数转换为一个字符unichr(x)将一个整数转换为Unicode字符ord(x)将一个字符转换为它的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串属性说明ndarray.ndim秩,即轴的数量或维度的数量ndarray.shape数组的维度,对于矩阵,n行m列ndarray.size数组元素的总个数,相当于shape中n*m的值ndarray.dtypendarray对象的元素类型ndarray.itemsizendarray对象中每个元素的大小,以字节为单位ndarray.flagsndarray对象的内存信息ndarray.realndarray元素的实部ndarray.imagndarray元素的虚部ndarray.data包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性2.2. 数值分析库numpynumpy提供了Python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。使用importnumpyasnp将numpy库加载到内存中。金融计算:基于Python282.2.1.numpy.函数().ndim:维度,就是[]括号的层数;.shape:各维度的尺度,注意(x,y)表x行y列,(x,1)表x行1列,(y,)表1行y列;.size:元素的个数。与元素位于第几层[]无关,表所有独立的元素的总数;.dtype:元素的类型dtype(‘int32’);.itemsize:每个元素的大小,以字节为单位,每个元素占4个字节。金融计算:基于Python292.2.2. ndarray数组的创建np.arange(m,n):1行n-m列数组,元素从m到n-1;np.arange(n)或np.arange(n,):1行n列数组,元素从0到n-1.即不输入m,则默认m=0;np.ones((m,n)):m行n列数组,元素全为1;np.ones(n)或np.ones(n,):1行n列数组,元素全为1,即不输入m则默认m=1;np.zeros((m,n),dtype=32):生成int32型的全0,dtype参数可加可不加,上面几个语句也是一样;np.zeros((n,))或np.zeros(n,)或np.zeros((n))或np.zeros(n)默认m=1,1行n列数组注意np.zeros(m,n)会报错,np.zeros(shape)参数shape必须是坐标形式(x,y),带括号。np.full(shape,val):参数shape是坐标形式(x,y),元素全为val.若不输入x则默认x=1;np.eye(n):生成单位矩阵,默认m=n;金融计算:基于Python302.2.3. 数组的维度变换.reshape(shape):不改变数组元素,根据shape重新组织行列。如1行4列reshape为2行2列、4行1列。3行2列等不合理的,会报错。注意:三维数组维度顺序为0,1,2,即z,y,x,即深度、高度、宽度,即层数、行、列。例:a=np.arange(24).reshape((3,4,2)),表3层4行2列。金融计算:基于Python312.2.4. 数组的类型变换数据类型的转换:a.astype(new_type),a.astype(np.float),a.astype(float)。数组向列表的转换:a.tolist(),注意[]层数不会改变,例如三维数组变成列表后,[]依然保留,只不过没有数组行列形式了。金融计算:基于Python322.2.5.数组的素引和切片.一维数组索引.一维数组切片.多维数组素引.多维数组切片金融计算:基于Python332.2.6. 数组的简单运算np.abs(a)和np.fabs(a):取各元素的绝对值,fabs()取绝对值并使成为float类型。np.sqrt(a):计算各元素的平方根。np.square(a):计算各元素的平方。np.log(a)np.log10(a)np.log2(a):计算各元素的自然对数、10、2为底的对数。np.ceil(a)np.floor(a):计算各元素的ceiling值,floor值(ceiling向上取整,floor向下取整)。np.rint(a):各元素四舍五入。对于负数元素,先取其绝对值进行四舍五入,然后再加负号。例如-1.5变成-2,-1.4变成-1np.modf(a):将数组各元素的小数和整数部分以两个独立数组形式返回。np.exp(a):计算各元素的指数值。np.sign(a):计算各元素的符号值1(+),0,-1(-)。np.maximum(a,b)或np.fmax():a,b数组具有相同的形式,一一比较相应位置处的元素取大者,fmax()取最大值并使成为float类。np.minimum(a,b)或np.fmin():同上,取最小值。a,b形式不同,则会报错。金融计算:基于Python342.2.7.数据存取,存储到bxt文件.存储到.npy文件.存储到.npz文件.多维数据存取金融计算:基于Python352.2.8. numpy随机数函数注意numpy.random子库和独立的random库不是同一个库。numpy.random子库主要产生随机数作为多维数组的元素,而random独立库单纯产生随机数,因此二者尽管有很多同名的随机数产生方式,但numpy.random一般会多一个shape数组维度参数np.random.rand(d0,d1,…,dn):d0到dn指定各维度结构,如rand(3,4,5)表3层4行5列三维数组。各元素是[0,1)的浮点数,服从均匀分布np.random.randn(d0,d1,…,dn):d0到dn含义同上。元素服从标准正态分布。np.random.randint(d0,d1,…,dn):d0到dn含义同上。元素服从t分布。randint(low,high,shape):依shape创建随机整数或整数数组,范围是[low,high)。金融计算:基于Python362.2.9. numpy的统计函数sum(a,axis=None):依给定轴axis计算数组a相关元素之和,axis为整数或者元组。mean(a,axis=None):同理,计算平均值。average(a,axis=None,weights=None):依给定轴axis计算数组a相关元素的加权平均值。std(a,axis=None):同理,计算标准差。Var(a,axis=None):计算方差。注意:以上axis参数可选0,1,2表示分别在相应方向上操作。如果不填,则表示对数组中全部元素操作。金融计算:基于Python372.2.10.图像的表示和变换图像实际是一个二维数组,numpy结合pythonPIL(pythonimagelibrary)库常使用与图像处理fromPILimportImage#Image是PIL库中代表一个图像的类(对象)im=np.array(Image.open(“.jpg”))im=Image.fromarray(b.astype(‘uint8’))#生成im.save(“路径.jpg”)#保存im=np.array(Image.open(“.jpg”).convert('L'))#convert(‘L’)表示转为灰度图金融计算:基于Python382.2.11. 数组的运算numpy.dot()函数用于数组相乘,使用dot()函数的写法,有两种:dot()函数可以通过numpy库调用,也可以由数组实例对象进行调用。a.dot(b)与numpy.dot(a,b)#a,b是数组(矩阵)dot()返回的是两个数组的点积(dotproduct)若a和b是一维数组,则得到的是两数组的內积(innerproduct)金融计算:基于Python392.3. 数据分析库pandaspandas含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具,虽然pandas采用了大量的NumPy编码风格,但pandas是专门为处理表格和混杂数据设计的,而NumPy更适合处理统一的数值数组数据。使用importpandasaspd将pandas库加载到内存中。金融计算:基于Python402.3.1. pandas数据结构pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。pandas的数据结构:Series:一维数组,与Numpy中的一维ndarray类似。Time-Series:以时间为索引的Series。DataFrame:二维的表格型数据结构,可以理解为Series的容器。Panel:三维的数组,可以理解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论