金融数据分析-以Python为工具 课件全套 胡文彬 1-12 金融数据分析概览-个人贷款信用风险评估_第1页
金融数据分析-以Python为工具 课件全套 胡文彬 1-12 金融数据分析概览-个人贷款信用风险评估_第2页
金融数据分析-以Python为工具 课件全套 胡文彬 1-12 金融数据分析概览-个人贷款信用风险评估_第3页
金融数据分析-以Python为工具 课件全套 胡文彬 1-12 金融数据分析概览-个人贷款信用风险评估_第4页
金融数据分析-以Python为工具 课件全套 胡文彬 1-12 金融数据分析概览-个人贷款信用风险评估_第5页
已阅读5页,还剩192页未读 继续免费阅读

下载本文档

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

文档简介

Python金融数据分析金融数据分析概览Chapter01金融数据分析概览1课程概览2金融科技3什么是数据分析?4金融数据5金融数据分析的挑战6课后作业课程概览随着大数据、人工智能、区块链、云计算等信息技术的发展,金融与技术的结合变得越来越广泛深入,金融科技将成为全球数字经济发展的核心驱动。顺应时代发展的潮流,国家出台了一系列促进金融科技发展的规划和政策。在此背景下金融数据分析变得越来越重要。课程概览金融科技金融科技即技术驱动的金融创新,是指由大数据、区块链、云计算、人工智能等新兴前沿技术驱动,对金融市场以及金融服务业务供给产生重大影响的新兴业务模式、新技术应用、新产品服务等。

金融科技数字金融是指通过互联网及信息技术手段与传统金融服务业态相结合的新一代金融服务。数字经济是指以使用数字化的知识和信息作为关键生产要素、以现代信息网络作为重要载体、以信息通讯技术的有效使用作为效率提升和经济结构优化的重要推动力的一系列经济活动。相关政策文件及研报《第十四个五年规划和2035年远景目标纲要》《“十四五”数字经济发展规划》《中国人民银行:金融科技发展规划(2022-2025年)》《毕马威2023中国金融科技企业首席洞察报告》《艾瑞咨询:2023年中国银行业数字化转型研究报告》《艾瑞咨询:2023年中国供应链金融数字化行业研究报告》《长江证券:深度解析大模型在金融行业的应用及前景》课程概览教材结构什么是数据分析?数据分析(DataAnalysis)是一个对数据进行检查、清洗、转换和建模的过程,其目的是从数据中发现有用的信息,得出结论并为最终决策提供建议。狭义的数据分析偏重对小数据集的历史信息提取、展现和规律总结,而广义的数据分析还包括数据挖掘。数据挖掘是运用统计、机器学习等理论建立模型,从大数据集中进行模式识别和知识发现的过程。什么是数据分析?什么是数据分析?数据是金融科技的核心,围绕数据这个核心,衍生出数据采集(物联网)、管理(区块链)、分析挖掘(云计算、人工智能)等一系列的金融科技应用。金融数据什么是数据分析?金融领域的数据可以细分为:宏观经济数据、金融市场数据、金融机构数据、企业数据和个人数据。金融数据具有海量、高维度、低信噪比、时序性等特性。例如,金融中的预测股票的期望收益率问题,期望收益率的波动比已实现收益率的波动要小很多,因此数据的信噪比很低。金融数据分析的挑战数据孤岛个人隐私保护数据分析本身的挑战2021年被业界称为隐私计算规模化应用元年。隐私计算能够在保障数据安全的前提下,助力金融业数据流通,被主要应用于信贷风控、精准营销、反欺诈、移动支付人脸识别等场景。课后作业阅读以下金融科技相关政策文件及文献资料(包括但不限于),《中国人民银行:金融科技发展规划(2022-2025年)》《毕马威2023中国金融科技企业首席洞察报告》《艾瑞咨询:2023年中国银行业数字化转型研究报告》《艾瑞咨询:2023年中国供应链金融数字化行业研究报告》《长江证券:深度解析大模型在金融行业的应用及前景》(/p-70499251266781.html)课后作业回答以下问题:《金融科技发展规划(2022-2025年)》中金融科技发展的4个基本原则、6个发展目标、8项重点任务和5项保障措施分别是什么?金融科技发展现状如何,未来发展趋势有哪些?什么是数字化?以银行为代表的金融机构为什么要进行数字化转型?目前供应链金融发展中存在的主要问题有哪些?区块链在供应链金融中起什么作用?举几个大模型赋能金融行业的具体例子。Python金融数据分析金融数据分析流程Chapter02金融数据分析概览1

数据分析宏观流程2

数据分析微观流程3

数据样本及表示

3.1

基本术语

3.2

