金融專業學生如何從基礎開始學習計算機?

金融本科專業在讀學生,想要學習計算機,但是我真的很白痴,怎麼都學不會,從學習vb血淋淋的一學期就可以看出來。因為本身對計算機不怎麼感興趣,而且本科金融專業用到電腦的機會真的沒有,我不知道哪些用處大,哪些沒什麼用T_T所以現在想要從計算機的基礎學起,求各位大神告訴我該從哪方面學起,對以後讀金融研究生有比較大的幫助。


謝邀。

首先說一下熟練運用計算機的必要性和意義。

在這個時代,如果從事專業性較強的職業,計算機應用的熟練程度、開發水平能很大程度的影響你的思維方式的嚴謹性和工作生產力。

思維方式方面,直接的體現就是,分析一個項目,學習計算機編程和從事涉及編程的項目開發(例如金融中的程序化交易、量化交易或者其他涉及大量數據處理和分析的研究型項目)能培養較為嚴謹的系統性思維,在處理各種項目時都大有裨益。

工作生產力方面,同樣是要處理幾十個Excel表格,無法熟練運用的人可能在很小的問題上就卡一天解決不了,枯燥的手動操作各種複製粘貼、改來改去,上司的一個需求變動就要大動干戈重新做一遍,這樣的生產力是極其低下的。目前國內據了解,可能大部分較為專業的金融從業人員都要和Excel等軟體打交道,但很少能熟練運用,只知道一些最基本的功能,大部分能夠通過編程或者聰明的操作方式完成的許多人還是手動完成。如果掌握了一定的編程技能,這些耗費大部分人一天甚至幾周時間的瑣碎的重複性工作(比如合併100個Excel表格、為2000人列印每份收信人名字都不一樣但內容相同的邀請函、按照特定方式處理較大的金融數據,從400頁的網頁上抓取空氣質量數據用來設計某種產品),到了懂編程的人手裡就只要幾分鐘或幾個小時就能完美的解決,並且遇到需求改變時也能從容淡定的換個參數重新執行即可。甚至在一些沒有計算機可用的情況中,編程仍能幫你解決問題,例如讓你按照名字字母順序排序1000頁文件,如果不懂任何排序演算法,那麼你可能會稱為無頭蒼蠅;如果你懂得排序演算法,那麼你就可以手動地來模擬計算機排序演算法,把這個任務按照比別人快很多倍的速度手動完成。

計算機在許多工作中都不是必要的,但很有可能幫助你大幅提升生產力。編程教會你如何思考(Programming teaches you how to think)和解決問題(problem solving)。

明確了非計算機專業的學生,尤其是金融專業的學好計算機的必要性和意義之後,我就主要講講我作為非計算機專業的金融學生學習計算機的經歷和一些想法,希望對題主有幫助。(對故事沒興趣的直接略過,跳到最後)

我是第一批「90後」,6歲以前根本沒有聽說過「計算機」這種東西,或者任何相關的概念,6-7歲上小學時聽說有個同學家有台「電腦」,但不知道那是什麼。後來鄰居家裡有了台電腦,才終於見到了廬山真面目,一個笨重的顯示器、主機箱、滑輪滑鼠和鍵盤。於是我經常往隔壁家跑,和隔壁小孩在電腦上隨便玩一切能玩的東西,似乎只有畫圖等等。那時覺得電腦是個很神奇的東西,覺得我們家裡也應該有一台電腦,就跟父母說:「寧願3個月不吃飯,也要買一台電腦」。感謝父母的遠見卓識,攢了攢錢,在我9歲時家裡買了一台電腦,上面裝著 Windows 98,一個專業人員過來把電腦裝好後我第一個做的事就是趕緊把畫圖打開,隨便畫了畫,那種興奮感無以言表。

