第一講python金融應(yīng)用概述_第1頁(yè)
第一講python金融應(yīng)用概述_第2頁(yè)
第一講python金融應(yīng)用概述_第3頁(yè)
第一講python金融應(yīng)用概述_第4頁(yè)
第一講python金融應(yīng)用概述_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

北風(fēng)網(wǎng)項(xiàng)目實(shí)戰(zhàn)培訓(xùn)Python與金融應(yīng)用概述大數(shù)據(jù)時(shí)代的Python金融應(yīng)用什么是PythonPython是一種高級(jí)、多目的的編程語(yǔ)言,在很多領(lǐng)域和技術(shù)層面都有廣泛的應(yīng)用。Pythonisaninterpreted,object-oriented,high-levelprogramminglanguagewithdynamicsemantics.Itshigh-levelbuiltindatastructures,combinedwithdynamictypinganddynamicbinding,makeitveryattractiveforRapidApplicationDevelopment,aswellasforuseasascriptingorgluelanguagetoconnectexistingcomponentstogether.Python’ssimple,easytolearnsyntaxemphasizesreadabilityandthereforereducesthecostofprogrammaintenance.Pythonsupportsmodulesandpackages,whichencouragesprogrammodularityandcodereuse.ThePythoninterpreterandtheextensivestandardlibraryareavailableinsourceorbinaryformwithoutchargeforallmajorplatforms,andcanbefreelydistributed.Python語(yǔ)言的主要特征開(kāi)源Python和大多數(shù)的支撐庫(kù)和工具都是開(kāi)源的,通??梢苑浅l`活的使用而且有開(kāi)放的協(xié)議。解釋性也可以使用Cpython完成將解釋性語(yǔ)言轉(zhuǎn)化為實(shí)施可執(zhí)行的Python二進(jìn)制代碼的應(yīng)用多框架Python語(yǔ)言支持不同的編程與實(shí)現(xiàn)框架,例如面向?qū)ο?、和必要的函?shù)型或過(guò)程化編程。多目的Python可以用于快速的、交互式的代碼開(kāi)發(fā)以及建構(gòu)大型應(yīng)用系統(tǒng),它也可以用于底層系統(tǒng)操作以及高級(jí)分析的任務(wù)。Python的簡(jiǎn)單歷史雖然Python可能對(duì)于某些人來(lái)說(shuō)還是新事物,但是其實(shí)它已經(jīng)發(fā)展了很長(zhǎng)時(shí)間。事實(shí)上,對(duì)Python的開(kāi)發(fā)自1980年代就已經(jīng)開(kāi)始,創(chuàng)始人是荷蘭的GuidovanRossum。需要注意的是,這一點(diǎn)也通常使剛剛接觸Python語(yǔ)言的人感到迷惑,就是目前有兩種可行的Python版本,都在開(kāi)發(fā),而且自2008年以來(lái)被平行使用。目前,兩個(gè)版本之間并沒(méi)有100%的兼容,而且對(duì)Python3.0來(lái)說(shuō)也不是所有的庫(kù)都可以使用。因此本課程主要使用的是2.7版本,雖然大多數(shù)的例子代碼在3.0中也是可以運(yùn)行的。Python生態(tài)系統(tǒng)本課程中展示的例子都是使用Ipython這種流行的Python交互式開(kāi)發(fā)環(huán)境(IDE)。雖然它開(kāi)始的時(shí)候只是一個(gè)升級(jí)的外殼,但是今天的IDE中已經(jīng)有很多可選的東西(例如支持調(diào)試)。Ipython通常被稱(chēng)為Python生態(tài)系統(tǒng)的killerapplication,在很多方面對(duì)標(biāo)準(zhǔn)的交互環(huán)境進(jìn)行了改進(jìn)。例如,提供了命令行歷史命令的功能,允許較為容易的觀(guān)測(cè)對(duì)象等。在這個(gè)系統(tǒng)中,獲得幫助也是非常容易的。Ipython提供了多種版本:包括一個(gè)殼版本,一個(gè)基于QT圖形用戶(hù)界面的版本以及一個(gè)基于瀏覽器的版本(NOTEBOOK)。Python的用戶(hù)群體Python不僅會(huì)吸引專(zhuān)業(yè)的軟件開(kāi)發(fā)人員,而且可以為業(yè)務(wù)開(kāi)發(fā)者,領(lǐng)域?qū)<液涂茖W(xué)計(jì)算開(kāi)發(fā)者所使用。專(zhuān)業(yè)的軟件開(kāi)發(fā)者:Python支持所有的編程框架,有大量的開(kāi)發(fā)工具,專(zhuān)業(yè)的軟件開(kāi)發(fā)者可以使用這些工具來(lái)構(gòu)建自定義的框架和類(lèi),與基礎(chǔ)的Python庫(kù)和科學(xué)計(jì)算庫(kù)一起,實(shí)現(xiàn)生態(tài)系統(tǒng)的最大化應(yīng)用??茖W(xué)開(kāi)發(fā)者和領(lǐng)域?qū)<遥哼@些用戶(hù)會(huì)大量的使用某些庫(kù)和框架的框架,來(lái)創(chuàng)建自己的應(yīng)用程序并且隨著時(shí)間進(jìn)行提升和優(yōu)化,使得整個(gè)生態(tài)系統(tǒng)滿(mǎn)足他們的具體需求。這類(lèi)用戶(hù)通常會(huì)致力于較長(zhǎng)時(shí)間的交互操作,快速的形成新代碼的原型,并且對(duì)研究以及領(lǐng)域數(shù)據(jù)集進(jìn)行探討和可視化。比較隨意的編程人員使用Python來(lái)處理他們認(rèn)為有優(yōu)勢(shì)的具體問(wèn)題。例如可以將一些matplotlib的具體代碼進(jìn)行復(fù)制,稍加修改來(lái)滿(mǎn)足特定的業(yè)務(wù)需要。另外,還有編程的初學(xué)者也會(huì)使用Python作為教學(xué)語(yǔ)言,這是因?yàn)樗幕A(chǔ)語(yǔ)法是比較容易學(xué)習(xí)和理解的,解釋對(duì)非編程人員來(lái)說(shuō)也是這樣,而且Python還支持幾乎所有的編程模式??茖W(xué)計(jì)算庫(kù)科學(xué)計(jì)算庫(kù)是Python語(yǔ)言的重要組成部分,其包括:NumPy:提供了多維數(shù)組對(duì)象保存同質(zhì)或異質(zhì)的數(shù)據(jù),它還提供了處理這個(gè)數(shù)組對(duì)象的優(yōu)化函數(shù)/方法。SciPy:包含一系列子庫(kù)和函數(shù)來(lái)完成科學(xué)和金融領(lǐng)域的重要標(biāo)準(zhǔn)功能,比如三維曲線(xiàn)插值以及數(shù)值積分。Matplotlib:這是Python最為流行的繪圖和可視化庫(kù),提供了2D和3D的繪圖功能。PyTables:是流行的HDF5數(shù)據(jù)存儲(chǔ)庫(kù),這個(gè)庫(kù)可以完成基于有層次的數(shù)據(jù)庫(kù)和文件格式的優(yōu)化的,以磁盤(pán)為基礎(chǔ)的IO操作。Pandas:pandas基于NumPy來(lái)創(chuàng)建,提供了管理和分析時(shí)間序列以及表格數(shù)據(jù)的豐富的類(lèi);它與matplotlib庫(kù)緊密結(jié)合提供了繪圖功能,和PyTables類(lèi)結(jié)合提供了數(shù)據(jù)讀取功能。討論一些量化金融中的例子,顯示使用Python以及其附屬的金融分析庫(kù)處理起來(lái)是多么方便。這些例子是描述性的,對(duì)于一些Python語(yǔ)言以及實(shí)際應(yīng)用中的細(xì)節(jié)問(wèn)題并不做過(guò)多介紹。本講包括以下幾個(gè)例子:隱含波動(dòng)率:不同到期期限期權(quán)的隱含波動(dòng)率求解并作圖,這是很多期權(quán)交易者以及風(fēng)險(xiǎn)管理者面對(duì)的一項(xiàng)日常任務(wù)。MonteCarlo模擬:通過(guò)MonteCarlo模擬來(lái)得到一組隨時(shí)間變化的股票指數(shù),將選擇的結(jié)果作圖,并計(jì)算歐式期權(quán)的價(jià)值。MonteCarlo模擬方法是數(shù)值期權(quán)定價(jià)以及value-at-risk風(fēng)險(xiǎn)管理以及信用價(jià)值調(diào)整的基礎(chǔ)。技術(shù)分析:通過(guò)對(duì)歷史時(shí)間序列的分析,完成對(duì)一項(xiàng)基于趨勢(shì)信號(hào)的交易策略的回測(cè),專(zhuān)業(yè)投資者以及激進(jìn)的業(yè)余投資者通常都會(huì)進(jìn)行這類(lèi)型的投資分析。Python在金融中應(yīng)用的典型示例隱含波動(dòng)率給定類(lèi)似于Black-Scholes-Merton(1973)的期權(quán)定價(jià)公式,隱含波動(dòng)率是指:在其他條件不變的情況下,通過(guò)將這個(gè)隱含波動(dòng)率數(shù)值代入到公式中,可以得到不同的執(zhí)行價(jià)格和期限的期權(quán)的市場(chǎng)報(bào)價(jià)。本例中,波動(dòng)率不是代入到模型或公式中的一個(gè)輸入?yún)?shù),而是給定這個(gè)公式而得到的一個(gè)(數(shù)值)優(yōu)化過(guò)程的結(jié)果。這里我們考慮的例子是關(guān)于一項(xiàng)新的期權(quán),即基于VSTOXX波動(dòng)率指數(shù)的波動(dòng)率期權(quán)。Eurex是提供基于VSTOXX和各種期貨合同的衍生品交易市場(chǎng),于2013年6月建立了一個(gè)綜合化的Python為基礎(chǔ)的關(guān)于這個(gè)指數(shù)以及基于此指數(shù)的衍生品合同的教程,稱(chēng)為”VSTOXXAdvancedServices”。隱含波動(dòng)率

隱含波動(dòng)率

隱含波動(dòng)率隱含波動(dòng)率從表中可以看出,交易的看漲期權(quán)中有非常實(shí)值的(指數(shù)的水平比期權(quán)執(zhí)行價(jià)格高出很多),也有非常虛值的(即指數(shù)的水平比期權(quán)執(zhí)行價(jià)格低很多)。因此,我們希望將分析限制在某種給定的(遠(yuǎn)期)moneyness水平上,給定分別期限的期貨價(jià)值。假設(shè)我們?cè)试S期貨水平上下50%的波動(dòng)。首先,我們定義新的一列來(lái)存儲(chǔ)結(jié)果,并引入我們需要的函數(shù)?,F(xiàn)在我們計(jì)算看漲期權(quán)的隱含波動(dòng)率。隱含波動(dòng)率接著,我們將所選擇的期權(quán)的隱含波動(dòng)率用圖形表示出來(lái),我們首先取隱含波動(dòng)率大于0的子集(也就是我們進(jìn)行了隱含波動(dòng)率計(jì)算的子集)。為了數(shù)據(jù)的可視化,我們對(duì)于數(shù)據(jù)集的所有到期日進(jìn)行迭代,并且將隱含波動(dòng)率做成線(xiàn)狀圖或者單點(diǎn)圖。因?yàn)樗械牡狡谌诊@示為多個(gè)時(shí)間,我們需要使用一點(diǎn)技巧來(lái)獲得沒(méi)有重復(fù)的,排序的日期列表。在Python中,set操作可以去掉重復(fù)項(xiàng)目,但是獲得的是沒(méi)有排序的期限集合。因此,我們還要對(duì)set進(jìn)行排序。接著我們對(duì)所有的日期進(jìn)行迭代并作圖。在這里可以看到一個(gè)明顯的波動(dòng)率微笑圖形。而且對(duì)于長(zhǎng)期的期權(quán)來(lái)說(shuō)更為明顯。隱含波動(dòng)率我們來(lái)看pandas另外一個(gè)強(qiáng)大的功能:對(duì)于按照邏輯索引的數(shù)據(jù),DataFrame對(duì)象options_data都有一個(gè)整數(shù)的索引。但是這個(gè)索引是沒(méi)有含義的,2014年3月31日交易的期權(quán)報(bào)價(jià)通過(guò)期限和執(zhí)行價(jià)格來(lái)唯一描述,也就是說(shuō)每個(gè)到期日的每個(gè)執(zhí)行價(jià)格水平都對(duì)應(yīng)著唯一的一個(gè)看漲期權(quán)。Groupby方法可以得到一個(gè)更為有意義的索引,我們可以分別按照MATURITY和STRIKE進(jìn)行索引。在這個(gè)例子中,我們只保留PRICE和IMP_VOL的列。這樣的操作會(huì)返回一個(gè)DataFrameGroupBy對(duì)象,為了獲得這個(gè)數(shù)據(jù),我們需要對(duì)這個(gè)對(duì)象進(jìn)行加總操作。MonteCarlo模擬MonteCarlo模擬是金融和一般計(jì)算科學(xué)的一種非常重要的算法。其重要性來(lái)源于它在期權(quán)定價(jià)和風(fēng)險(xiǎn)管理問(wèn)題上非常有力的事實(shí)。與其他數(shù)值算法相比較,MonteCarlo方法可以很容易的處理高維的問(wèn)題,應(yīng)對(duì)復(fù)雜性和計(jì)算的需求,而這些需求常常是線(xiàn)性增長(zhǎng)的。MonteCarlo模擬方法的不足是其通常需要加大的內(nèi)存,即使是針對(duì)比較簡(jiǎn)單的問(wèn)題。因此,有效的運(yùn)行MonteCarlo方法是必要的。這里的例子給出了Python中處理這個(gè)問(wèn)題的不同策略,統(tǒng)統(tǒng)了不同的歐式期權(quán)Monte-Carlo模擬定價(jià)的處理方法。三種方法如下:純Python的解決方案:這個(gè)例子依賴(lài)于Python基本庫(kù),即那些標(biāo)準(zhǔn)Python安裝時(shí)獲得的庫(kù),并且使用內(nèi)在的Python能力來(lái)完成MonteCarlo計(jì)算。向量化的NumPy:這個(gè)實(shí)現(xiàn)使用NumPy的能力來(lái)進(jìn)行更為緊湊和快速的處理。完全向量化的NumPy:最后的例子將一個(gè)不同的數(shù)學(xué)實(shí)現(xiàn)以及NumPy向量化的能力聯(lián)系起來(lái)來(lái)獲得相同算法的更為緊湊的版本。MonteCarlo模擬MonteCarlo模擬MonteCarlo模擬MonteCarlo模擬MonteCarlo模擬技術(shù)分析基于歷史價(jià)格信息的技術(shù)分析對(duì)于金融從業(yè)者和其他相關(guān)方而言是一項(xiàng)典型的工作。Infinance,technicalanalysisisasecurityanalysismethodologyforforecastingthedirectionofpricesthroughthestudyofpastmarketdata,primarilypriceandvolume.在下面的介紹中,我們關(guān)注的是為了回測(cè)的目的而研究過(guò)去的市場(chǎng)數(shù)據(jù),而不是特別的關(guān)注來(lái)預(yù)測(cè)未來(lái)的價(jià)格波動(dòng)。我們研究的目標(biāo)是基準(zhǔn)指數(shù)S&P500,這通常被看作是美國(guó)股票整體市場(chǎng)變化的一項(xiàng)好的代理指標(biāo)。這是因?yàn)橹笖?shù)包含大量的股票范圍而且代表了市值的大部分。它還擁有大量具有流動(dòng)性的期貨和期權(quán)市場(chǎng)。我們將從網(wǎng)絡(luò)資源中讀入歷史指數(shù)信息,并完成一項(xiàng)基于趨勢(shì)信號(hào)的交易系統(tǒng)的回測(cè)。首先我們需要讀入數(shù)據(jù),使用的是pandas庫(kù)。具體來(lái)說(shuō),我們使用pandas.io.data中的DataReader函數(shù)來(lái)獲得金融時(shí)間序列數(shù)據(jù)。同時(shí),這段代碼還會(huì)隨Timestamp對(duì)象生成一個(gè)時(shí)間指數(shù)。通過(guò)作圖來(lái)簡(jiǎn)要的看一下數(shù)據(jù)。技術(shù)分析基于歷史價(jià)格信息的技術(shù)分析對(duì)于金融從業(yè)者和其他相關(guān)方而言是一項(xiàng)典型的工作。Infinance,technicalanalysisisasecurityanalysismethodologyforforecastingthedirectionofpricesthroughthestudyofpastmarketdata,primarilypriceandvolume.在下面的介紹中,我們關(guān)注的是為了回測(cè)的目的而研究過(guò)去的市場(chǎng)數(shù)據(jù),而不是特別的關(guān)注來(lái)預(yù)測(cè)未來(lái)的價(jià)格波動(dòng)。我們研究的目標(biāo)是基準(zhǔn)指數(shù)S&P500,這通常被看作是美國(guó)股票整體市場(chǎng)變化的一項(xiàng)好的代理指標(biāo)。這是因?yàn)橹笖?shù)包含大量的股票范圍而且代表了市值的大部分。它還擁有大量具有流動(dòng)性的期貨和期權(quán)市場(chǎng)。我們將從網(wǎng)絡(luò)資源中讀入歷史指數(shù)信息,并完成一項(xiàng)基于趨勢(shì)信號(hào)的交易系統(tǒng)的回測(cè)。首先我們需要讀入數(shù)據(jù),使用的是pandas庫(kù)。具體來(lái)說(shuō),我們使用pandas.io.data中的DataReader函數(shù)來(lái)獲得金融時(shí)間序列數(shù)據(jù)。同時(shí),這段代碼還會(huì)隨Timestamp對(duì)象生成一個(gè)時(shí)間指數(shù)。通過(guò)作圖來(lái)簡(jiǎn)要的看一下數(shù)據(jù)。技術(shù)分析這里我們要實(shí)現(xiàn)的趨勢(shì)策略是基于兩個(gè)月(或42天)以及一年(即252天)的趨勢(shì)(即,對(duì)應(yīng)時(shí)期的指數(shù)水平的移動(dòng)平均)。pandas會(huì)較為有效的生成對(duì)應(yīng)的時(shí)間序列并且可以將趨勢(shì)序列與原始序列表達(dá)在同一副圖中。我們首先在pandasDataFrame對(duì)象中加入新的兩列,分別代表趨勢(shì)。這樣數(shù)據(jù)會(huì)有所減少。接著對(duì)新的帶有趨勢(shì)數(shù)據(jù)的數(shù)據(jù)圖進(jìn)行繪制。技術(shù)分析下面我們來(lái)設(shè)計(jì)一種規(guī)則來(lái)生成交易信號(hào)。這個(gè)規(guī)則如下:購(gòu)買(mǎi)信號(hào):42d的趨勢(shì)第一次超過(guò)252d的趨勢(shì)50個(gè)點(diǎn)。等待信號(hào):42d的趨勢(shì)保持在252d趨勢(shì)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論