样本表示数据分析宏观流程数据分析宏观流程明确数据分析的目标和任务。准备数据分析的计算机语言或软件,本书中对应的是Python及集成开发环境Anaconda。各种炊具代表各种Python数据分析库或包。菜单中的菜肴代表的是各种数据分析的任务和结果展示,例如作为前菜的探索性数据分析、作为主菜的数据建模和模型评价、作为甜点的结论分析等。数据分析宏观流程食材代表的是金融数据,依赖于数据分析的目标和任务。菜肴的烹饪过程对应于数据分析的过程。珍藏佳酿代表数据分析得出的结论。数据分析微观流程数据分析微观流程1)数据读取。从数据文件、数据库等数据源读取数据,得到结构化的二维表数据。2)初步探索性分析。从纯数据抽象的角度(不含业务逻辑)了解数据集的大小、数据缺失、属性类别、数据分布等情况。3)特征工程。基于初步探索性分析的结果进行数据清洗、数据规范化、特征提取等预处理。数据分析微观流程4)探索性数据分析。得到规范的数据集后,在建模之前结合业务逻辑背景进行一些简单的统计分析。5)建模分析。包括数据建模、模型评估、模型预测等步骤,这通常是数据分析特别是数据挖掘的主要环节。模型可以分为业务逻辑模型和机器学习模型。6)结论分析及展示。对探索性分析和建模分析的结果进行总结,得出一些有用的规律和结论。数据样本及表示典型的结构化数据集是一张二维表,通常称为一个样本(sample)或数据集(dataset),从统计学的角度代表对随机总体的抽样。样本的每一行代表一条数据记录,称为示例(instance)或样品,样本的每一列代表样品在某一维度上的取值,称为样本的属性(attribute)。数据样本及表示样本的属性有时也会被称作特征(feature)、字段(field)或者变量(variable)。我们把拥有了标记信息的示例称为样例(example)。从回归的角度看,样本属性即自变量或解释变量,样本标记即因变量或被解释变量。二分类问题;多分类问题;回归问题。

数据样本及表示数据样本及表示根据不同的功能,样本可以被进一步分为训练集(trainingset)、验证集(validationset)和测试集(testingset)。

Python金融数据分析Python运行环境搭建Chapter03Python语言简介Python是一种跨平台、开源免费、面向对象的解释型高级编程语言。Python可以看成是介于Java、C++等适合大型软件开发的编程语言和Matlab、R等专注于数值计算或统计等特定领域软件之间的一种语言。因此,其既具备面向对象的大型软件开发能力,又能通过成千上万的扩展库深入到特定的专业领域中,是一种全能型的语言。为什么是Python?Python与金融数据分析

具体到金融数据分析,Python提供了金融数据获取、金融工具定价、量化投资、风险分析、时间序列分析等一系列的扩展包。据统计,GitHub上星星(star)数量排名前十的来开源量化投资项目中,有7个是基于Python的。国内常见的量化投资平台如聚宽、优矿、宽邦、米筐、掘金等都是基于Python语言。Python的安装方式纯Python,不推荐。Anaconda,数据分析任务的首选。是一个开源的生态系统,包括了Python本身、Python运行开发环境JupyterNotebook和Spyder,以及多个常用的Python扩展包(包括NumPy、SciPy、Pandas、Matplotlib、scikit-learn等),是Python金融数据分析的首选平台。Python+IDE,如:Python+PyCharm,不适合初学者。安装AnacondaAnaconda的安装步骤(操作系统为64位Win10):1)下载安装程序(清华镜像)2)检查已有Python环境3)运行安装程序4)添加环境变量5)验证安装是否成功命令功能pipinstallsome_packageconda/installsome_package在线安装名称为“some_package”的包pipinstallsome_package=1.0.1/condainstallsome_package=1.0.1在线安装some_package包,指定版本为1.0.1pipinstallsome_package.whl通过whl文件离线安装some_package包piplist/condalist列出当前已安装的所有包pipshowsome_package查看some_package包的版本等基本信息pipinstall--upgradesome_packagecondaupdatesome_package在线升级some_package包pipuninstallsome_packagecondaremovesome_package卸载some_package包condaupdateconda升级condacondaupdateanaconda升级anaconda(先要升级conda)Python的包管理国内镜像源阿里云:/pypi/simple/豆瓣:/simple/清华大学:/simple/中国科学技术大学/simple/华中理工大学:/山东理工大学:/例如:pipinstallsome_package–i/simplePython金融数据分析JupyterNotebook简介及使用Chapter03JupyterNotebookJupyterNotebook是一个基于网页的交互式应用程序,适用于代码编写、执行,以及对代码和运行结果的记录和分享。JupyterNotebook的功能类似于一个强大的笔记本,用于程序中所有可见内容,包括计算的输入和输出、解释性文本、数学、图像的富媒体表示。JupyterNotebook通过JupyterNotebook,我们可以非常直观地观察到程序的代码和中间的运行结果,并且在多次运行不同的代码时,这些结果始终可见并且可以保存。这个最大的特色使得它对于初学者非常友好,同时也非常适用于金融数据分析及结果展示。安装及启动Anaconda已经自动安装了JupterNotebook,直接用相应快捷方式或者在终端命令窗口输入“JupterNotebook”运行即可启动,用默认浏览器打开。JupterNotebook启动后会打开一个新的终端窗口,显示一系列notebook的服务器信息。如果没有自动打开浏览器,可以在终端窗口中找到相应的链接,手动复制到浏览器中运行。代码编写及运行JupiterNotebook的运行方式为分单元格运行,首先在菜单下方的工具栏中通过“+”按钮添加单元格,输入代码后点“运行”按钮(或用Shift+Enter)运行代码。一个单元格可以放置一条或者多条代码,具体由用户自己确定,非常灵活。多个单元格之间并不是相互独立的,运行结果会相互影响。Markdown简介Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。Markdown简介TXT:仅支持文字及简单的格式。Word:编辑功能丰富,所见即所得,但不够精确,调格式不方便,对公式、图片和文字的融合支持不好。Latex:一种高质量的排版系统,专为科技文献设计,效果好但相对学习门槛较高,非所见即所得。(类比C++)Markdown:轻量级,功能也很丰富,非所见即所得,支持HTML而且更简洁。(类比Python)JupyterNotebook菜单功能及常用快捷键分享和使用更改默认路径安装代码提示和格式化插件执行命令行魔法命令JupyterNotebook总结Python金融数据分析基础数据包—PandasChapter04Pandas简介Pandas(官网:/)是Python的核心数据分析库,其名称来自于PanelDataAnalysis(面板数据分析)。Pandas提供了序列型Series和二维标签数据DataFrame这两种主要的数据结构类型。这两种类型都是基于NumPy数组扩展而来,因此Pandas天生具备NumPy的计算优势。Pandas简介Pandas的强大体现在其丰富的二维数据操作支持,可以将Pandas类比为编程语言中的Excel。Pandas提供了数据存取、清洗和规范化、分组聚合、数据统计、重构透视、可视化等一系列的功能支持。DataFrame基本操作其他IO操作DataFrame.to_csv(path_or_buf=None,sep=',',columns=None,header=True,index=True,encoding=None)path_or_buf设置包括文件名的文件路径;sep指定文件的分隔符,默认为逗号;columns指定需要存储的列;header设定是否将列名存为表头;index设置是否存储索引;encoding指定文件编码格式,当文件中含有中文时建议显式指定编码格式(例如utf-8或GBK),读取文件时用相同的编码格式读取。DataFrame数据操作(1)关于axis的理解。