後來,發現街上有一些賣盜版碟的小店,光碟密密麻麻的擺在兩個分類中。一看光碟外包裝上的畫面就知道這是遊戲,另一些畫了一些抽象的圖形的就是軟體。一開始,我對軟體沒有什麼太多概念,基本就是買點遊戲盤隨便裝著玩。現在看起來值得慶幸的是,我沒有陷入遊戲世界無法自拔,處於一次偶然的想法,覺得遊戲玩一玩也就那樣,不如看看旁邊那些「畫著抽象圖標的奇怪光碟」裡面究竟是什麼。不看不要緊,一看我就此進入了計算機和編程的世界。那時隨便買了點軟體光碟,裡面有個叫VB6,不知道什麼意思,回去電腦上裝著看看。結果發現,裝完打開後什麼也沒有,自己摸索著創建了一個「工程」,發現外面的大窗口裡面居然有個小窗口,旁邊的工具箱裡面還有一大堆小圖標。隨便點了個畫著按鈕的小圖標進去,發現居然小的窗口裡面出現一個圖標上畫的按鈕,又經過一陣摸索,發現修改Caption這個裡面的內容按鈕上的字就變成了修改後的內容。

雙擊那個按鈕就切換到了另一個試圖,裡面是一些英文詞,自己改了改都說寫的錯的,錯誤信息也不知道什麼意思。後來發現這個按鈕有一個屬性叫作Name,胡亂實驗後終於可以讓點擊按鈕後按鈕的文字變成另一串字了!這項發現對當時的我來說是個巨大的衝擊,從未接觸過編程的我發現,自己居然可以用代碼來控制這台機器中的窗口和裡面顯示的東西。後來又拖了個進度條進去,想寫一個跟「複製文件」窗口差不多的進度條不斷增加的那樣一種小程序。東湊西湊,終於把計時器(Timer)、按鈕(Button)、進度條(ProgressBar)湊到一起,自己發現了 x = x + 1 這樣的方式能讓進度條的值增加。用Timer 0.1秒加一格進度條,終於實現了一個自動加進度條的小程序!那時還10歲的我,異常興奮。後來就摸索的越來越多,看到微軟發布了C#,覺得名字很酷,看樣例代碼發現跟以前用的VB代碼差異很大,後來出於好奇和探索欲轉換到了C#上,轉換的過程很痛苦,本來VB弄得就是一知半解,大量從未聽說過的概念,莫名其妙的錯誤。後來經常喜歡用C#做一些自己有興趣的小東西,也逐漸開始看書,Beginner,Professional等等都看過,凡是在電腦上需要重複性工作的東西我都先考慮能不能用C#編個小程序解決。

初中一次學校比賽,每個班要製作自己的一個小網站。我用自己學得網頁設計、製作、HTML, CSS用http://ASP.NET做了一個小網站,弄了個小空間和子域名,交給學校評比,獲得了一等獎。看到其他班級做的,都還停留在FrontPage生成的、不經修飾的難看網頁中,我非常得意,並且在不斷地學習新東西。在這個過程中,我上了初中和高中。

後來上大學,選擇了廈門大學金融系,那時並沒有想讀計算機專業,因為覺得計算機就像我的朋友,專門學計算機反而沒意思了。上大學時,給學生機構做了個網站,給學院也做了幾個網站,另外還接觸到了平面設計、視頻剪輯、特效等等東西,因為學院裡面並沒有多少這方面熟練的同學,於是得著一個計算機看起來不錯的同學就拚命用,正所謂「能者多勞」,我也覺得是學點新東西的機會,於是就做了不少這方面的東西,簡單地學了些Adobe Photoshop,Illustrator, After Effects, Premiere Pro等等,後來還下載了不少http://Lynda.com上的教學視頻看看,受益頗豐。

大三時選專業,我選了金融工程專業。那時開始更多地使用Excel做財務數據的簡單整理和分析(例如計算WACC, EVA,做財務預測等等),在完成課程案例項目的過程中逐漸探索和完善自己做的表格,最後形成了美觀、易用、用戶友好、冗餘性低、靈活度高的財務分析表格。後來學習的東西涉及到了計量經濟學和一些統計學模型,逐漸開始接觸Matlab和R,發現國內許多老師都用Matlab,海歸老師基本都用R。

