① 第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啊就不要接觸了。