轴代表数据的某一维度,例如DataFrame有两个维度,有0和1两个轴,其中0轴代表最高维度。

在DataFrame或二维数组中,axis=0代表跨行操作,axis=1代表跨列操作。(2)df[‘some_col’]返回的是Series,df[[‘some_col’]]返回的是DataFrame,根据需要选择。(3)对列进行索引的标准形式是df[‘some_col’](方括号索引),简化形式是df.some_col(属性索引),两者通常等价。Python金融数据分析基础数据包—MatplotlibChapter04Matplotlib简介Matplotlib(官网:/)是一个Python的常用绘图库,其绘图的操作风格非常类似于Matlab。通过Matplotlib可以快速地绘制折线图、散点图、柱状图、饼图、直方图、等高线图、条形图、极坐标图、箱线图、雷达图、热力图等二维平面图,还可以绘制三维图形,甚至是图形动画等。总结Python金融数据分析基础数据包—NumPyChapter04Python金融数据分析包在金融数据分析中,NumPy提供数据运算功能、Pandas提供数据分析功能、Matplotlib提供可视化功能,三者配合可以覆盖分析流程中的绝大部分操作。Python金融数据分析包NumPy简介NumPy中的基本对象是多维数组(ndarray)和矩阵(matrix),提供类似于Matlab的矩阵运算。用NumPy可以高效地进行包括数值、逻辑、排序、I/O、线性代数、统计、随机模拟等运算。NumPy中的数组运算有类似于Matlab的向量化机制,因此其运算效率非常高。NumPy数组的基本操作有创建、访问、修改、变形、复制、数组运算等。基本操作说明数组创建可分为用构造函数直接创建和利用zeros()等特殊函数创建数组访问访问方式包括单下标索引、数组多下标索引、切片索引、条件索引等数组及元素修改可以对数组进行变形、复制等操作。元素修改在数组访问的基础上通过重新赋值进行数组运算包括标量和数组、数组和数组的逐点运算、函数对数组的逐点运算、数组和数组的广播运算以及数组和数组的矩阵运算等矩阵运算针对matrix类型,有矩阵的加、减、乘、求逆等运算NumPy简介课后作业网络教学平台Python金融数据分析金融数据获取Chapter05金融数据获取国家统计局TushareSuperMindKaggleTushare数据获取流程注册帐号,得到Token码。查看注意事项、平台接口说明。调用相应接口获取数据(DataFrame),有积分等级限制,但可以在本地运行。存储数据。SuperMind数据获取流程注册帐号。查看帮助–API文档–通用数据接口。调用相应接口获取数据(DataFrame),没有积分等级限制,但只能在平台环境中运行。操作或存储数据。Python金融数据分析特征工程Chapter07特征工程特征工程(featureengineering)是对原始数据进行表示的过程,目的是通过一系列的特征操作使数据适合后续的建模分析,提高数据分析的效果和模型的预测精度。数据和特征决定了机器学习的上限,而模型和算法只是在逼近这个上限。7.2特征与特征处理好的特征具有以下三个特点:可解释性从业务逻辑的角度该特征与所分析的问题或者预测的信息相关,并且从定性的角度很容易解释该特征对预测结果的影响。可获得性良好的特征应该使得绝大多数样本都有数据,缺失值越少越好。7.2特征与特征处理预测能力指从模型结果看,该特征对结果的预测精度有重要的影响,特征的预测能力越强越好。然而,预测能力和可解释性有可能是矛盾的。金融数据常见的属性种类类型说明例子操作数值型也称为连续型股票价格、财务指标、信用额度、GDP等归一化、标准化、函数变换、离散化、异常值处理、计算皮尔逊相关系数等无序类别型也称为标称性别、国籍、股票所属行业等分箱、编码、计算众数、列联相关系数、熵等有序类别型也称为序数学历、等级制成绩、年龄段计算中值、百分位数、秩相关系数等日期时间型日期和时间2021-01-01、202101012021-01-0109:00:00格式转换、计算时间差文本型文档或字符串股票研报、电子邮件等分词、关键词提取等文本处理特征处理数据清洗一致性检查重复值处理