在大學中,我主要的生產語言是C#,寫了個基於本地網路的公司財務決策博弈的遊戲,原理類似於MESE,就是伺服器端程序開啟一場遊戲,定義經濟體和多種資源數量,客戶端連接到伺服器端,每個客戶端都代表一個公司,每一期內公司向市場買資源(實時的),可以決定借貸、建立工廠、部署生產線,每一期結束前在限定的時間內提交生產產品的數量和價格,以及推廣、研發投入的決策,伺服器端根據所有客戶端提供的決策匯總起來根據一個自己想出來的市場模型決定下一期的勞工成本、借貸利率,並且根據需求和供給決定產品價格、各個公司售出多少,推廣費用是否奏效,研發投入帶來了技術提升有多少,等等,幾乎給每個變數設計了內在的矛盾和博弈,例如大家推廣費都很高那就沒什麼效果,一個公司市場份額變化與每期該公司出的推廣費佔所有公司推廣費之和的比值成正比,等等。每期結束後伺服器計算好各種數據,為每個公司形成一個財務報表發布給各個客戶端,各個客戶端根據這些信息再做下一期的決策。寫好之後,找來一些同學測試,或者來玩。看著幾個同學在絞盡腦汁設計自己的公司運營策略,我覺得很有成就感。

雖然一直緊跟著C#的發展,每出一個新版本就把新特性都學一下,比如匿名方法、Lambda expression,LINQ 等等,不斷地更新自己的知識庫和編程方法,逐漸形成了一套比較系統的寫程序的方法。後來發現,整個計算機界還有那麼多東西值得探索——演算法、資料庫、數據挖掘等等等等。除了 general-purpose的編程,我還使用 Mathematica 做符號運算,並且略知M的主要編程範式是函數式編程。後來看到一篇文章說C#的新特性多半來自於F#,於是出於好奇開始學F#語言,那是第一次正式接觸到比較純的「函數式編程」,覺得這個語言奇怪極了,完全不像是C/C++/Java這種體系的語言。從 imperative programming轉換到functional programming是痛苦的,兩者的基本方法和世界觀就不太一樣,一開始很不適應。後來逐漸發現函數式編程實在是妙極了,能夠用簡短的語言快速地解決我原來很麻煩才能解決的問題。在這些過程中,又做了些網站,但每次做都有新的進步,例如引入了MVC架構,嘗試了AJAX,採用了HTML5,jQuery等等,並在這一過程中接觸了更多的工具、編程語言,並且逐漸開始使用資料庫來存儲和調用數據,玩過SQL Server, MySQL, SQLite等等,甚至後來來自己部署了一個Hadoop(雖然沒起到作用)。

===

