您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > Python与金融量化分析-高级
金融•金融:就是对现有资源进行重新整合之后,实现价值和利润的等效流通。•金融工具:在金融市场中可交易的金融资产。•股票•期货•黄金•外汇•基金•……2020年9月16日金融分析与金融量化1股票•股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东。•上市/IPO:•企业通过证券交易所公开向社会增发股票以募集资金•股票的作用:•出资证明、证明股东身份、对公司经营发表意见•公司分红、交易获利2020年9月16日算法基础2股票的分类•股票按业绩分类:•蓝筹股:资本雄厚、信誉优良的公司的股票•绩优股:业绩优良公司的股票•ST股:特别处理股票,连续两年亏损或每股净资产低于股票面值•股票按上市地区分类:•A股:中国大陆上市,人民币认购买卖(T+1,涨跌幅10%)•B股:中国大陆上市,外币认购买卖(T+1,T+3)•H股:中国香港上市(T+0,涨跌幅不设限制)•N股:美国纽约上市•S股:新加坡上市2020年9月16日算法基础3股票市场的构成•上市公司•投资者(包括机构投资者)•证监会、证券业协会、交易所•证券中介机构•交易所•上海证券交易所:只有一个主板(沪指)•深圳证券交易所:•主板:大型成熟企业(深成指)•中小板:经营规模较小•创业板:尚处于成长期的创业企业2020年9月16日算法基础4影响股价的因素•公司自身因素:股票自身价值是决定股价最基本的因素,而这主要取决于发行公司的经营业绩、资信水平以及连带而来的股息红利派发状况、发展前景、股票预期收益水平等。•行业因素:行业在国民经济中地位的变更,行业的发展前景和发展潜力,新兴行业引来的冲击等,以及上市公司在行业中所处的位置,经营业绩,经营状况,资金组合的改变及领导层人事变动等都会影响相关股票的价格。•市场因素:投资者的动向,大户的意向和操纵,公司间的合作或相互持股,信用交易和期货交易的增减,投机者的套利行为,公司的增资方式和增资额度等,均可能对股价形成较大影响。•心理因素:情绪波动,判断失误,盲目追随大户、狂抛抢购•经济因素:经济周期,国家的财政状况,金融环境,国际收支状况,行业经济地位的变化,国家汇率的调整等•政治因素2020年9月16日算法基础5股票买卖(A股)•委托买卖股票•个人不能直接买卖,需要在券商开户,进行委托购买•股票交易日:周一到周五(非法定节假日和交易所休市日)•股票交易时间:•9:15-9:25开盘集合竞价时间•9:30-11:30前市,连续竞价时间•13:00-15:00后市,连续竞价时间•14:57-15:00深交所收盘集合竞价时间•T+1交易制度:股票买入后当天不能卖出,要在买入后的下一个交易日才能卖出•涨停、跌停限制•股票购买方式:市价单、限价单2020年9月16日算法基础6金融分析•基本面分析•宏观经济面分析:国家的财政政策、货币政策等•行业分析•公司分析:财务数据、业绩报告等•技术面分析:各项技术指标•K线•MA(均线)•KDJ(随机指标)•MACD(指数平滑移动平均线)•……2020年9月16日算法基础7K线2020年9月16日算法基础8所谓K线图,就是将各种股票每日、每周、每月的开盘价、收盘价、最高价、最低价等涨跌变化状况,用图形的方式表现出来。K线又称阴阳线、棒线、红黑线或蜡烛线。一般而言,阳线表示买盘较强,卖盘较弱,这时,由于股票供不应求,会导致股价的上扬。阴线表示卖盘较强,买盘较弱。此时,由于股票的持有者急于抛出股票,致使股价下挫。同时,上影线越长,表示上档的卖压越强,即意味着股价上升时,会遇到较大的抛压;下影线越长,表示下档的承接力道越强,意味着股价下跌时,会有较多的投资者利用这一机会购进股票。K线2020年9月16日算法基础9金融量化投资•量化投资:利用计算机技术并且采用一定的数学模型去实践投资理念,实现投资策略的过程。•量化投资的优势:•避免主观情绪、人性弱点和认知偏差,选择更加客观•能同时包括多角度的观察和多层次的模型•及时跟踪市场变化,不断发现新的统计模型,寻找交易机会•在决定投资策略后,能通过回测验证其效果2020年9月16日算法基础10量化策略•量化策略:通过一套固定的逻辑来分析、判断和决策,自动化地进行股票交易。•核心内容•选股•择时•仓位管理•止盈止损•策略的周期•产生想法/学习知识•实现策略:Python•检验策略:回测/模拟交易•实盘交易•优化策略/放弃策略2020年9月16日算法基础11Python全栈班赵天宇ztypl@hotmail.com2020年9月16日第二章:量化投资与Python量化投资与Python•为什么选择Python?•其他选择:Excel、SAS/SPSS、R•量化投资第三方相关模块•NumPy:数组批量计算•pandas:表计算与数据分析•Matplotlib:图表绘制•如何使用Python进行量化投资•自己编写:NumPy+pandas+Matplotlib+……•在线平台:聚宽、优矿、米筐、Quantopian、……•开源框架:RQAlpha、QUANTAXIS、……2020年9月16日算法基础13IPython基础功能•IPython:交互式的Python命令行•安装:pipinstallipython•使用:ipython•与Python解释器的使用方法一致2020年9月16日金融分析与金融量化14IPython高级功能•IPython:交互式的Python命令行•TAB键自动完成•?:内省、命名空间搜索•!:执行系统命令•丰富的快捷键2020年9月16日金融分析与金融量化15IPython快捷键2020年9月16日算法基础16IPython高级功能•魔术命令:以%开始的命令•%run:执行文件代码•%paste:执行剪贴板代码•%timeit:评估运行时间•%pdb:自动调试2020年9月16日金融分析与金融量化17IPython常用的魔术命令2020年9月16日算法基础18Python调试器命令2020年9月16日算法基础19IPython高级功能•使用命令历史•获取输入输出结果•目录标签系统•IPythonNotebook2020年9月16日金融分析与金融量化20NumPy:数组计算•NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。•NumPy的主要功能:•ndarray,一个多维数组结构,高效且节省空间•无需循环对整组数据进行快速运算的数学函数•*读写磁盘数据的工具以及用于操作内存映射文件的工具•*线性代数、随机数生成和傅里叶变换功能•*用于集成C、C++等代码的工具•安装方法:pipinstallnumpy•引用方式:importnumpyasnp2020年9月16日算法基础21NumPy:ndarray-多维数组对象•为什么要使用ndarray:•例1:已知若干家跨国公司的市值(美元),将其换算为人民币•例2:已知购物车中每件商品的价格与商品件数,求总金额•创建ndarray:np.array()•ndarray是多维数组结构,与列表的区别是:•数组对象内的元素类型必须相同•数组大小不可修改•常用属性:•T数组的转置(对高维数组而言)•dtype数组元素的数据类型•size数组元素的个数•ndim数组的维数•shape数组的维度大小(以元组形式)2020年9月16日算法基础22NumPy:ndarray-数据类型•ndarray数据类型:dtype:•布尔型:bool_•整型:int_int8int16int32int64•无符号整型:uint8uint16uint32uint64•浮点型:float_float16float32float64•复数型:complex_complex64complex1282020年9月16日算法基础23NumPy:ndarray-创建•创建ndarray:•array()将列表转换为数组,可选择显式指定dtype•arange()range的numpy版,支持浮点数•linspace()类似arange(),第三个参数为数组长度•zeros()根据指定形状和dtype创建全0数组•ones()根据指定形状和dtype创建全1数组•empty()根据指定形状和dtype创建空数组(随机值)•eye()根据指定边长和dtype创建单位矩阵2020年9月16日算法基础24NumPy:索引和切片•数组和标量之间的运算•a+1a*31//aa**0.5•同样大小数组之间的运算•a+ba/ba**b•数组的索引:•一维数组:a[5]•多维数组:•列表式写法:a[2][3]•新式写法:a[2,3](推荐)•数组的切片:•一维数组:a[5:8]a[4:]a[2:10]=1•多维数组:a[1:2,3:4]a[:,3:5]a[:,1]•与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。【解决方法:copy()】2020年9月16日算法基础25NumPy:布尔型索引•问题:给一个数组,选出数组中所有大于5的数。•答案:a[a5]•原理:•a5会对a中的每一个元素进行判断,返回一个布尔数组•布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组•问题2:给一个数组,选出数组中所有大于5的偶数。•问题3:给一个数组,选出数组中所有大于5的数和偶数。•答案:•a[(a5)&(a%2==0)]•a[(a5)|(a%2==0)]2020年9月16日算法基础26NumPy:花式索引*•问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。•答案:a[[1,3,4,6,7]]•问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。•答案:a[:,[1,3]]2020年9月16日算法基础27NumPy:通用函数•通用函数:能同时对数组中所有元素进行运算的函数•常见通用函数:•一元函数:abs,sqrt,exp,log,ceil,floor,rint,trunc,modf,isnan,isinf,cos,sin,tan•二元函数:add,substract,multiply,divide,power,mod,maximum,mininum,2020年9月16日算法基础28补充知识:浮点数特殊值•浮点数:float•浮点数有两个特殊值:•nan(NotaNumber):不等于任何浮点数(nan!=nan)•inf(infinity):比任何浮点数都大•NumPy中创建特殊值:np.nannp.inf•在数据分析中,nan常被用作表示数据缺失值2020年9月16日金融分析与金融量化29NumPy:数学和统计方法•常用函数:•sum求和•cumsum求前缀和•mean求平均数•std求标准差•var求方差•min求最小值•max求最大值•argmin求最小值索引•argmax求最大值索引2020年9月16日算法基础30NumPy:随机数生成•随机数生成函数在np.random子包内•常用函数•rand给定形状产生随机数组(0到1之间的数)•randint给定形状产生随机整数•choice给定形状产生随机选择•shuffle与random.shuffle相同•uniform给定形状产生随机数组2020年9月16日算法基础31pandas:数据分析•pandas是一个强大的Python数据分析的工具包。•pandas是基于NumPy构建的。•pandas的主要功能•具备对其功能的数据结构DataFrame、Series•集成时间序列功能•提供丰富的数学运算和操作•灵活处理缺失数据•安装方法:pipinstallpandas•引用方法:importpandasaspd2020年9月16日算法基础32pandas:Series•Series是一种类似于一位数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。•创建方式:•pd.Series([4,7,-5,3])•pd.Series([4,7,-5,3],index=['a','b',
本文标题:Python与金融量化分析-高级
链接地址:https://www.777doc.com/doc-6963210 .html