重复行,相同数值列异常值处理异常值(outlier)也称为极端值(简称极值)或离群点,指连续属性中取值显著不同于整体数据的数值。异常值对于均值计算的结果影响很大,也可能会极大影响模型的结果数据清洗异常值处理标准差法、中位数法、分位数法、箱线图法缺失值处理样本存在缺失值(missingvalue)是一种比较常见的现象,可以分为逻辑缺失和物理缺失。数据物理缺失的机制又可以分为完全随机缺失、随机缺失和非随机缺失。特征变换不同的数值型属性往往具备不同的量纲,实际中往往需要对数据进行规范化。类别属性无法直接作为一些模型(例如回归模型)的变量,在建模前需要进行编码处理。此外,为了提高模型的性能,有时需要对连续属性进行离散化,以及对离散属性进行重新合并归类,统称为分箱(binning)处理。规范化

特征变换离散化属性离散化(discretization)通常指通过在数据的分布范围中加入切分点,将连续属性转化为有序类别型属性的过程。另一种形式为合并类别属性的一些取值,减少取值的种类。这两种形式离散化的共同特点为减少了属性的取值,相当于对属性进行了模糊化处理。等距分箱、等频分箱、数字特征分箱、聚类分箱特征变换编码尽管某些模型(例如决策树)可以直接处理类别属性,但类别属性通常无法直接用于大部分(例如回归、支持向量机、主成分分析等)模型。无论类别属性是原生的,还是经过离散化后得到的,通常需要进一步的编码(encoding)处理才能用于建模。序数编码、哑变量编码、One-hot编码哑变量编码示例行业银行100软件服务010酒店餐饮001医疗保健000编码与模型One-hot编码与哑变量编码的区别在于有多少种取值就引入多少个虚拟变量,即多了一个虚拟变量。为避免多重共线性问题,如果回归模型有截距项,则用哑变量编码;如果没有截距项,则用One-hot编码。特殊函数变换

特征选择特征选择(featureselection)是特征工程中的核心问题,指的是从原始数据中选出好的特征、过滤掉不好的或者冗余特征的过程。特征选择的目的是构建更加精简、准确、可解释性强的模型,从而避免过拟合并提高模型的泛化能力。经典的特征选择方法可以分为三大类:过滤法、封装法和嵌入法特征选择——过滤法过滤法(filterapproach)用方差、相关性、互信息、卡方检验等指标过滤掉不达标的属性。过滤法通常对应的是单属性分析,即每次只分析一个属性自身或者对标记属性的影响。方差法最简单,但使用过程中需要特别注意一些细节。相关性过滤指通过计算属性和标记属性之间的相关系数(见6.2.2节),舍弃掉相关系数低于阈值的属性。相关系数包括皮尔逊相关系数、秩相关系数、φ相关系数和V相关系数等。特征选择——过滤法互信息(mutualinformation)是一种衡量随机变量之间相互依赖程度的度量。互信息过滤指通过计算属性和标记属性之间的互信息,并舍弃掉互信息值低于阈值的属性。互信息的基本含义为:已知一个随机变量的信息后,给另一个随机变量带来的不确定性(即信息量)的减少量。

特征选择——过滤法

特征选择——过滤法

属性X标记属性Y1101111000特征选择——过滤法卡方检验法的基本思想是假设属性与标记属性之间相互独立,然后构建卡方指标对假设进行检验。如果拒绝原假设,则说明属性是有意义的,这与6.2.2节中考察变量间的列联相关系数的思想一致。方差分析法(ANOVA,analysisofvariance)适用于X为离散属性,标记属性Y为连续属性的情形。将Y根据X的取值进行分组,然后用F检验考察Y的不同分组间的均值和方差是否有显著差异。

特征选择——过滤法

连续属性离散属性连续标记属性离散标记属性方差法√

√√皮尔逊相关系数√

V相关系数

√√√√√互信息法√√√√卡方检验法

√方差分析法

√√

特征选择——封装法封装法(wrapperapproach)的基本思想是通过模型的最终效果指导特征的选择。简单来说,就是每次选取不同的特征子集构建模型,比较各种模型在测试集上的性能。封装法的难点在于如何搜索特征子集,通常采用的都是一些启发式算法,例如递归特征消除法。封装法以模型性能为导向,能够保证特征选择的效果。同时该方法与具体的模型独立,是一个普遍适用的方法。封装法的缺点是计算开销大,仅适用于属性较少的数据集。

特征选择——嵌入法

基于Python的特征工程Pandas

数据清洗、特征变换sklearn

特征变换、特征选择、特征提取基于Python的特征工程-要点掌握常见数据清洗函数

返回值、原地操作Pandas的特征变换主要通过transform或者apply函数进行Sklearn分步特征工程