到了現在在讀的金融研究生階段,由於更多地涉及建模和數量化的東西,更多地學習統計編程。我們時間序列分析的課程和非參數計量經濟學的課程都要求用R來完成,寫東西最好用LaTeX。雖然以前用R寫過一點東西,不過是這些課程和一些研究項目逼得我逐漸開始使用R和學習R,並且更多地接觸了背後的開源社區,逐漸發現世界上有這麼一大批人,無償的貢獻自己的力量,解決各種各樣的問題。開源社區的力量是無窮的。後來我也在GitHub上註冊帳號,並且把自己使用一些開源項目時遇到的問題和bug用英文寫成issue供大家討論。後來在RProvider項目上(一個允許在F#中使用R函數的Type provider)發起的一個issue,項目所有者建議我改一下代碼發送一個pull request,那時我還不了解Git版本控制系統的工作方式,趕緊導出找資料看什麼是Git,什麼是Fork, Branch, Merge, Pull, Push, Pull request等等,發現「原來這些開源項目都是這樣組織起來的!」,終於明白了上百人如何同時投入一個項目的開發而不造成大量的重複勞動和衝突,明白了各種我們用的軟體的項目周期是如何推進的。這些對我而言就是很有意思的。

後來,在做一些金融量化交易策略時就把這些全部都用上了。多人同時開發時用的Git版本控制和issue tracking等等大幅提高了整個團隊的生產力,在R中寫了很多代碼,有的項目重構了很多次,慢慢積累了很多有用的擴展包,並且大量的看相關的文章和博客,還去stackoverflow提問等等,看到一個擴展包或者工具有問題或者需要改進的地方就去GitHub提出個issue建議改進並且參與討論,或者直接自己fork發pull request。雖然這些東西更偏向計算機的東西,和我本專業並沒有太大關係,但是這些東西都提供了生產力和效率。

===

故事講了這麼多,該做個總結了。

從我自己的經歷來看,非計算機專業的學生想學好計算機,要麼就要有很強的興趣、探索欲,要麼就要有非學好不可的壓力(比如作業無法完成),兩者都有是最好的,會快速提升你的技能。另外,需要有「專業化」(professionalism)的精神,就是想把事情做專業一些,做完美一些,這樣你的一個項目從一開始的簡陋不斷完善成美觀、易用、交互體驗良好、背後的設計思維一致,才有動力實現,在不斷追求專業化的過程中你的水平才能進步。

對於小孩而言,他們有大量的時間探索、試錯、思考、查閱,這樣積累起得經驗是最原始的,最直覺的,我就基本屬於這種情況,就是探索——學習——探索——學習的過程。對於一個成年人,可能就沒有那麼多精力探索自己領域以外的東西了,因此建立起直覺可能會非常耗時。想學好的唯一的秘訣就是大量使用計算機和編程,所有東西都想想能不能用計算機來做,不會的東西多試驗,或者多查資料,做的東西都不是做完就完了,多想想能不能改進——技術上、效率上、結構上等等,凡是能改進的全都改進,不斷地改進,即使是一個Excel表格。在這個過程中,多激勵自己,讓自己有成就感。只看書、只上課學而不去大量的實踐做各種小項目,純屬浪費時間。

小項目從哪裡來?到處都是。如果一開使做不了我本科做的那種企業經營模擬對戰,可以從課本上簡單的東西來。自己實現一套二叉樹歐式期權定價、美式期權定價、蒙特卡羅方法歐式期權定價,美式期權定價,不斷地完善並且一般化、參數化,直到能輕鬆地做亞式期權、百慕大期權、敲入敲出期權、障礙期權定價。寫的過程自己分析、自己設計,做出來後自己調試、自己測試,千萬別看別人怎麼做的。完成之後,看看別人怎麼做的,能吸取到哪些教訓,學了哪些新東西。你的下一個小項目,水平就更高了一點。不斷地積累下去,是一切學習的秘訣。

那麼,對於一個沒有多少計算機基礎的金融本科生,如何開始呢?我提供一些建議:

  1. 不要眼高手低,光看,不實踐。把基本的辦公軟體學紮實,作為碩士生應該要掌握基本的LaTeX,不喜歡這套體系可以用LyX,總之文檔排版系統是基本應該會用的。
  2. 開始學編程。R,Python等等都可以,把網上的簡單教程看個遍,代碼敲個遍,別偷懶,運行之前多預測會產生什麼結果,多調整一下自己寫的東西看看會產生什麼不同,多思考為什麼會這樣。之後實現一些基本的演算法,也可以實現你學的統計和計量模型,比如線性回歸之類的,學一個實現一個,金融計算模型(二叉樹、蒙特卡羅期權定價等等都實現一下),總之要大量寫代碼,遇到問題自己嘗試解決,解決不了去社區看看。
  3. 學習一下資料庫,推薦SQLite,免費輕量級,簡單易用不用部署,在R和Python裡面很方便調用。對你以後做數據密集型的研究和應用有好處,我現在做的股票數據、高頻市場數據都放在SQLite資料庫裡面,學習一下SQL語言。
  4. 【此條僅為興趣】如果涉及編程密集型的團隊研究或者其他項目(例如設計和優化新的金融套利策略和相應的回測程序,或者開發一種最新論文中的非參數統計工具並檢驗),凡是有多人協作的項目,都建議學一下Git版本控制系統,開源用GitHub,閉源用Bitbucket託管你的項目,寫文檔、issue tracking,wiki,都讓你的項目井井有條,用軟體工程的方式管理各種項目,是現代項目管理基本都要涉及的。

我的其他回答已經涉及到了接下來的問題,一個金融專業的學生可能面臨的和計算機相關的問題:
精於哪些軟體能為求職增添優勢?
學習經濟學需要熟悉哪些編程語言?
想從事數據分析工作,學什麼軟體或語言最好?
如何迅速成長成為一名數據分析師?
作為一名金融學的研究生,如果從零基礎開始學量化投資,需要學哪些東西,做哪些東西?
該如何學習R語言?


我來嘚瑟一下~以我個人經歷來說。
我從小就喜歡電腦,而且不是喜歡玩遊戲那種喜歡。初中的時候同學一起上電腦課,我就玩冰河,享受同學此起彼伏的哀嚎。一般主要控制女生電腦,然後藉機「修電腦」,哈哈~
初中開始自學access資料庫,excel的VBS這些,但是不是很深,因為在當時的我來說,學來也沒什麼用。
學習編程主要是在大學時期。大學比較閑,語言類主要是學C++和C#,資料庫就是SQL。後來又學了做網站(其實學習的動機來源於當時和一哥們準備搞一個項目),html,cs,javascript,很淺的php和java。
給學校做BBS,給校黨委宣傳部做網站,還做了些商業項目,有一些收入。當時任學校BBS站長。

後來跨專業到金融,現在也在金融業工作。

總結一下自己的感悟。由於自己都是邊玩邊學,邊學邊用,理論體系基本沒有,也就是野路子,但是在實踐中摸索學習效率會比較高。特別是掌握一些基礎思路和方法後,帶著問題和目標去學習,更快入門上手。C沒有碰過,據說很NB,不過我個人感覺面向對象的這些語言十分契合人類的思維,至少是我的思維。所以,語言就是工具,關鍵是你。

剛開始學習肯定會一頭霧水,甚至覺得這些語言簡直是逆天非人類,但你至少掌握一門並且入門後,你會發現其實大部分語言都差不多,只是形式不一樣。

我個人不建議為了處理好EXCEL就去學習vbs,我覺得還是從大一點的,全一點的語言開始,能培養思維。

至於金融與計算機技術的交叉,說點虛的先。我認為學科之間是有聯繫的,至少遵循類似的思維模式。雖然我還沒總結出來是個什麼,不過對我理解把握金融經濟或者計算機技術,還是有一定幫助。

我建議題主跳出有用沒用的考量方式,以一個好奇的心態去面對,常思考,習慣把具體的東西抽象化進行橫向對比,這樣你會更容易理解和上手。另外,不要拘泥於具體語句拼寫或語法這類,現在互聯網這麼強大,百度一下你就知道。

落實在我現實工作中,計算機技術除了在思維上給我一些幫助外,具體工作中也會來用。比如,vlook函數被用爛在數據匹配里,我想這一點常用excel的同學都有感觸。另外,批量的excel表格建立、修改,分拆、合併,借組VBS,也就幾分鐘的事。這些其實都和金融不太相關,也就是日常辦公所需。

在我的工作中,需要對全轄外匯交易數據進行一定分析,從中尋找違規的蛛絲馬跡,還要核查線索,尋找證據。當然我們自身科技部門也很強大,有一套配套的系統,但其實這些系統也只是提供一個數據介面,就像給你準備好很多食材,怎麼做看你本事了(今天一天我都在干這破事)。

你要讀金融研究生,那課程中會有計量經濟學,會有財務分析,資產定價。這些都是要通過計算機完成的,雖然演算法更為關鍵,但起碼你得會處理數據。

我建議你可以找那種不就編程談編程的書來看,培養思維,了解計算機技術。還有,保持一顆好奇心


問題:因為本身對計算機不怎麼感興趣,而且本科金融專業用到電腦的機會真的沒有,我不知道哪些用處大,哪些沒什麼用T_T所以現在想要從計算機的基礎學起,求各位大神告訴我該從哪方面學起,對以後讀金融研究生有比較大的幫助。
梳理下:1.對計算機不敢興趣,切用不到什麼專業的東西;
2.不了解計算機各方面的應用;
3.想了解計算機的基礎並找下以後的可用方向;
4.對金融幫助比較大;
結果:
1.有本書叫《計算機應用基礎》,完整的介紹了計算機大多數方面的基礎,全面簡單入門,基本所有的專業修計算機的入門課,推薦你必看;其他的等你找到興趣了再根據某個方面往下拓展就可以了;
2.對金融幫助大的計算機方面,我知道的就是一個同學正在做的LMAX技術研究,主要是大數據實時處理了,那這樣的話你可以考慮下看MLDM方面的書,其他的office這些多數會用足夠了(以後做文檔處理的除外);


樓主,我也是金融大二學生額,股票的分析不需要資料庫嗎?計量經濟學不需要軟體嗎?統計學不需要統計軟體嗎?你到任何公司難道不需要Word,excel,ppt嗎?寫論文做模型不需要Excel嗎?沒有數理模型的論文現在還能叫論文嗎【雖然我覺得這不是好的現象】。學習會計不需要掌握會計電算化嗎?


作為金融專業出身現在在互聯網公司混的人,突然想回答這個話題。
-----------------------------------------------
本來想寫一堆學好計算機的重要性的,想想文不對題,還是算了。直入主哦題吧(但是上面很多人都說得差不多了我去)

首先office工具你得熟。excel用來處理基礎數據,因為你大部分本科和非數據分析類工作面臨的數據處理問題都能夠用excel解決。excel函數寫起來也簡單,VB嘛滿足工作需要就好。
計量軟體你起碼得會一個。逼格低的EViews和SPSS以及逼格稍高的STATA任選其一,反正都是傻瓜式操作。市面上的計量經濟學教材都會給你配套一個軟體教程,你所需要做的基本就是傻瓜式按部就班操作寫兩行簡單至極的代碼罷了。
到目前為止你基本已經可以應付掉本科畢業論文,我當時就是CSMAR搞源數據+EXCEL做data cle
an+用一個學術界常用灌水的計量模型+EViews做regression和test+口水話搞定了畢業論文。(別學我當時因為在實習所以沒心思寫好但是內心是蠻後悔的)
但很快你會發現源數據搞起來很麻煩excel處理效率太慢eviews就呵呵呵呵呵呵,所以你要學著寫SQL+R/python,上面很多人會提到LaTeX,我本科就直接工作了不用寫學術論文所以不咋用這玩意兒。
哦對了沒有說MATLAB,我不怎麼做數值計算所以用得少,不過身邊有同學MATLAB用得蠻好然後工作之餘去給別人做培訓講師每個月也能拿個五六千的零花,錢是第一推動力,笑。
正經的說,MATLAB R2015a的功能已經做得很完善,集成了一堆機器學習的分類模型比如決策樹SVM和KNN,要不是價格貴不如R親民我都想轉用MATLAB了…

工作或者比賽上的的推動會讓你更有方向感。比如工作時突然覺得A維度和B維度可能會與最後自己想要的結論存在有一定的關聯性,那麼你會等著慢慢提需求給技術還是自己動手去做?一做才會發現原來這些自己要的維度分布在不同的資料庫里要自己去找出來,找出來之後才發現有那麼多臟數據,最後清理完了還要想自己現有的東西是不是符合模型的假定比如處理時間序列時不平穩怎麼辦?是不是GARCH可以隨便套?等等等等
————
最後總結一下,你可以把金融看成是一項業務,想出一個東西有時候很簡單,但是如何實現才是關鍵,這時候技術起到的作用就至關重要了。多去琢磨一下你學了那麼多金融學理論,自己能夠實現幾個。talk is cheap,show me the code.


確實跨專業學習計算機會是一頭霧水,很難下手,尤其是計算機的課程那麼多,看著都會想放棄。
不過,我還是推薦題主看一下下面這個鏈接JustFollowUs/CS_MUST,這個在階段三前面的都必須掌握,這些是公認的所有學習計算機都必備的技能。
階段三的內容也很重要,但考慮題主是跨專業,所以可以跳過。
如果題主學完了對於計算機還充滿興趣,希望繼續往計算機的其他方向深造的話,題主可以選擇這個下面一個感興趣的方向進行學習,JustFollowUs/Computer-Science-and-Technology。這個列表還在完善,預計在今年年前會涵蓋計算機大部分研究方向的內容。
希望對題主有幫助,謝謝。


金融看學校出身,不是頂尖的就不用浪費時間了。多實習打打雜就行了。金融單位直接從好學校理工科招人就可以了,為什麼要招普通學校的金融專業?


很好


私以為,excel應付日常基本的工作和學習需要足夠了,並且excel本身自帶強大的VBA編程功能,熟悉它足以培養你編程思維,具有了這種思維,任何編程語言都可以快速的學會。
另外,對於統計、建模,一般的Excel也可以解決,而大樣本,高頻數據Stata很好用啊,也很簡單。


推薦閱讀:

想學爵士風格的低音提琴一定要先學習古典的低音提琴嗎?
杭州有什麼適合看書的地方
學習一個新領域的知識的最佳方法和最快時間各是什麼?
認真看過知識但是記不住怎麼提升記憶力和學習效率?
學習不好 老感覺班裡的人看不起自己怎麼辦?

TAG:學習 | 計算機 | 金融 |