版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据分析sklearn机器学习库10数据分析基础要求理解数据分析的基本概念,掌握数据分析的基本方法,搭建学习的核心理论基础。sklearn工具应用掌握使用sklearn进行简单数据预处理、模型构建及模型评估的基本操作方法。【学习目标】【课前导引】
Iris数据集与降维应用Iris数据集含4个鸢尾花属性变量,用sklearn的PCA降维后可二维可视化区分3类鸢尾花。
sklearn工具库介绍sklearn是基于Python的开源机器学习工具库,含多种算法模型、自带数据集,集成多类工具。模块数据集:三类数据获取方法本地小数据集获取
sklearn本地小数据集可通过load_*()方法直接获取,无需处理即可用于模型训练,如iris、boston、wine等数据集。大型数据集获取
可通过联网调用fetch_*()通用格式方法下载大型数据集,例:用fetch_20newsgroups下载新闻组数据集。自定义数据集生成
make_*()方法可按给定参数生成数据集,如make_blobs()可生成含两特征值的100个样本。数据集获取方法分类
sklearn.datasets模块包含3类获取数据的方法。模块数据集
数据集字典键说明数据集字典含必选键data、target,及可选键feature_names、target_names、DESCR,各键对应特定内容。
示例代码说明示例代码如下所示。数据的预处理
预处理阶段概述原始数据常不符合分析要求,数据分析前须做预处理,该阶段耗时占比最多,可借助sklearn.preprocessing模块完成。
预处理模块功能sklearn.preprocessing模块含缩放、居中、规范化等变换,缺失值填充、多项式变换等多种数据预处理工具。
常用预处理方法涵盖标准化、正则化、各类编码、多项式特征创建等多种方法,不同方法对应不同数据处理需求。标准化核心定义标准化指让数据集大致服从均值为0、方差为1的标准正态分布,是多数机器学习算法的要求。标准化实现方法实际操作先对特征数据减均值μ做中心化,再除以标准差σ缩放,即常用的Z-score方法。标准化适用场景使用LR、SVM、k近邻、Adaboost、ANN等分类模型,或k均值聚类时,均需先做数据标准化。数据的预处理:标准化标准化的必要性数据的预处理:标准化scale()函数标准化方法
标准化实现方式在sklearn中可调用preprocessing.scale()实现数据标准化,还给出了包含导入库、定义训练集及执行标准化的示例代码。
标准化结果特征标准化后的数据均值接近于0,标准差接近于1,数据分布接近于标准正态分布。数据的预处理:标准化StandardScaler类标准化方法
标准化两种方式sklearn.preprocessing中scale()可快速操作单个数组数据集,StandardScaler类可先拟合训练数据计算均值和标准差,适配Pipeline早期步骤。
标准化操作步骤先对训练数据拟合计算各变量均值和标准差,再转换得到标准化数据,测试数据直接用训练数据拟合的模型转换,不可重新拟合。数据的预处理:特征缩放特征缩放的必要性当数据集中变量取值范围差异大时,范围大的变量会过度影响模型,需对变量取值范围进行缩放来消除这种影响。数据的预处理:特征缩放MinMaxScaler类介绍与使用
MinMaxScaler基础说明使用sklearn的MinMaxScaler类可将数据特征缩至给定范围,通常为0~1,其有feature_range等参数。
缩放操作与应用通过fit_transform()方法对训练数据执行缩放,训练后可将该缩放规则应用到测试数据,保证操作一致。MaxAbsScaler类及相关函数MaxAbsScaler类:除以特征最大值缩放,不中心化、不改变稀疏性;也可直接用minmax_scale()等函数。异常值数据的缩放方案数据含大量异常值不宜用均值和方差缩放,可使用robust_scale()函数或RobustScaler对象进行稳健缩放数据的预处理:特征缩放数据的预处理:正则化
正则化基础概念正则化又称规则化,数学领域称范数,是将单一样本缩放至单位范数的过程,常用L1、L2范数。
各类p-范数定义L0范数:向量非零元素个数L1范数:向量元素绝对值之和L2范数:向量元素平方和开方∞/-∞范数:向量元素绝对值最大/最小值数据的预处理:正则化
正则化的代码实现normalize()函数正则化该函数可在类数组数据集上快速执行L1或L2范数正则化,示例代码展示了用L2范数处理数组的具体操作及结果。Normalizer()类正则化其函数原型含norm等参数,默认L2范数,示例代码展示了用其拟合、转换数据及对新向量执行transform操作的方法正则化参数说明参数norm用于对每个样本做正则化,取'max'时,会用所有值绝对值的最大值对数值进行缩放数据的预处理:特征编码和离散化类别特征整数编码类别特征编码需求机器学习中类别型特征需转换为整数编码,该转换过程被称为特征编码,以此适配数值化处理需求。OrdinalEncoder编码方法可使用preprocessing模块的OrdinalEncoder类,将每个类别特征转为0到类别数减1的整数特征,有对应代码示例。编码后使用局限OrdinalEncoder转换后的整数特征无法直接用于sklearn估计器,因估计器会默认类别有序,实际类别并无序。数据的预处理:特征编码和离散化独热码编码方法独热码编码说明独热码又称one-of-K或dummyencoding,可将类别特征转换为sklearn模型可用的二进制特征向量,由OneHotEncoder类实现。OneHotEncoder类原型该类原型为classsklearn.preprocessing.OneHotEncoder(*,categories='auto',drop=None,sparse='deprecated',sparse_output=True,dtype=<class'numpy.float64'>,handle_unknown='error',min_frequency=None,max_categories=None)。自动推断编码维度默认可从数据集自动推断每个特征的编码维度,也可通过categories参数显式指定特征的所有可能取值。配图中配图中配图中数据的预处理:特征编码和离散化
未知类别处理方式设置handle_unknown='ignore'时,转换遇到未知类别不会报错,该特征的独热码列将全部为0,仅在独热编码时有效。
降维编码参数设置使用drop参数可将每列编码为n_categories-1列,避免输入矩阵共线性,此时handle_unknown必须设为error。
编码操作示例演示含基础编码、指定categories编码、未知类别处理编码、降维编码的示例代码及对应输出结果展示,清晰呈现编码过程与效果。数据的预处理:特征编码和离散化连续特征离散化
离散化基本概念离散化又称量化或装箱,是将连续特征划分为离散特征的方法,sklearn中可通过KBinsDiscretizer类实现。
离散化类参数说明KBinsDiscretizer类有n_bins、encode、strategy等参数,各参数有不同取值与默认值,对应不同离散化规则。
离散化策略详情strategy参数有uniform、quantile、kmeans三种取值,分别对应等宽、等频、聚类三种离散化划分方式。
离散化代码示例可通过设置n_bins、encode等参数实例化KBinsDiscretizer,拟合数据后对连续特征数组完成离散化转换。数据的预处理:缺失值处理缺失值基本情况现实世界数据集多含缺失值,常以空格、NaN、NA等编码,多数sklearn算法默认数据为数值,无法直接处理含缺失值的数据集。缺失值基础处理策略可舍弃含缺失值的整行或整列,但会损失潜在有价值数据,数据量少时代价更高,更优策略是依据已有数据推断缺失值。SimpleImputer类功能SimpleImputer类提供缺失值计算策略,可用常数或行/列统计数据(均值、中位数、众数)填充,支持不同缺失值编码。数据的预处理:缺失值处理
missing_values值类型支持int、float、str,可设为np.nan或None,默认np.nan,适配pandasNullable缺失值数据的预处理:缺失值处理strategy
均值中位数填充规则值类型为'mean'时,用每列均值填充缺失值,仅适用于数值型数据;为'median'时,用每列中位数填充,仅适用于数值型数据。高频值常量填充规则值类型为'most_frequent'时,用每列高频值填充,多高频值取最小,支持数值与字符串;为'constant'时,用指定fill_value填充。fill_value用于设置常量填充值;copy用于设置是否创建填充缺失值之后的数据集副本。数据的预处理:缺失值处理数据的预处理:缺失值处理add_indicator
01缺失值标记规则若条件为True,在数据x后添加等规模的0、1数据,0代表对应位置无缺失,1代表对应位置有缺失。
02SimpleImputer填充示例提供了SimpleImputer进行缺失值填充的示例代码,该类在'most_frequent'或'constant'策略下支持分类数据。数据的预处理:生成多项式特征非线性关系拟合思路机器学习里,当线性回归拟合非线性关系效果差时,可引入高阶项,用多元线性回归拟合。多项式特征生成工具可借助sklearn.preprocessing中的PolynomialFeatures类,获取特征更高维度及相互关系的项。类核心参数说明PolynomialFeatures类原型含degree等参数,其中degree用于设置生成的多项式的最高阶数。数据的预处理:生成多项式特征多项式特征生成工具数据的预处理:生成多项式特征特征转换示例说明两组特征转换示例:两特征转为含平方、交互项等特征;三特征设interaction_only=True,仅得交互项多项式特征隐式调用使用多项式核函数时,多项式特征会在sklearn的SVC、KernelPCA等核函数中被隐式调用。数据的预处理:特征选择特征选择的作用与基础工具
特征选择核心作用数据特征过多会使模型复杂、训练耗时,特征选择可提取代表性特征,还能借助sklearn模块提升模型性能。
方差阈值选择方法VarianceThreshold是基础特征选择法,默认移除方差为0的特征,仅检查特征,适用于无监督学习。
特征选择实操示例可使用make_blobs()生成含4个特征的聚类数据集,设置threshold为5来完成特征选择操作。数据的预处理:特征选择单变量统计特征选择方法
单变量特征选择概述通过单变量统计测试选最优特征,比移除小方差法常用,指单独检测每个特征与目标变量的相关性。SelectKBest类应用该类可选取评分最高的k个特征,以digits数据集为例,展示其函数原型及基于该数据集的使用示例代码。SelectPercentile类应用该类可选取占比一定百分比的最优特征,介绍其函数原型、作用及对应的使用示例代码。GenericUnivariateSelect类应用该类用可配置方法做单变量特征选择,支持超参数搜索,介绍其函数原型、mode参数取值及基于breast_cancer数据集的示例代码。数据的预处理:特征选择单变量选择的注意事项
回归数据评分函数特征选择的评分函数依数据类型而定,f_regression()、mutual_info_regression()针对回归数据进行评分。分类数据评分函数针对分类数据采用chi2()、f_classif()、mutual_info_classif()作为特征选择的得分函数。单变量特征选择说明单变量的特征选择可当作模型预处理步骤,注意勿用回归评分函数处理分类问题,避免无意义结果。数据的预处理:主成分提取
超高维数据降维途径超高维数据降维可采用10.2.7小节的特征选择法,也可运用多数特征矩阵分解算法。PCA降维核心说明PCA:以奇异值分解做线性降维,将多变量转为少数无关综合变量,保留原信息。数据的预处理:主成分提取PCA参数与属性说明
降维核心参数说明参数n_components表示降维后保留的特征数量,理想值兼顾信息保留与特征精简,还可设为'mle'或[0,1]浮点数,需结合svd_solver参数设置。
PCA属性与使用注意PCA对象的components_、explained_variance_、explained_variance_ratio_属性对应主成分特征向量、特征值和方差百分比,且不支持稀疏输入。降维结果解释说明在解释方法占比>0.9阈值下,仅提取一个主成分即可,降维后解释方法与总方法比为0.98204467数据的预处理:主成分提取模型构建
算法问题类型划分常见问题分为分类、回归、聚类三类,分类求已知类别归属,回归求连续数值,聚类按样本属性内在特征归类。
学习模式概念解析监督学习用带标签样本建模,无监督学习用无标签样本按属性归类,半监督学习结合部分有标签样本为无标签样本打标后分类,分类、回归属监督学习,聚类属无监督学习。
常用算法类型列举分类含决策树、随机森林等算法,回归含线性回归及贝叶斯线性回归等拓展算法,聚类含k均值、高斯混合模型等算法。
模型构建流程说明先依问题类型选算法,用sklearn模块对应类设超参数创模型,调用fit()方法完成模型训练构建。模型构建:广义线性回归线性回归基础定义广义线性模型通过联结函数建立目标值期望值与输入变量线性组合的关系,定义向量w为coef_,w0为intercept_。sklearn线性回归操作sklearn中LinearRegression类有fit_intercept等参数,示例代码拟合后得到系数数组与近似为0的截距。最小二乘局限与改进普通最小二乘估计依赖变量独立性,对随机误差敏感,可通过岭回归、LASSO回归施加惩罚来优化。非线性数据拟合方法自变量与因变量非线性时,可生成多项式特征预处理,同时需注意阶数过高易引发过拟合问题。模型构建:广义线性回归岭回归和LASSO回归
正则化回归原理岭回归含L2正则项,LASSO回归含L1正则项,二者均通过在损失函数中添加特征系数相关项解决过拟合问题。正则项超参数说明α是岭回归与LASSO回归的关键超参数,α为0时无正则化,趋于无穷时模型优化侧重缩小θ。回归模型实现方式sklearn的Pipeline类可封装数据预处理与建模流程,岭回归和LASSO回归均有对应示例代码及拟合曲线。回归模型细节补充岭回归以系数平方和为正则项,数学模型为式(10-8);LASSO回归数学模型为式(10-9)。模型构建:广义线性回归支持向量机
支持向量机分类逻辑作为二分类模型,它在二维找最优分割直线、三维找平面、高维找超平面,非线性数据需通过核函数升维后线性划分。
常用核函数类型核函数用于将原始数据映射到高维空间,常用的有线性、多项式、高斯径向基、双曲正切和拉普拉斯核函数。
sklearn分类类SVC说明sklearn中SVC类用于支持向量机分类,参数kernel对应核函数字符串,有相应示例代码,实现基于libsvm。
支持向量回归及实现支持向量机可扩展为支持向量回归,对应sklearn中的SVR类,fit()方法的y为浮点数,有专属函数原型与示例代码。
大规模数据适配方案SVC和SVR拟合效率随样本量增长降低,线性场景建议用基于liblinear的LinearSVC、LinearSVR类,二者无kernel参数。模型构建:广义线性回归logistic回归
Logistic回归原理虽含“回归”二字却是线性分类模型,通过logit变换将概率与广义线性回归的y取值范围匹配,推导正例概率公式。
sklearn库实现细节LogisticRegression类支持二分类、一对多及多项式分类,带L1、L2正则化,默认L2,可调整max_iter或solver解决迭代警告,能查看预测概率。模型构建:广义线性回归决策树
01决策树基础特性树状结构,含根节点、测试属性的非叶子节点、分支及代表类或输出值的叶子节点,可用于分类、回归、异常值检测,规则直观高效。
02sklearn分类树说明含DecisionTreeClassifier类,有criterion等参数,支持二分类与多分类,可通过predict_proba()预测类概率,附训练与准确率计算示例。
03sklearn回归树说明含DecisionTreeRegressor类,可解决回归问题,criterion参数有squared_error、friedman_mse等多种取值,附示例代码。神经网络基础概述又称人工神经网络,是深度学习核心,受脑启发模仿神经元信号传递,由输入、隐藏、输出层构成,节点带权重阈值,满足阈值才激活传数据,靠训练数据监督学习提升准确率,可高速分类聚类。sklearn神经网络模块包含受限玻耳兹曼机(RBM)与多层感知器(MLP),RBM是无监督非线性特征学习器,输入需为0-1二值化变量;MLP含分类器与回归器,支持分类、回归及多输出回归。MLP回归器参数说明MLPRegressor以均方误差为损失函数,参数activation可选identity、logistic等激活函数,solver可选lbfgs、sgd等优化器,有诸多训练相关配置参数。模型使用注意事项多层感知器对功能缩放敏感,需将数据缩放至指定区间或标准化,测试集要应用相同缩放比例;sklearn无GPU支持,该模型不适用于大型数据集。模型构建:广义线性回归神经网络模型构建:广义线性回归集成模型
01集成模型核心定义集成模型是将多个基估计器的预测结果结合,以此获得比单个估计器更优的泛化能力与健壮性。
02集成方法类别区分基估计器组合分并行、串行两类,并行如Bagging、随机森林,基估计器独立取预测平均;串行如Boosting,基估计器依次构建以减少偏差。
03Bagging分类器要点BaggingClassifier的基估计器并行工作,基于数据集随机子集拟合,通过投票或平均聚合预测,有max_samples、max_features等参数。模型构建:广义线性回归
随机森林分类器说明随机森林集成随机决策树,拟合数据集子样本,不优化单个决策树,用均值提升准确性、控制过拟合。
Boosting方法核心逻辑Boosting逐个加入估计器,依据之前分类准确率调整样本权重,强化对误分类样本的关注,减小偏差与方差。
AdaBoost算法细节AdaBoost是迭代算法,拟合分类器副本时调整误分类样本权重,有SAMME、SAMME.R两种算法,后者迭代速度更快。
梯度提升分类器原理GradientBoostingClassifier以串行方式构建弱分类器加法模型,每个阶段拟合之前分类器损失函数的负梯度。模型构建:广义线性回归聚类
聚类分析基础概述聚类分析是无监督学习类数据挖掘算法,将相似数据点归为一组,用于探索数据分析,有k均值等多种算法。
相似度计算方法介绍含欧氏距离、标准化欧氏距离、马氏距离及夹角余弦法,各方法有不同特点与适用场景。
k均值聚类操作指引以sklearn中k均值为例,可用肘部法则确定聚类数,结合PCA降维实现聚类结果可视化。模型评估核心价值是数据分析重要部分,可客观评价模型预测精度与泛化能力,比较不同模型,助力选最优模型。模型评估多重作用能提升模型预测准确性,增强决策可靠性,还可发现模型不足,为模型优化改进提供方向。模型构建:模型评估模型构建:模型评估
留出法将数据集划分为训练集和测试集,用训练集训练模型,用测试集评估模型的预测精度。
交叉验证法把数据集划分为k个子集,轮流取一个当测试集,其余作训练集,训练后用测试集评估模型预测精度。
自助法从原始数据集有放回随机抽样得新数据集,用新数据集训练模型,以原始数据集评估其预测精度。
偏差-方差分解将模型的误差分解为偏差和方差两部分,分别评估模型的预测能力和稳定性。模型构建:模型评估数据划分
数据集划分逻辑为避免过拟合导致评估失效,构建有监督机器学习模型时,将数据划分为训练集(60%~80%,数据集大时可提占比)拟合模型、测试集评估模型。
数据划分函数说明可利用sklearn库的train_test_split()函数划分数据集,该函数有test_size、shuffle、stratify等多个参数,各参数有不同设置规则。
划分函数示例演示给出train_test_split()函数的完整使用示例代码,展示数据划分结果、分层抽样情况及用测试集评估模型的过程与结果。模型构建:模型评估交叉验证
交叉验证方法说明交叉验证又称k折检验,将数据集均分k份,用k-1份训练、1份测试,重复k次,模型精度取k次测试均值。sklearn交叉验证实现可使用sklearn.model_selection模块的cross_val_score()函数完成交叉验证,还可计算平均得分与95%置信区间,scoring参数可设置评分方式。模型评估指标预告分类与回归模型评估指标不同,后续小节将着重介绍两类模型的不同评估指标及对应sklearn函数。配图中模型构建:模型评估分类模型评估
分类评估核心指标常用指标含准确率、错误率、精确率、召回率、F1分数,均基于混淆矩阵计算,各有不同侧重点与适用场景。混淆矩阵相关内容二分类混淆矩阵以真实值和预测值为维度,sklearn提供计算与可视化函数,可拆解TN、FP、FN、TP四个核心值。典型指标计算说明准确率是预测准确样本占比,精确率为真正类占预测正类比,召回率为真正类占实际正类比,F1分数反映模型稳健性,sklearn均有对应计算函数。评估曲线相关内容含P-R曲线与ROC曲线,前者通过调整阈值平衡精确率与召回率,后者适配正负样本不平衡场景,AUC量化ROC的模型性能。模型构建:模型评估回归模型评估
回归模型评估基础回归模型输出为连续值,无混淆矩阵,仅看预测值与真实值的差,不能用分类模型的评估指标。
核心评估指标说明常用解释方差、均方误差、决定系数,分别从分散程度、波动精确度、变差占比维度评估模型。
各指标细节介绍解释方差衡量预测与真实值分散程度相近性;均方误差是误差平方和与样本数的比值;决定系数是模型解释变差与总变差的比。
指标工具使用示例sklearn中分别有对应函数可计算解释方差、均方误差、决定系数,文档给出了相关使用示例。模型构建:模型评估超参优化
01超参数基础说明不能直接在估计器内学习的参数为超参数,在sklearn中作为构造函数参数传递,典型的有SVC的C、kernel、gamma,LASSO的alpha等。
02网格搜索核心定义网格搜索是穷举遍历所有候选参数组合,选表现最优的结果,可优化估计器的任何参数,能用estimator.get_params()获取参数信息。
03网格搜索函数参数sklearn中网格搜索用GridSearchCV类,param_grid为参数候选值的字典或列表,该类还有scoring、cv等多项配置参数。
04网格搜索操作内容执行网格搜索后,可获取返回的最优估计器,还能查看经过优化后的模型最终参数设置情况。模型持久化概述sklearn模型训练后可通过持久化保存到文件,后续读取使用无需重训,有pickle和joblib两种方法。模型构建:模型持久化模型构建:模型持久化pickle方法示例
模型持久化代码示例通过导入sklearn.svm、datasets及pickle库,构建SVM模型并基于鸢尾花数据集完成训练。
pickle核心操作说明使用pickle.dumps将训练好的模型存入编码字符串,再用pickle.loads读取模型,验证预测功能正常。模型构建:模型持久化joblib方法示例joblib工具特性对内部带有NumPy数组的对象存储更为高效,但仅支持将数据或模型存储到文件中。模型持久化示例通过joblib.dump可将模型写入文件,使用joblib.load可读取模型,读取后可查看模型参数详情。交叉应用篇综合案例11
金融数据分析案例金融数据分析案例11【学习目标】
金融模型构建目标掌握利用Python语言构建计算金融模型的具体方法,夯实金融量化基础能力。
金融数据分析目标掌握利用Python语言实现金融数据分析的方法与操作步骤,提升金融数据处理能力。交易数据分析说明本章介绍利用前述方法对证券市场实际数据做分析,案例数据可通过11.1.1、11.1.2小节方法获取。交易数据内容说明数据以日交易数据为主,涵盖交易时间、开盘价、最高价、收盘价、最低价和成交量等。其他指标获取指引若读者需分析其他指标,可按照对应数据源中介绍的方法来获取相应的相关数据。获取证券市场交易数据获取证券市场交易数据下载数据以下载网易财经证券交易历史数据为例:点行情,搜上市公司,进其行情页点历史交易数据,选时段字段后下载。获取证券市场交易数据:访问Tushare数据在线数据访问方法说明
在线取数方法说明本小节介绍在线访问证券数据的方法,无需将历史交易数据存储为文件再读取。
Tushare接口详情Tushare是免费开源的Python财经数据接口包,可完成金融数据采集、清洗加工到存储,返回数据多为DataFrame类型,新版为TusharePro。
Tushare安装指引使用Tushare需先安装tushare模块,可通过Python官方网站下载完成安装。获取证券市场交易数据:访问Tushare数据历史数据获取方法说明本节介绍获取证券历史数据的方法及示例代码,其他数据需求可参考Tushare官网请求参数说明含股票/指数代码、起止日期、K线类型,还有网络异常重试次数及重试停顿秒数,部分参数有默认值。返回字段详情涵盖日期、开盘价、最高价等行情数据,还有多周期均价、均量及换手率,指数无换手率字段。获取证券市场交易数据:访问Tushare数据方法参数与返回值说明获取证券市场交易数据:股票收益率与波动率估算收益与波动率说明
收益指标定义说明收益率为收益水平描述指标,含单期简单收益率、对数收益率,波动率为单位时间内连续复利收益的标准差。
指数收益计算示例以上证指数历史数据计算上证收盘指数收益率,展示了2020年12月25日至31日的收盘价格数据。获取证券市场交易数据:股票收益率与波动率估算NumPy计算收益率
数组计算收益率方法使用NumPy数组计算股票收益率,通过收盘价数据,以(data[:-1]-data[1:])/data[1:]公式得出结果。
收益率计算结果示例经计算输出前五组收益率数据,分别为0.0171672、0.01048124、-0.0053717、0.0002128、0.00994593。收盘价差法算收益率用pandas通过(close-close.shift(-1))/close.shift(-1)计算每日收益率,需注意计算时会按索引对齐。pct_change()法算收益率先将收盘价按索引排序,再用pct_change()方法计算,该方法公式为(后面数据-前面数据)/前面数据。获取证券市场交易数据:股票收益率与波动率估算Pandas计算收益率获取证券市场交易数据:股票收益率与波动率估算波动率计算说明
日波动率计算说明通过对数收益率计算日波动率,使用多维数组对象std()方法,np.std()或narray.std()默认ddof为0,除数为元素数量N。
年波动率计算规则年波动率以日波动率为基础,乘以交易周期数的平方根,一般取252作为一年交易日期数,可通过代码实现计算。
不同对象std()差异Series或DataFrame对象的std()方法默认ddof为1,与np.std()默认设置不同,计算时需留意参数差异。期权定价
期权价值构成解析由内在价值和时间价值组成,内在价值由执行价与标的资产价决定,为正或0;时间价值是期权价值超内在价值的溢价部分。
期权定价核心定义指依据影响期权价值的因素,通过合适数学模型分析模拟其市场变动,得出合理理论价值。
定价模型及实现常用布莱克-斯科尔斯-莫顿、二项式、蒙特卡罗模型,将介绍这3种模型的Python程序实现。期权定价:布莱克-斯科尔斯-莫顿模型模型核心影响因素与公式
期权价值影响因素布莱克-斯科尔斯-莫顿模型中,影响期权价值的主要因素有股票即时市价、执行价格、期权期限、股价波动率和无风险利率。
期权定价公式要素买权价格公式含股票市价、执行价格、无风险利率、到期时间等变量,需计算累计概率分布函数N(d1)与N(d2),且d2=d1-σ(t)1/2。模型代码基础信息导入scipy.stats.norm及math模块下log、sqrt、exp函数,定义计算期权价值的call_price函数。定价函数参数与逻辑参数含股票即时价、期权执行价、到期时间、无风险利率、股价波动率,通过公式计算d1、d2后得出期权价值。期权定价:布莱克-斯科尔斯-莫顿模型期权定价代码实现期权定价:布莱克-斯科尔斯-莫顿模型
函数验证说明设S=40,E=45,r=0.1,t=0.5(6个月),σ=0.45,以此参数验证卖出价格计算函数期权定价:二项式期权定价模型二项式定价模型介绍
模型基础概述二项式期权定价模型又称二项、二叉树定价模型,假设给定时间间隔内金融资产价格仅涨或跌。模型特性关联该模型针对离散时间,时间间隔越小资产价格越趋近正态分布,与布莱克-斯科尔斯-莫顿模型趋同。程序实现说明程序用二维数组存储价格变动二叉树,涉及S、Su、Sd等期权销售价格变量,运算有对应示意图。期权定价:二项式期权定价模型
基础期权定价代码说明完整的程序代码如下。测试模型,代码如下。期权价值为8.224567838760727。
美式期权定价说明美式期权可提前执行,需在欧式期权定价基础上增加提前执行检查代码;有连续分红的美式期权有特定定价公式。模型分布基础说明布莱克-斯科尔斯-莫顿模型、二项式期权定价模型均基于S(T)对数正态分布;多资产因未知联合分布,需用蒙特卡罗方法。期权定价:蒙特卡罗期权定价模型期权定价:蒙特卡罗期权定价模型股价波动模型及参数
股价波动模型说明股票价格(指数)波动为布朗运动,表达式涉及无风险利率r、波动率σ、年化到期时间T、正态分布随机项ε。
蒙特卡罗定价操作设置到期日T=1.0,无风险利率r=0.006,用1000000个标准正态随机小数,运行代码得出看涨期权定价约8.22。期权定价:蒙特卡罗期权定价模型
定价仿真适用说明需要注意的是这里没有考虑随时行权,因此是对欧式期权定价的仿真。投资组合优化
投资组合优化授课以投资学理论和数理模型为基础,结合实际数据,重点讲解用Python编程实现不同目标下的投资组合优化。
分析假设与实践提示本节假设投资资产完全可分且无交易费用,实践中成本、资产不可分性等会影响结果,读者可进一步探讨。股票样本选取与数据获取从中国股票市场选5只股票,获取它们的历史交易数据,明确单只股票单期收盘价的表示方式。收益率与方差计算先计算单只股票的连续复利收益率,再通过历史收益率计算样本均值和方差,将其作为预期收益率和预期收益率方差。投资组合优化:投资组合的构建单股收益与方差计算投资组合优化:投资组合的构建组合收益与方差计算
组合收益方差计算以股票投资权重为基础,可计算投资组合预期收益率及方差,股票数量多时用矩阵代数计算更便捷,利于编程实现。
投资组合构建规则允许买空卖空时,权重可小于0或大于1,随机取值获不同组合;不允许时权重需在0到1之间,受限取值得对应组合集合。投资组合优化:投资组合的构建投资组合编程实现
收益相关函数与计算定义日收益率、资产年平均收益率等函数,查看日收益率、资产年收益率等数据,协方差结合年交易日数计算。组合风险与收益计算定义组合方差、标准差(波动率)、组合收益率函数,初始化为等权重值计算组合方差,明确各计算逻辑。组合夏普比测算定义组合夏普比函数,以2.035%一年期国债利率为无风险利率,计算等比例投资组合夏普比,查找最优夏普比对应收益与波动率。投资组合可视化定义绘制模拟投资组合散点图的函数,完成散点图绘制,通过模拟数据呈现组合收益、波动率与夏普比情况。投资组合优化:特定期望收益率下的组合优化带约束的组合优化目标
有特定期望收益率目标时,投资组合优化为约束问题,要在该目标下最小化组合风险,求解得目标组合。投资组合优化:特定期望收益率下的组合优化无卖空限制的组合优化
无约束最小化工具scipy.optimize模块的minimize()能对多元标量函数进行无约束的最小化,可用于投资组合优化场景。组合优化结果呈现在特定收益率无卖空限制下,最小年收益率方差为0.24733970973864058,资产权重列表为[0.399361770.18978774-0.043956370.377343930.07746292],还可绘制最优点。投资组合优化:特定期望收益率下的组合优化带卖空限制的组合优化带卖空限制的组合优化需加资产权重非负条件,修改代码可得新组合,其风险不低于无卖空限制的,最小年收益率方差为0.24748152934777728。投资组合优化:特定期望风险下的组合优化风险约束下收益最大化
风险约束下的优化目标若投资组合管理有特定期望风险目标,优化目标则为该风险约束下,寻求组合期望收益的最大化。
优化问题数学表述该优化问题可描述为argmaxRp=wTR,约束条件包括wTI=1,且组合方差需符合给定的期望风险目标。投资组合优化:特定期望风险下的组合优化
无卖空限制求解与绘图通过编程求解该无卖空限制的最优化问题,可得到目标组合,同时可按对应代码完成绘图。
含卖空限制求解与绘图存在卖空限制时,需增设各资产权重非负条件,附修改后代码及绘图代码(见图11-12)投资组合优化:特定效用函数下的组合优化定义效用函数
01效用函数设定前提当投资组合管理无特定期望风险与收益率目标,仅寻求整体效用最大化时,需先定义效用函数。
02效用函数内容解析采用简化效用函数U=Rp+Aσp²,风险厌恶假设下A为负,效用与期望收益率正相关、与组合风险负相关,A的取值决定函数具体形式。投资组合优化:特定效用函数下的组合优化
无卖空限制优化以最大化投资效用为目标,在满足wᵀI=1约束下编程求解最优投资组合,含绘图代码含卖空限制优化卖空限制下,最优化问题需增加资产权重非负条件,对应目标组合效用不超无卖空限制的组合。市场风险价值估算
风险价值核心定义指在一定持有期和给定置信水平下,外界风险因子变化可能对投资组合造成的潜在最大财务损失,取非负值。
风险价值关键参数大小取决于置信水平与持有期,置信水平通常在90%~99%,持有期从一天到一年不等,同时描述损失大小与概率。
风险价值计算要点先算1天期VaR再推导长期VaR,主要有参数法、历史法和蒙特卡罗法三种计算方法,参数法又称正态分布法。
风险价值应用说明是各类金融机构普遍使用的市场风险计量方法,投资机构和商业银行常用其确定投资组合潜在损失程度。市场风险价值估算:参数法使用参数法计算VaR时,基于不存在序列自相关、存在序列自相关和存在厚尾3种情况,分析如下多日对数收益率公式J天后的对数收益率由单日期望收益率、标准差及标准正态分布随机变量构成,对应式(11-16)。单日收益率VaR公式收益率的VaR对应式(11-17),结合资产头寸基准价值的头寸VaR对应式(11-18)。对数VaR及年化参数公式使用对数收益率的头寸对数VaR对应式(11-19),年化收益率与波动率下的VaR和ES对应式(11-20)、(11-21)。市场风险价值估算:参数法不存在序列自相关市场风险价值估算:参数法
存在序列自相关给出含序列自相关的模型rt=c+prt-1+εt,提及持有期为2期的VaR对应式(11-22)。市场风险价值估算:参数法存在厚尾
单个投资VaR说明单个投资VaR指单品种投资在特定置信水平、时间段内的最大可能损失,含计算示例代码及不同置信水平、持有期的关系曲线代码。
方差-协方差组合VaR采用方差-协方差法计算投资组合VaR,需先算相关系数矩阵、组合预期收益率,再构造方差-协方差矩阵,配有对应代码。
分散与非分散组合VaR分散化投资可降非系统性风险,通过标准化组合方差衡量分散程度,配有两类组合VaR对比的示例代码及可视化结果。市场风险价值估算:参数法投资组合增量VaR增量VaR指头寸增减带来的组合VaR变化,正负数分别代表增风险、对冲风险,含头寸删减的示例代码。投资组合边际VaR边际VaR反映头寸小幅变化对组合VaR的影响,可确定单项投资对整体VaR的影响程度,含计算公式及代码、可视化结果。投资组合成分VaR成分VaR刻画单项投资对组合VaR的总贡献,组合VaR为各成分VaR之和,含计算公式、实现代码及可视化结果。单个投资移动VaR与ESES是VaR的补充,可反映损失尾部分布均值,配有不同置信水平下单个投资的移动VaR和ES的计算公式、代码及可视化结果。市场风险价值估算:历史法
历史法核心说明历史法:以历史收益经验推演未来,VaR为历史数据对应分位数,ES为相关数据均值,前提是历史会重演。
历史法算VaR步骤1.选定影响投资或组合历史收益率的时间序列2.用实际价格算未来一日可能变化3.构造概率分布并求出分位数市场风险价值估算:历史法VaR计算可视化说明
历史法VaR计算实现运用历史法完成市场风险价值VaR的计算,得出VaR数值为-1.8363012604293294。VaR可视化代码设置通过Python代码将VaR可视化,绘制含5%、10%分位点VaR的收益率频数分布图,添加标注与图例后展示。市场风险价值估算:历史法
ES可视化相关说明通过参数法和历史法可视化ES的代码如下。可视化结果如图11-22所示。市场风险价值估算:蒙特卡罗法两种VaR计算法介绍历史法:以历史数据算VaR,难代表未来;蒙特卡罗法:结合两法,模拟随机路径算VaR参数初始化与赋值通过历史收益率计算均值与标准差并结合时间参数dt完成mu、sigma的赋值,初始化空数组data。蒙特卡罗模拟过程通过循环生成times组含J个数据的模拟收益率,存入data数组,再计算不同分位数对应的VaR值并输出。模拟结果可视化通过循环将每组模拟收益率数据进行绘图展示,可视化结果对应图11-23。市场风险价值估算:蒙特卡罗法蒙特卡罗法VaR计算代码市场风险价值估算:蒙特卡罗法蒙特卡罗法可视化相关内容提供蒙特卡罗法估计VaR的直方图、日期times仿真VaR均值的可视化代码及对应图示基于机器学习的股票价格预测
金融程序基础应用在期权定价、投资组合优化和市场风险价值计算中,计算机程序依据公式计算价格、最优组合或VaR等。
机器学习金融拓展应用金融场景中可利用机器学习分析历史数据,预测股票涨跌、市场走势,辅助科学决策提升投资收益。
股价预测案例介绍介绍利用NumPy建k近邻算法、sklearn的logistic回归、ARIMA预测股价的3个案例,综合应用前文函数方法。基于机器学习的股票价格预测:k线图
K线图相关说明证券交易常用含开盘价等信息的K线图展示数据变化,可通过需提前安装的百度开源pyecharts模块绘制。K线图代码前置准备导入tushare、numpy、pandas、matplotlib.pyplot及pyecharts相关模块,获取2021-02-01至2022-07-31上证指数数据并整理。K线与均线图绘制计算MA5、MA10、MA20均线数据,构建K线图并配置坐标轴、数据缩放、标题等全局参数,同时搭
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地下室外墙后浇带施工设计方案
- 钢结构大棚施工技术方案
- 金融科技对个人隐私保护的作用评估
- 安徽省江淮名校联盟2026届高三下学期三月联考历史试题(含答案) - 原卷版
- 寒武纪25Q4存货大幅增加供应链稳步改善
- 第3章 小程序端基础架构与工程化配置
- 浅析我国事业单位内部审计业务外包的必要性-以A交通管理站为例
- 四川省达州市万源中学2024-2025学年高二下学期6月月考试题 物理 含答案
- 2026年高考地理新课标一卷考试题库附参考答案
- 2023高考百日冲刺誓师大会演讲稿(24篇)
- 芽苗菜知识培训课件
- 测绘成果安全保密培训
- 2025年贵州省公务员《行测》真题及答案
- 2025年故宫文化考试题及答案
- 走进俄罗斯课件
- 小针刀课件教学课件
- 四川省医疗服务价格项目汇编(2022版)
- 商务礼仪之服装搭配
- 电梯机房钻孔协议书范本
- 腰椎疑难病例讨论
- 少儿航空科普教育
评论
0/150
提交评论