数据集分割特征选择部分的操作了解即可Python金融数据分析数据建模分析Chapter088.1数据和模型的关系模型是数据分析的一种重要工具,用于表达数据规律。数据数据代表客观事实,其中隐含着规律。模型模型是对数据的抽象,通过定量化、结构化、系统化的语言来表达数据中隐含的规律。无法找到完美模型的原因数据噪声由于随机性和偶然性,加上采集、存储等数据管理流程中的误差,现实中的数据会受到噪声的影响。建模的简化需要模型本身需要很多的假设,这些假设中很多在现实中是无法满足的。假设是为了简化建模,排除干扰因素,更有利于抓住事物的本质。无法找到完美模型的原因3) 建模的目的建模的目的并不是要得到完美刻画现实的模型,而是一个足够准确但又足够简洁的模型。模型的表达需要可解释性和简洁性,这可能会牺牲一定的准确性。一个好的模型是准确性、可解释性和简洁性的平衡。8.2经典的金融模型我们把金融数据分析模型分为两类:基于金融理论的模型和基于数据驱动的模型。前者侧重对现有金融现象的描述和解释;后者侧重对未知数据的预测。通过金融模型解释金融市场中存在的各种金融现象、资产的特性、价值影响因素、价格变化规律等具有十分重要的意义。金融模型或金融理论提出的出发点并不一定是数据,更多的是金融现象,但在提出模型后仍然需要通过数据实证分析来检验其正确性。8.2经典的金融模型1) 投资组合理论

1952年由马科维茨提出,引发了“第一次华尔街革命”,荣获1990年的诺贝尔经济学奖。投资组合理论假设投资者以期望收益率和方差(或标准差)来评价单个证券或证券组合;投资者是风险厌恶的,在收益一定时追求风险最小化,在风险一定时追求收益最大化。在此前提下求解最优组合比例。8.2经典的金融模型

8.2经典的金融模型

8.2经典的金融模型4) 有效市场假说有效市场假说(EfficientMarketsHypothesis,EMH)是由法玛于1970年提出的关于证券市场价格行为的理论。该假说并没有用到精确的数学语言,但有助于对股票市场的描述和理解。此外,由于现实中投资者不会完全理性,有效的市场也不一定就是一直有效的,市场的无效或临时失效是使投资策略研究变得有意义的前提条件。8.2经典的金融模型

8.2经典的金融模型5) 三因子模型Fama因此获得了2013年的诺贝尔经济学奖,并且三因子模型被评选委员会肯定为金融学过去25年最重大的成就之一。Fama和French又在模型中加入盈利水平因子和投资水平因子,衍生出五因子模型。此外还有四因子、六因子等模型。Fama-French三因子模型的意义在于为多因素模型找到了具体能解释股票收益差异的因子。量化投资中最流行的多因子选股模型也是基于这个思想。8.3基于机器学习的数据建模机器学习机器学习是人工智能的一个分支,它致力于研究如何通过计算的手段,利用数据来建立并改善模型的性能。目前主流的机器学习是统计学习,而深度学习是机器学习中的一个热门方向。8.3基于机器学习的数据建模主流的机器学习方式是“从样例中学习”,即从训练样本中归纳出模型,具体可以分为监督学习、无监督学习和半监督学习。如果用于学习的数据具有标记信息,则称为监督学习,典型代表是回归和分类。如果学习过程中没有用到标记信息,则称为无监督学习,典型代表为聚类和降维。如果学习过程中用到部分样本的标记信息,则称为半监督学习。深度学习是从另一个角度描述。强化学习也是一种监督学习。8.3基于机器学习的数据建模机器学习是人工智能的核心,已经广泛地应用于经济生产和日常生活中。机器学习在机器人、无人驾驶、人脸识别、语音识别、自然语言处理、搜索引擎、证券投资、防欺诈、生物医学、天气预报、能源勘探、环境监测等方面都有广泛的应用。ChatGPT:GenerativePretrainedTransformance的核心是深度学习模型。机器学习的流程机器学习模型选择机器学习的流程特征工程特征工程中的某些步骤是不依赖于模型的,例如数据清洗、特征过滤等;而有些有些步骤是与具体的模型有关的,例如类别属性编码、特殊函数变换、特征选择的封装法和嵌入法等。如果模型有调整,则需要重新进行相应的特征工程。机器学习的流程样本划分该步骤将用于学习的样本划分为不相交的训练集、验证集和测试集,其中训练集和测试集是必须的,验证集主要用于超参数调参,根据需要划分。超参数指在建模前需要人为确定数值的参数,不直接依赖于训练数据,但会对结果产生影响。常见的样本划分方法有留出法、交叉验证法和自助法。模型性能评估在机器学习中评估模型性能的标准就是模型的泛化性能,指的是模型在不可见样本上的预测能力。对于回归问题,均方误差是常见的指标。对于分类问题,一个最直接的性能指标就是分类准确率。对二分类问题,机器学习中还有基于混淆矩阵的更强大的性能评估工具。混淆矩阵

真实情况预测结果正例反例正例TP(真正例)FN(假反例)反例FP(假正例)TN(真反例)ROC曲线

