① 第1章 为什么将Python用于金融
python是一门高级的编程语言,广泛应用在各种领域之中,同时也是人工智能领域首选的语言。
为什么将python用于金融?因为Python的语法很容易实现金融算法和数学计算,可以将数学语句转化成python代码,没有任何语言能像Python这样适用于数学。
② 如何用Python做金融数据分析
所说所有的变量都是对象。 对象在python里,其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。
③ 如何用python 爬虫抓取金融数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一。鉴于此,我拾起了Python这把利器,开启了网络爬虫之路。
本篇使用的版本为python3.5,意在抓取证券之星上当天所有A股数据。程序主要分为三个部分:网页源码的获取、所需内容的提取、所得结果的整理。
一、网页源码的获取
很多人喜欢用python爬虫的原因之一就是它容易上手。只需以下几行代码既可抓取大部分网页的源码。
为了减少干扰,我先用正则表达式从整个页面源码中匹配出以上的主体部分,然后从主体部分中匹配出每只股票的信息。代码如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之间的所有代码pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之间的所有信息
其中compile方法为编译匹配模式,findall方法用此匹配模式去匹配出所需信息,并以列表的方式返回。正则表达式的语法还挺多的,下面我只罗列所用到符号的含义。
语法 说明
. 匹配任意除换行符“ ”外的字符
* 匹配前一个字符0次或无限次
? 匹配前一个字符0次或一次
s 空白字符:[<空格> fv]
S 非空白字符:[^s]
[...] 字符集,对应的位置可以是字符集中任意字符
(...) 被括起来的表达式将作为分组,里面一般为我们所需提取的内容
正则表达式的语法挺多的,也许有大牛只要一句正则表达式就可提取我想提取的内容。在提取股票主体部分代码时发现有人用xpath表达式提取显得更简洁一些,看来页面解析也有很长的一段路要走。
三、所得结果的整理
通过非贪婪模式(.*?)匹配>和<之间的所有数据,会匹配出一些空白字符出来,所以我们采用如下代码把空白字符移除。
stock_last=stock_total[:] #stock_total:匹配出的股票数据for data in stock_total: #stock_last:整理后的股票数据
if data=='':
stock_last.remove('')
最后,我们可以打印几列数据看下效果,代码如下
print('代码',' ','简称',' ',' ','最新价',' ','涨跌幅',' ','涨跌额',' ','5分钟涨幅')for i in range(0,len(stock_last),13): #网页总共有13列数据
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
大数据是宝藏,人工智能是工匠。大数据给了我们前所未有的收集海量信息的可能,因为数据交互广阔,存储空间近乎无限,所以我们再也不用因“没地方放”而不得弃掉那些“看似无用”的数据。
在浩瀚的数据中,如果放置这些数据,不去分析整理,那就相当于一堆废的数据,对我们的发展没有任何意义。今天给大家分享的就是:大数据分析工具的介绍和使用。
工具一:Pentaho BI
Pentaho BI和传统的一些BI产品不一样,这个框架以流程作为中心,再面向Solution(解决方案)。Pentaho BI的主要目的是集成一系列API、开源软件以及企业级别的BI产品,便于商务智能的应用开发。自从Pentaho BI出现后,它使得Quartz、Jfree等面向商务智能的这些独立产品,有效的集成一起,再构成完整且复杂的一项项商务智能的解决方案。
工具二:RapidMiner
在世界范围内,RapidMiner是比较好用的一个数据挖掘的解决方案。很大程度上,RapidMiner有比较先进的技术。RapidMiner数据挖掘的任务涉及了很多的范围,主要包括可以简化数据挖掘的过程中一些设计以及评价,还有各类数据艺术。
工具三:Storm
Storm这个实时的计算机系统,它有分布式以及容错的特点,还是开源软件。Storm可以对非常庞大的一些数据流进行处理,还可以运用在Hadoop批量数据的处理。Storm支持各类编程语言,而且很简单,使用它时相当有趣。像阿里巴巴、支付宝、淘宝等都是它的应用企业。
工具四:HPCC
某个国家为了实施信息高速路施行了一个计划,那就是HPCC。这个计划总共花费百亿美元,主要目的是开发可扩展的一些计算机系统及软件,以此来开发千兆比特的网络技术,还有支持太位级网络的传输性能,进而拓展研究同教育机构与网络连接的能力。
工具五:Hadoop
Hadoop这个软件框架主要是可伸缩、高效且可靠的进行分布式的处理大量数据。Hadoop相当可靠,它假设了计算元素以及存储可能失败,基于此,它为了保证可以重新分布处理失败的节点,维护很多工作数据的副本。Hadoop可伸缩,是因为它可以对PB级数据进行处理。
当数据变得多多益善,当移动设备、穿戴设备以及其他一切设备都变成了数据收集的“接口”,我们便可以尽可能的让数据的海洋变得浩瀚无垠,因为那里面“全都是宝”。
⑤ 如何用C#编程读取新浪的股票实时行情
使用system.net下HttpWebRequest 和HttpWebResponse 就能完成你的需求。
1、你直接请求sina的页面。
2、通过对返回的字符串(或者document对象)进行分析,能够取到相应的数据。
⑥ python的应用范围有哪些
Python是一门简单、易学并且很有前途的编程语言,很多人都对Python感兴趣,但是当学完Python基础用法之后,又会产生迷茫,尤其是自学的人员,不知道接下来的Python学习方向,以及学完之后能干些什么?以下是Python十大应用领域!
1. WEB开发
Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。
2. 网络编程
网络编程是Python学习的另一方向,网络编程在生活和开发中无处不在,哪里有通讯就有网络,它可以称为是一切开发的“基石”。对于所有编程开发人员必须要知其然并知其所以然,所以网络部分将从协议、封包、解包等底层进行深入剖析。
3. 爬虫开发
在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。
4. 云计算开发
Python是从事云计算工作需要掌握的一门编程语言,目前很火的云计算框架OpenStack就是由Python开发的,如果想要深入学习并进行二次开发,就需要具备Python的技能。
5. 人工智能
MASA和Google早期大量使用Python,为Python积累了丰富的科学运算库,当AI时代来临后,Python从众多编程语言中脱颖而出,各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。
6. 自动化运维
Python是一门综合性的语言,能满足绝大部分自动化运维需求,前端和后端都可以做,从事该领域,应从设计层面、框架选择、灵活性、扩展性、故障处理、以及如何优化等层面进行学习。
7. 金融分析
金融分析包含金融知识和Python相关模块的学习,学习内容囊括Numpy\Pandas\Scipy数据分析模块等,以及常见金融分析策略如“双均线”、“周规则交易”、“羊驼策略”、“Dual Thrust 交易策略”等。
8. 科学运算
Python是一门很适合做科学计算的编程语言,97年开始,NASA就大量使用Python进行各种复杂的科学运算,随着NumPy、SciPy、Matplotlib、Enthought librarys等众多程序库的开发,使得Python越来越适合做科学计算、绘制高质量的2D和3D图像。
9. 游戏开发
在网络游戏开发中,Python也有很多应用,相比于Lua or C++,Python比Lua有更高阶的抽象能力,可以用更少的代码描述游戏业务逻辑,Python非常适合编写1万行以上的项目,而且能够很好的把网游项目的规模控制在10万行代码以内。
10. 桌面软件
Python在图形界面开发上很强大,可以用tkinter/PyQT框架开发各种桌面软件!
⑦ 学习经济学需要熟悉哪些编程语言
学习经济学需要熟悉哪些编程语言?
1)坛友arthur_2006
处理和分析数据都用得到,最基本的是excel,如果你的VBA用得好的话会有很大的帮助,如果你要分析数据的话,比如你要建模那么SAS还是不错的,不过比较难掌握如果你没有语言方面的基础,其他还有很多软件也能做得到。很多银行证券期货企业都使用的是oracle或者DB2,一些小企业可能使用的是SQL, 所以如果想在这方面发展就要掌握数据库的知识,毕竟金融和计算机兼备的人才还是稀缺的,而且国内很多行业都是用的是这几大数据库比如电信医疗航空等等,不会分析金融数据恐怕称不上什么金融专家吧,至于你分析得准还是不准那就要看你的金融知识掌握的程度啦,尤其是投资专业的学生学习一些这方面的知识是必要的,很多人是应用金融学专业的偏向于财务,那就去考考CFA,ACCA什么的,也没必要在这上面花费太多精力而且工作中很可能用不到的,金融数学金融工程精算专业的同学花点时间研究一下还是很有必要的,总而言之一句话,首先要看你的兴趣再就是你的专业和发展方向。
2)编程爱好者任坤
做统计和计量的话,想要跟当今的国际学术界接轨,最好学R,至少我所知道的目前美国的统计学术界被R占领的趋势很明显了。
如果只是做简单地回归随便解读一下,那随便选个傻瓜软件就可以了。如果只是应用现成的成熟的计量模型来做实证研究,那么傻瓜软件一般也就可以了。如果要以统计、计量为研究领域或者专业领域,那么编程性的东西是少不了的,即使是做实证如果涉及较为复杂的数据结构,懂编程也能帮你大幅提高生产力。另外,R的社区比较活跃,能够较好地跟上前沿。
如果涉及到处理较大的数据,一种办法是用SAS,如果不想用SAS可以学数据库方面的东西,比如把数据放在SQLite数据库中然后用{RSQLite}访问数据库,或者用{sqldf}通过SQL操作环境中的data frame。
如果觉得执行某项任务R单核速度慢,那么可以使用{parallel}或者{parallelMap}做并行计算,也可以利用云计算来处理数据。
如果涉及到其他社区的东西在R社区中没有实现,例如Java的东西,可以用{rJava}来调用Java的对象,不过速度有些慢。
比较好的办法是我在想从事数据分析工作,学什么软件或语言最好? 提到的F#函数式编程语言,用RProvider可以直接调用R,用JavaProvider直接调用Jar打包的Java程序,用PythonProvider(即将发布)直接调用Python程序,等等,很容易将各大社区的资源整合在一起使用。
目前我在GitHub上面弄一个通过R学习统计、计量、非参、数据可视化、数据库的repo: renkun-ken/learnR on GitHub ,虽然目前还没什么内容,不过可以跟踪一下。
以上说得都是经济学相关的统计和计量方面所需要的编程。事实上统计和计量所需的「编程」较为简单,基本也就是处理数据、应用已经提供的计量模型,更多需要编程的是:一、如果涉及较为前沿的计量模型,可能还需要自己实现;二、一些蒙特卡罗模拟需要一些编程。
从经济学相关的一些新型领域来说,计算经济学(Computational Economics)、计算统计学(Computational Statistics)以及计算计量学(Computational Econometrics)则需要较强的编程能力,包括算法实现、算法分析等等。举个例子,计算经济学中目前做的一块研究是Agent-based computational finance,就是建立一个模拟的金融市场,里面有几种资产,每种资产的基本面由随机的红利决定,里面有许多遵循各种逻辑的投资者,投资者对于红利发放持有的信念不同,因而从各自的逻辑触发的交易行为不同。在一个复式竞价(double auction)的交易市场中,什么样的投资者组成或者行为方式、什么样的记忆长短,能够最大程度地复制出我们在现实金融市场中观测到的资产价格或者资产收益率规律,例如资产收益率尖峰肥尾、不对称性。此时,研究者就需要较扎实的金融知识来设计一个不过于简单而又不过于复杂的模拟金融市场,也需要相应的编程能力把模型用程序语言编写出来。这中间会设计许多编程技术,例如数据库(有时要跟踪许多变量,例如投资者现金流动、财富分布)、并行计算(CPU多核并行、多进程并行、集群上的并行甚至GPU计算)等等。这方面的研究从1990s年代才开始。
3)知乎网友Jichun Si
计量经济学也有很多小的门类,请对号入座。有很多软件,Stata, matlab, R, SAS是相对来说用的比较多的。
如果是做应用计量(特别是横截面数据、面板数据),Stata是不二之选,因为不管是管理数据还是跑回归,实在太太太方便了。现在主流期刊的应用微观计量文章里面能用到的模型stata几乎都有,而且其中的绝大多数都是用stata做的。而且最大的优点是,简单!
如果做应用的时间序列,Eviews似乎是一个不错的选择。但是我一般不做这方面,也不是很有发言权。
如果做理论计量,stata eviews是没有现成的包的,而且即便Stata可以编程,可编程能力也是很差的,而且不稳健。所以懂R和Matlab就非常顺手。当然也可以用Python,最近Sargent就写了本用Python做计量的书。还有一个Julia,是这三种语言的混合,但是速度快很多,缺点是太过于小众。
如果对速度要求高,特别是金融计量很多对速度有要求的,可以考虑C、Fortran等语言。C和Fortran肯定是最快的。还有一个叫做OX的,速度快,但是也很小众。但是这些语言的缺点是学习难度比较高,开发时间比较慢。Julia据说速度堪比C,而且语法特别像Matlab、Python(意味着容易学习),但是处于刚起步阶段,用的人太少了。
如果是金融计量领域,强烈建议学会SAS。SAS是最权威,速度也很快,当然最大的问题是昂贵,而且可编程能力不是多么好。但是金融里面数据量都非常非常非常大,一般的软件都瘫的时候,SAS就派上用场了。
像我自己,做应用的时候都是用stata整理数据,能用stata的坚决不用其他软件。但是因为有的时候做一些理论计量的工作,所以matlab也是必不可少的。我也在学习Julia,因为matlab的速度实在太慢。Python我一般不用来做科学计算,用的人不多,而且速度慢,一般是用来抓数据的。
最后还是补充一点吧,为什么我推荐matlab而不是其他的软件,也是有道理的。很多模型,比如空间计量模型(spatial econometrics)、贝叶斯估计、以及宏观计量里面的DSGE model、SVAR等模型,在stata、Eviews里面都是没有什么现成的东西可以用的,但是matlab提供了丰富的包,比如Dynare就是基于Matlab的,还有LeSage的空间计量软件包等等,也是基于matlab的。所以几乎你想用的模型matlab里面都能找到codes然后直接用。就算没有,你自己在matlab里面写,也不是什么难事。
最后想起一句话来,关于这些软件的选择(stata除外,因为stata在应用计量领域的地位是几乎不可替代的)可以用两句话来概括:如果你自己的时间比计算机的时间宝贵的话,学习matlab、R、甚至Python、Julia是最合适的,如果计算机的时间比你的时间宝贵的话,学习C、Fortran是必须的。当然除非你的工作非常特殊(比如一些大型的结构模型的估计),一般来说,还是自己的时间更宝贵一点。
综上,做应用和做理论是不可能用一种软件解决的,建议根据自己的方向进行挑选。我觉着stata、matlab是比较推荐的,一个方便,一个灵活,都很强大,而且学习难度都不大,用的人都很多,交流起来相当方便。
4)网友张真实
数据,简单的用excel,直观,方便。复杂一些的…excel最多可以有6万多行,你确定你需要从那么大量的数据开始“学经济学么?
复杂的用R,各种模型,算法,实现,基本上R都有对应的软件包了,下载下来直接用即可,多读文档多练多用,半年左右就可以抛开excel直接用R作实战了。我博士论文全部回归和输出都是用R的,现在写的论文也都用它。替代品是Stata。也很好,但如果你和我一样是从0开始,那么强烈建议选R。
R的一个不足是没法作符号运算,这个免费的解决方案有python搭配scipy numpy等几个包,不过建议你用mathematica,它的符号计算功能最强大,输出格式也最好。你可以找个jacobian矩阵搞一下符号计算,比较一下结果就知道了。
Python这东西,熟悉了R之后,发现有功能是R实现不了的,到时候有实际需求了,再学也不迟。不是立刻就需要的。
此外,所有经济学研究(我是指empirics类型的,具体意思你懂的),都要会用latex,可以把它看做是一门编程语言。在word里排数学公式,用不了多久你就会疯掉。R中可以用ggplot2来绘图,输出到tex中。普通数据表用xtable包输出到tex,回归结果用stargazer输出到tex,都很方便。
5)网友bayes
首先要说的是R,绝对是目前国外学术界的主流,统计系基本除R以外没有其他了,计量作为和统计相关的方向,R也在逐渐渗透。所以推荐学习。
顺便说一句,R的学习曲线是比较陡峭的,所以我不太建议零基础的人从R开始,否则挫折感会比较强烈。而python会略好,所以我建议从python开始。
python并非是专用于统计或者计量的软件,而是一种非常流行的通用编程语言。经过多年发展,库也非常齐备。我试用过numpy,scipy和pandas等库,与其他通用编程语言相比,算是相当好用,不过个人感觉还是比不上R,比如画图,
ggplot2真心是神一般的存在,python的库还是略逊一筹。但是,除了数据处理之外,python可以干的事情太多了,也太牛了。我们主要要用到的,比如网页采集数据,需要正则表达式,解析网页等等。这些方面python就比R有优势多了。
当然,从趋势来看,未来似乎python比R更优。R是一群统计学家在编程序,python是一群计算机专家在争取搞数据处理。似乎python的基础更扎实。个人观点,仅供参考。
stata我认为是除了R以外最好的计量软件了,我两者均用过数年数个项目,但是依然感觉R更好用,整理和处理数据更方便。所以即使在楼上诸位所提到的微观计量领域,我依然更喜欢R。
除此以外spss,或者eviews等,感觉管理类学生用的更多,功能比较受限,不太推荐。这里不赘述。上述的几个软件,还有个问题,在于都是收费的,考虑到未来知识产权的保护,还是用免费的略靠谱。
R的主要缺点有两个:
1,面对大数据乏力。这方面sas确实有优势,但是不得不说,sas的语法太反人类了,完全接受不能。面对这个问题,我要说的是,你得看问题有多大。以我的经验,经济里面的数据量似乎还不足以超过R的处理上限很多。可能金融的高频数据会比较大,我个人没啥经验,如果遇到再补充。我尝试过10g的数据,最简单的办法,不是学sas,而是买16g的内存。:)以现在的内存价格,我觉得32g以下的问题不大。
2,性能不足。这方面python也有同样的问题,最好的解决方案是混合c/c++,不过这个就是无底洞了,耗时极多,都不见得能学好。建议的方法,还是买硬件,这个最简单。:)当然用并行包等,也是解决方法之一,我尝试过几次用机房的多台机器做集群,不是太成功。求高人指点。
上面诸位还提到过几个软件,我也略微说一下自己知道的一些软件的看法:
matlab:好东西,关键还是性能问题,同样可以靠c/c++来解决。但是我不喜欢比较大的软件,为了求个均值方差,等它启动就占了5分钟。。。
julia:好东西X2,目前关注中,可能还比较年轻,导致配套的库略少,不过看好未来发展,主要是吸取了matlab,python和c/c++的有点,写的快,运算的也快,未来看涨,紧密关注。
最后提一下函数式编程,是个好东西,但是不看好纯粹函数式编程的未来。它体现了一种颇先进的编程思想,但是在实际工作中,往往性能方面的问题较大。要解决这个问题,还是的混合函数式编程和其他方式,但这就是python,R等软件已经实现的方式,似乎又没有必要专门去学其他的函数式编程了。
6)上海财经大学博士 荣健欣
Stata微观计量中应用极多,主要是直接输命令回归,需要编程的地方不多。
至于编程,推荐R、Python.
R是非常好的统计分析软件,在计量经济学中的应用可以见Econometrics in R, Applied Econometrics with R Time Series Analysis with Applications in R这几本书
Python用来抓数据很好,并且有数学计算包SciPy可以部分替代Matlab之类科学计算的功能。
7)知乎网友justin
本科经济统计学,由于学校奇葩的课程设置,我们分别使用过:
EViews:计量经济学,时序和多元统计。
Stata:计量经济学。
SPSS:专门开的一门课,这个巨汗,权当复习了一遍统计学。
Excel:大一的统计入门课使用的,这个也巨坑,就是简单的函数使用,一点没有涉及VBA。
Matlab:这个没有专门的课,是上完了C语言程序设计以后副产品,后来接触了R和Mathematica就基本抛弃了它。
R/S-Plus:在回归分析的时候使用了S-Plus,不过那时候我已经使用R语言很久了,而且S-Plus基本兼容,所以没有使用过S-Plus。
Minitab:质量控制课程上用的,基本的统计加上一些实验设计。
SAS:这个在实验室中自学过几次,直接被其奇葩的语法雷到了,据说我们学校的研究生有专门的SAS课程(类似于本科的SPSS课程),呵呵了~
我们系的妹(xue)纸(ba)就曾经抱怨说使用的软件太多了,完全被逼疯的感觉,还给我们亲爱的系主任提过意见。作为学渣也就这个问题问过系主任,她的意思是不同的软件在处理不同的数据时候是各有所长的,而且你们课程还是蛮轻松的,就多学点吧,另外不同的老师有不同的软件使用爱好,上课使用不同的软件是必然的。
学习经济学的同学,Excel和SPSS,EViews(或者Stata)就蛮好的了,Stata和EViews都可以写一些程序的,SPSS的界面化操作也是很友好的。本人使用的R,在上各种课中也都会在学了那些软件后再使用R来实现(其实绝大多数时候R都已经有现成的包了,我也大多是直接使用),R还是很不错的,推荐。
很多前辈也提出了,经济学学生学习编程适可而止就好了,要不然就是一条不归路啊,面临着彻底转行的危险,本人就是一枚反面例子(泪~。所以什么Python啊,C++啊,Julia啊就不要接触了。