ROC曲线ROC曲线要绘制ROC曲线,我们只需要一个测试样本但要求模型能够给出连续的预测值,即所谓的“软预测”,而不是仅仅是0或1的“硬”预测。在得到每个样例的正例概率预测之后,设定一个阈值,将概率大于或等于阈值的样例划分为正例,其余划分为反例。这样每个阈值就会对应于一个混淆矩阵。当阈值从1逐渐减小到0时,就得到一系列的混淆矩阵,从而就得到一系列的(FPR,TPR)点对,对应于ROC曲线上的点。AUC

ROC曲线是评估模型性能的较客观的方法。曲线越靠近左上方,模型性能越好。我们把连接(0,0)点和(1,1)点的线段称为随机猜测线,一般模型的ROC曲线都位于随机猜测线上方。

为了更精确地比较模型性能,进一步引入AUC(areaunderROCcurve)指标,即ROC曲线包围的面积。AUC越大,则模型的性能越好,完美模型的AUC为1,随机猜测模型的AUC为0.5。性能评估例子如果取阈值为0.55,则样例1-6被划分为正例,7-10被划分为反例,样例2、6、9被误分类。样例12345678910真实标记1011100010预测值0.90.80.70.650.60.550.50.40.30.2性能评估例子

Python金融数据分析股票行情数据分析Chapter099.1股票K线分析概览股票数据的分析可以分为基本面分析和技术分析两大类。基本面分析宏观经济周期、金融市场环境、行业发展状况、公司发展前景。技术面分析假设市场行为反映了市场的所有因素的影响、市场价格呈趋势变动、历史会重演。股票历史行情数据K线技术分析经过200多年的演进,K线技术分析形成了具有完整形式和分析理论的一套方法。根据不同的情况,K线可能呈现光头(例如最高价等于收盘价的阳线,没有上影线)、光脚(例如最低价等于开盘价阳线,没有下影线)、光头光脚线、十字线(开盘价等于收盘价)、T字线、一字线等。K线技术分析案例本章将选择青岛啤酒(600600)从2007年1月4日到2008年12月31日的日线行情数据进行分析。首先进行探索性数据分析,再对数据用mplfinance包进行可视化展示,最后用TA-Lib包对数据进行K线形态识别。9.2探索性数据分析具体过程和结果见JupyterNotebook代码文件。9.3价格数据可视化

mplfinance(/matplotlib/mplfinance)是一个基于Matplotlib和Pandas构建的金融数据可视化Python包。其旧版本名称为mpl_finance。Anaconda中没有包含mplfinance,用户需要通过pipinstallmplfinance命令来安装。9.3价格数据可视化

mplfinance最重要的功能为基于股票(或其他金融工具)的行情数据绘制K线图。其典型的绘图结果包含上下两个子图,第一个子图为K线图,第二个子图为成交量图。mplfinance绘制K线图的函数主要有两个:plot()和make_addplot()。9.3价格数据可视化mplfinance中典型的绘图步骤为:importmplfinanceasmpfmpf.make_marketcolors()#设置绘图颜色mpf.make_mpf_style()#设置绘图风格mfp.plot()#绘图mpf.make_addplot()#添加额外的图9.3价格数据可视化1) mplfinance.plot(data,**kwargs,style,addplot)其中data设置绘图数据,为包含股票行情序列的PandasDataFrame对象,其索引为日期,至少包含“Open”、“High”、“Low”、“Close”、“Volume”这5列数据;kwargs是不定长参数,用于设置图形基本参数。9.3价格数据可视化2) mplfinance.make_mpf_style(marketcolors,gridaxis,gridstyle,y_on_right)该函数生成图形的风格对象,其返回值用于设置mplfinance.plot()函数的style参数,marketcolors通过make_marketcolors()生成:3) mplfinance.make_marketcolors(up,down,edge,wick,volume,inherit)9.3价格数据可视化4) mplfinance.make_addplot(data,type,panel=0,**kwargs)该函数用于向主图添加新的图形,例如在K线图中添加布林带线。具体过程和结果见JupyterNotebook代码文件。9.4技术指标计算及K线模式识别TA-Lib(TechnicalAnalysisLibrary,官网:/)是一个用于对金融市场数据进行技术分析的Python包,支持150多个技术指标的计算,如MA、MACD、RSI、布林带等,具体函数见表9-2。TA-Lib更强大的功能在于K线模式识别,即在历史行情数据中检测特定的K线形态,从而对交易决策提供指导。TA-Lib包的安装过程容易出错,建议使用TA-Lib的离线安装包进行安装。9.4技术指标计算及K线模式识别TA-Lib包的技术指标包括重叠指标、动量指标、成交量指标和波动性指标。TA-Lib包提供了一日到五日的多种K线形态的识别函数,这些函数的调用形式都是输入开、高、低、收四个价格序列(Series)。更多函数及用法见TA-Lib的帮助文档:https://mrjbq7.github.io/ta-lib/index.html及其GitHub网址:/mrjbq7/ta-lib。9.4技术指标计算及K线模式识别具体案例结果见JupyterNotebook代码文件。Python金融数据分析资本资产定价模型分析Chapter1010.1投资组合理论马科维茨的投资组合理论是经典的投资理论,被认为是现代金融学的开端。该理论的基本思想是利用不同资产间的相关性,通过配置最优的资产权重来分散化非系统性风险。投资组合理论利用证券收益率的均值刻画证券的期望收益,用收益率的方差来刻画风险。最优投资组合问题可以描述为:在期望收益一定的情况下,寻找使得投资组合风险最小化的资产配置权重。资产组合的风险分散化

资产组合的风险分散化

最优投资组合

最优投资组合

有效组合边界10.2资本市场线

10.3证券市场线

10.3证券市场线

10.4估计证券的β系数证券的β系数是一种评估证券系统性风险的工具,反映的是证券收益相对于市场组合收益变化的方向和敏感度。β系数为正说明该证券的价格变化方向跟市场组合的变化方向相同,负的β系数则说明该证券的价格变化方向跟市场组合的变化方向相反。市场组合本身的β系数为1。10.4估计证券的β系数

10.4估计证券的β系数

10.5具体案例分析具体案例结果见JupyterNotebook代码文件Python金融数据分析量化投资多因子模型分析Chapter1111.1量化投资简介量化投资是一种以数据为基础、以策略模型为核心、以程序化交易为手段的投资方法。量化投资摒弃了传统的完全依赖投资者的经验和直觉的投资方式,而是将投资者的投资思想、投资经验、投资直觉融入模型。利用数学、统计学、计算机等技术,通过对宏观、基本面、市场行为、交易等各类金融数据的分析建立模型,基于历史数据对模型进行验证和改进,通过模型给出交易信号并自动下单交易。11.1量化投资简介量化投资有许多自身的特点,具体表现在:1) 纪律性以定量化和不可临时更改为特点的纪律性能够克服人性贪婪、恐惧、侥幸等弱点,量化投资的决策具有可重复性和可回溯性。2) 系统性量化投资的数据处理是通过计算机完成的,计算机的海量数据处理能力使得量化投资能对市场进行全面、深入的分析。11.1量化投资简介3) 及时性通过计算机实时捕捉信息,量化投资策略能对市场做出迅速及时的反应,准确客观评价交易机会。在高频交易中量化投资的及时性体现得更加明显。4) 分散化量化投资是非常注重风险控制的,其中一个维度是利用其系统性的优势,通过构建分散化的投资组合降低风险。另一个维度是通过积累多笔交易以概率取胜。11.1量化投资简介5) 捕捉套利机会量化投资通过全面、系统性的扫描捕捉短暂的市场失效或者定价偏差带来的机会,构建套利组合获取低风险收益。投资手段的不同并不意味着投资理念和投资策略的好坏,也不意味着投资结果的好坏。量化投资不是万能的,其投资策略本身也是人为制定的,仍然需要结合投资者的经验和市场逻辑进行分析,才能更好地抓住获利的机会。11.1.3量化投资策略简介按照不同的分类方式,存在各种不同的量化策略。(1)根据交易品种分类,量化投资策略可以分为股票策略、CTA(commoditytradingadvisor)策略、期权策略等。(2)根据盈利模式分类,量化投资策略可以分为单边多空策略、对冲策略和套利策略等。(3)根据策略功能分类,量化投资策略可以分为选股策略、择时策略、仓位管理策略和风险控制策略等。策略和非高频策略。11.1.3量化投资策略简介量化投资首先要解决投资组合构建问题,在股票投资上就是指买什么股票,以及资金如何分配。常见的选股模型有多因子选股、风格轮动选股、行业轮动选股、趋势追踪选股、一致预期选股和动量反转选股。其次是择时问题,指的是对趋势的判断和买卖时机的把握,也就是何时买卖的问题。常见的择时模型有趋势量化择时、市场情绪量化择时、有效资金量化择时和机器学习方法择时等。再次是仓位管理,也就是每次买多少,卖多少,留多少资金。常见的仓位管理方法有漏斗型仓位管理法、矩形仓位管理法、金字塔形仓位管理法、凯利公式仓位管理等。最后是止盈止损,决定在盈利或亏损达到什么程度时该提前离场和及时增减仓位。止盈止损又可分为静态和动态两类,具体有限价止损、阶梯止损、回撤止损、吊灯止损、ATR(averagetruerange)止损等。11.1.3量化投资策略简介(4)根据策略本身的逻辑分类,量化投资策略可以分为指数增强、多因子选股、风格轮动、行业轮动、趋势追踪、一致预期、动量反转、均线策略、通道策略、海龟策略等。(5)根据交易频率分类,量化投资策略可以分为高频策略和非高频策略。高频策略在日内短时持仓,依赖高端的计算机系统和算法,以毫秒级的速度执行交易。其中算法交易是高频策略的代表,专注于订单的执行过程,通过交易订单的拆细,降低交易的冲击成本、隐藏交易行为并以最优的方式高效完成交易。量化投资策略的开发量化策略的开发是一个循环的过程,以下我们具体介绍各个环节的内容:策略建模模型是量化策略的核心,构建一个策略的重要目标就是构建模型。基本做法为从市场逻辑出发,提出策略的基本构想,找到一个模型对策略构想进行刻画和实现。策略实现量化策略以程序化交易为手段,最终需要把建好的模型通过具体的程序代码进行实现。主流的用于实现量化投资策略的计算机语言有Python、C++、Matlab等。策略实现通常需要在量化投资平台上进行,量化投资平台通常会提供完善的数据接口、下单通道、策略回测和评价等功能。策略回测实现好策略后,很重要的环节是策略回溯测试,简称回测。策略回测指用历史数据拟合策略模型并进行模拟交易,目的是寻找最合适的模型超参数以及评估策略的效果。量化投资策略的开发为了保证策略回测的客观性,需要注意以下几点:回测时需考虑交易税费、交易滑点、股票价格复权等实际交易环境因素,尽量使回测接近实盘情形。一般的量化回测平台都支持这些参数的设置。严格区分样本内和样本外数据。从抽象的角度叙述就是用于训练模型的数据不能用于模型测试。例如,不可以在某段时间区间内挑选出最好的股票,又在相同的时间区间进行回测。当然,实际中的这类错误不会这么明显,往往存在于一些难以发现的细节中。避免前视偏差。前视偏差指策略中用到了未来的信息,也称为未来函数。避免幸存者偏差。幸存者偏差指经过优胜劣汰之后,人们只能观察到幸存者,未幸存者已无法发声。因而人们只看到经过某种筛选而产生的结果,忽略了被筛选掉的关键信息。最后需要注意,量化策略回测只是验证投资逻辑或动机的一种工具,而不是寻找投资逻辑的捷径。即不能本末倒置地单纯从数据出发倒推出投资逻辑,甚至完全忽略掉金融逻辑。量化投资策略的开发策略再平衡任何策略都不是万能的,随着市场行情的变化以及其他投资者的投资策略的调整,原先有效的量化投资策略很可能会失效。因此需要对投资策略进行监控,一旦发现策略效果持续变差,则应该考虑对策略进行调整。11.2多因子选股模型多因子选股模型以资本资产定价模型(CAPM)、套利定价理论(APT)、Fama-French三因素模型等现代金融投资理论为基础,是量化投资领域应用最广泛也是最成熟的选股模型之一。多因子模型用一系列因子,主要包括公司基本面指标、股票技术面指标、市场情绪因子等,作为解释股票超额收益的因素,通过因子选出未来收益高的股票。总体而言,该模型的核心之一在于如何选因子,其次是如何基于因子选股票。具体的步骤可分为预选因子池、因子有效性检验、冗余因子剔除和多因子选股票。11.2.2预选因子池基于金融逻辑,从全方位各角度寻找影响股票收益率的因子,形成一个因子池。这一步一般通过人工以定性的方式来完成,依赖于市场逻辑和股票投资经验。影响股票价格的重要因素是公司的基本面和股票技术面信息,其中基本面因素主要通过分析财务报表得到,技术面因素通过分析股票量价指标得到。因子并不是对所有行业的公司都适用,不同的因子对股票收益的影响方向不一样。11.2.3因子有效性检验在构建好预选因子池后,一个重要的步骤就是通过定量计算筛选出真正有效的因子。实际中衡量因子有效的重要标准之一就是看其能否产生超过基准的超额收益率,即股票收益率减去基准收益率的差。因子有效性检验通常是逐因子进行,最常用方法为排序法。选定一个因子后,排序法的具体步骤如下:选取股票池2)设定检验时间段和周期11.2.3因子有效性检验

11.2.3因子有效性检验另一种方法:分组检验月初根据因子值将股票排序,排序后以等频或者等距的方式分为若干组(通常为5组),观察月末各组股票的平均收益差距情况。赢家组合与输家组合的平均月收益率之差称为因子收益差。基于这个框架,可以定义一些衡量因子有效性的指标,这些指标包括:因子胜率,指形成期内因子收益为正的月份数占总月份数的比例。因子信息比率,因子收益差平均值比因子收益差的标准差。这个指标的计算方式与前文的IR类似,区别在于这里用的是因子收益差而不是IC值序列。t检验,检验原假设为因子收益差平均值小于等于0。11.2.3因子有效性检验4) 实际操作及注意事项因子有效性检验涉及到数据的分析和处理,因此需要经过我们之前介绍过的数据获取、探索性数据分析、特征工程等数据分析步骤。在数据清洗过程中需要注意结合数据的实际背景。首先剔除停牌和ST股票。其次,用最近一次的财报数据作为本月的因子数据。第三,对因子进行行业和市值中性化处理,剔除掉这两个因素的影响。常见的方法是将因子值对行业和市值进行线性回归,取残差值作为新的因子值。11.2.4冗余因子剔除

11.2.5根据因子选股票

11.2.5根据因子选股票机器学习法回归法本质上是建立了股票收益率和因子之间的关系,可以将回归法用各种不同的机器学习回归模型进行扩展。例如可以用更高级的回归方法如岭回归、核岭回归、支持向量回归等机器学习方法进行建模。除了回归法,还可以将选股问题转化为分类问题来处理。将股票收益率分为高和低两类,建立分类模型。此时就可以用机器学习中的Logistic回归、支持向量机、决策树等分类方法,以及随机森林、GBDT、XGBoost、LightGBM等集成学习方法。Alphalens的用法Alphalens主要提供了因子收益分析、IC分析、换手率分析以及事件收益分析这四大模块。因子收益分析模块的总体思路与11.2.3节中根据因子值排序后分组的有效性检验类似,提供了因子收益分析表、因子分组累计收益曲线等结果。因子IC分析模块提供了因子IC表(包括IR值)、因子IC时间序列、因子IC分布图和QQ图、热力图等结果。Alphalens

温馨提示

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

评论

0/150

提交评论