《金融計算:基于Python》 課件 第3-5章 Python金融計算基礎(chǔ)、Python債券價值計算、Python股票價值計算_第1頁
《金融計算:基于Python》 課件 第3-5章 Python金融計算基礎(chǔ)、Python債券價值計算、Python股票價值計算_第2頁
《金融計算:基于Python》 課件 第3-5章 Python金融計算基礎(chǔ)、Python債券價值計算、Python股票價值計算_第3頁
《金融計算:基于Python》 課件 第3-5章 Python金融計算基礎(chǔ)、Python債券價值計算、Python股票價值計算_第4頁
《金融計算:基于Python》 課件 第3-5章 Python金融計算基礎(chǔ)、Python債券價值計算、Python股票價值計算_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

金融計算:基于Python

第3章 Python金融計算基礎(chǔ)【教學(xué)目的與要求】通過本章學(xué)習(xí),結(jié)合習(xí)近平新時代中國特色社會主義經(jīng)濟(jì)思想,講授Python金融數(shù)據(jù)的基本計算命令,描述性統(tǒng)計,常見概率分布,數(shù)據(jù)可視化,python-scipy模塊及數(shù)據(jù)下載平臺?!局攸c和難點】Python金融數(shù)據(jù)的基本計算命令,描述性統(tǒng)計,常見概率分布,數(shù)據(jù)可視化,python-scipy模塊。【思政育人目標(biāo)】將習(xí)近平新時代中國特色社會主義經(jīng)濟(jì)思想融入到Python金融數(shù)據(jù)計算的基礎(chǔ)知識與命令的學(xué)習(xí)中。【課程學(xué)習(xí)目標(biāo)】了解Python金融數(shù)據(jù)的基本計算命令,描述性統(tǒng)計,常見概率分布,掌握數(shù)據(jù)可視化,python-scipy模塊及數(shù)據(jù)下載平臺。金融計算:基于Python2主要內(nèi)容3.1.數(shù)據(jù)的基本計算3.2.描述性統(tǒng)計3.3.常見概率分布3.4.數(shù)據(jù)的可視化3.5.python-scipy模塊3.6.Baostock數(shù)據(jù)平臺3.7.數(shù)據(jù)爬取3.8.AKShare數(shù)據(jù)平臺3.9.Efinance數(shù)據(jù)平臺金融計算:基于Python33.1. 數(shù)據(jù)的基本計算3.1.1.算術(shù)運算.序列運算序列運算是根據(jù)行列索引,對齊后運算,運算默認(rèn)產(chǎn)生浮點數(shù),對齊時缺項填充NaN(空值)。自動的數(shù)據(jù)對齊在索引處引入NAN值,缺失值在運算過程中傳播。.DdtaFrame運算除了用+、-、*、/,還可以用Series和DataFrame的算術(shù)方法,因為'c'和'e'列均不在兩個DataFrame對象中,在結(jié)果中以缺省值呈現(xiàn),行也是同樣,沒有共用的列或行標(biāo)簽,結(jié)果都會是空。金融計算:基于Python4.運算中值填充在對不同索引的對象算術(shù)運算時,希望當(dāng)一個對象中某個軸標(biāo)簽在另一個對象中找不到時填充一個特殊值。如使用df1的add(sub)方法,實現(xiàn)數(shù)據(jù)的加法(減法)。.DataFrame和序列之間運算從一個矩陣減去一個行序列時,每一行都會執(zhí)行這一個操作。.函數(shù)的應(yīng)用元素級數(shù)組方法也可用于操作pandas對象;函數(shù)也可應(yīng)用到由各列或行所形成的一維數(shù)組上。如建立一個函數(shù)f,計算一個Series的最大值和最小值的差,在frame的每列都執(zhí)行一次。金融計算:基于Python53.1.2. 排序和排名.數(shù)據(jù)集排序根據(jù)條件可以對數(shù)據(jù)集進(jìn)行排序運算,使用sort_index方法可以對行或列索引進(jìn)行排序(按字典順序),它將返回一個已排序的新對象:.DataFrame排序可以根據(jù)DataFrame任意一個軸上的索引進(jìn)行排序。.序列數(shù)據(jù)值的排序sort_values方法可以實現(xiàn)按值對Series進(jìn)行排序。任何缺失值默認(rèn)都會被放到Series的末尾。.DataFrame數(shù)據(jù)值的排序sort_values可以實現(xiàn)DataFrame一個或多個列中的值進(jìn)行排序。金融計算:基于Python63.2. 描述性統(tǒng)計Pandas可以實現(xiàn)常用的數(shù)學(xué)和統(tǒng)計功能,主要用于從Series中提取單個值(如sum或mean)或從DataFrame的行或列中提取一個Series。3.2.1.數(shù)據(jù)匯總統(tǒng)計.數(shù)據(jù)求和Sum可以實現(xiàn)數(shù)據(jù)的匯總功能,返回一個含有列的和的序列。.間接統(tǒng)計Idxmin或idxmax可以實現(xiàn)一些間接統(tǒng)計,返回達(dá)到最小值或最大值的索引。金融計算:基于Python73.2.2. 相關(guān)系數(shù)與協(xié)方差相關(guān)系數(shù)和協(xié)方差是通過參數(shù)對計算出來的,corr方法用于計算兩個序列中重疊的、非NA的、按索引對齊的值的相關(guān)系數(shù);cov方法用于計算協(xié)方差。corrwith方法,可以計算DataFrame其列或行跟另一個Series或DataFrame之間的相關(guān)系數(shù)。傳入一個Series將會返回一個相關(guān)系數(shù)值Series(針對各列進(jìn)行計算)。金融計算:基于Python83.2.3. 其它統(tǒng)計.唯一值unique函數(shù)可以得到Series中的唯一值數(shù)組。.值的頻率統(tǒng)計value_counts可以計算一個Series中各值按值頻率降序排列。.資格統(tǒng)計isin是用于判斷矢量化集合的成員資格,一般用于過濾Series中或DataFrame列中數(shù)據(jù)的子集。金融計算:基于Python93.3. 常見概率分布3.3.1.連續(xù)型隨機(jī)變量的常見分布.均勻分布均勻分布指的是一類在定義域內(nèi)概率密度函數(shù)處處相等的統(tǒng)計分布。.正態(tài)分布正態(tài)分布也叫高斯分布.指數(shù)分布指數(shù)分布通常被廣泛用在描述一個特定事件發(fā)生所需要的時間,在指數(shù)分布隨機(jī)變量的分布中,有著很少的大數(shù)值和非常多的小數(shù)值.金融計算:基于Python103.3.2. 連續(xù)型隨機(jī)變量的常見分布.伯努利分布伯努利分布描述的是離散型變量且發(fā)生1次的概率分布,且X取值只有2個,要么是0,要么是1..二項分布二項分布可以認(rèn)為是一種只有兩種結(jié)果(成功/失敗)的單次試驗重復(fù)多次后成功次數(shù)的分布概率。.泊松分布假設(shè)已知事件在單位時間(或者單位面積)內(nèi)發(fā)生的平均次數(shù)為λ,則泊松分布描述了事件在單位時間(或者單位面積)內(nèi)發(fā)生的具體次數(shù)為k的概率。金融計算:基于Python113.4. 數(shù)據(jù)的可視化3.4.1.常用的繪圖函數(shù)matplotlib是Python用于創(chuàng)建圖表的繪圖包,提供了一整套繪圖命令,繪制中文圖形時,必須進(jìn)行基本的設(shè)置。importmatplotlib.pyplotasplt #基本繪圖包plt.rcParams['font.sans-serif']=['KaiTi'] #黑體plt.rcParams['axes.unicode_minus']=False #正常顯示圖中負(fù)號plt.figure(figsize=(5,4))#圖形大小金融計算:基于Python12.基本統(tǒng)計圖bar()命令是繪制條形圖。pie()是繪制餅圖的命令。plot()是繪制拆線圖的命令。hist()用于表示連續(xù)型變量的頻數(shù)分布,實際應(yīng)用中常用于考察變量的分布是否服從某種分類類型。scatter()是繪制散點圖的命令。金融計算:基于Python13.圖形參數(shù)設(shè)置繪制圖形過程中,標(biāo)題、標(biāo)簽、顏色、線形等參數(shù)設(shè)置命令及說明。金融計算:基于Python14命令說明plt.title標(biāo)題,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.xlim設(shè)置橫坐標(biāo)范圍,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.ylim設(shè)置縱坐標(biāo)范圍,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.xlabel設(shè)置橫坐標(biāo)名稱,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.ylabel設(shè)置縱坐標(biāo)名稱,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.xticks設(shè)置橫坐標(biāo)刻度,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.yticks設(shè)置縱坐標(biāo)刻度,可以指定名稱、位置、顏色、字體大小等參數(shù)。colors或c控制圖形的顏色,'r':設(shè)置為紅色,'b':設(shè)置為藍(lán)色,'g':設(shè)置為綠色,'c':設(shè)置為青色,'m':設(shè)置為品紅色,'y':設(shè)置為黃色,'k':設(shè)置為黑色,'w':設(shè)置為白色linestyle控制連線的線形(‘-’:實線,‘--’:虛線,'-.'點劃線,':'虛線)linewidth或lw線寬,(字符串格式)可以輸入浮點數(shù)。marker控制符號的類型,詳見表3-3plt.axvline在縱坐標(biāo)y處畫垂直線plt.axhline在橫坐標(biāo)x處畫垂直線text(x,y,labels,...)在(x,y)處添加用labels指定的文字legend為圖形加圖例,可以指定圖例的大小、位置、標(biāo)簽。grid添加網(wǎng)格。可以指定網(wǎng)格的方向、線類型、線寬、顏色。標(biāo)記符說明'.'點','像素點'o'循環(huán)'*'星號'v'下三角'^'上三角'<'左三角'>'右三角'1'向下微調(diào)'2'向上微調(diào)'3'向左微調(diào)'4'向右微調(diào)'s'正方形'p'五邊形'h'六邊形1'H'六邊形2'+'加號'P'加滿'x'x'X'X滿'D'鉆石'd'鉆石瘦'_'水平線‘|’排.多圖繪制可以通過add_subplot創(chuàng)建多個圖。金融計算:基于Python153.4.2. 基于pandas的繪圖在pandas中的數(shù)據(jù)包含多列、多行的數(shù)據(jù),還有行和列標(biāo)簽,自身內(nèi)置的方法可以簡化從DataFrame和Series繪制圖形,修改默認(rèn)的顏色方案和繪圖類型,提高可讀性和美觀度。Plot()可以實現(xiàn)Series和DataFrame的繪制圖表的功能,默認(rèn)生成的是線型圖。DataFrame.plot(kind='line')將所有列繪制的圖到一張圖片中,用不同線條顏色及不同的圖例標(biāo)簽來表示。其中,kind是圖類型:line(缺省)是拆線圖;bar是垂直條圖;barh是水平條圖;hist是直方圖;box是箱線圖;kde是核密度估計圖,對柱狀圖添加概率密度線,與density功能一樣;area是面積圖;pie是餅圖;scatter是散點圖。金融計算:基于Python163.4.3. 特殊統(tǒng)計圖.數(shù)學(xué)函數(shù)圖.氣泡圖金融計算:基于Python173.5. python-scipy模塊scipy模塊依賴于numpy模塊,能方便的給出很多數(shù)學(xué)操作。基本子模塊及功能如表3-3。金融計算:基于Python18子模塊名稱功能說明scipy.special:特殊函數(shù)模塊里面有各種特殊的數(shù)學(xué)函數(shù),可以直接調(diào)用,如貝塞爾函數(shù).egrate:積分模塊。可以求多重積分,高斯積分,解常微分方程scipyoptimize.優(yōu)化模塊里面有各種優(yōu)化算法,包括用來求有/無約束的多元標(biāo)量函數(shù)最小值算法,最小二乘法,求有/無約束的單變量函數(shù)最小值算法,還有解各種復(fù)雜方程的算法erpolation:插值模塊提供各種一維、二維、N維插值算法,包括B樣條插值、徑向基函數(shù)插值等.scipy.fftpack:FFT(快速傅里葉變換)模塊??梢赃M(jìn)行FFT/DCT/DSTsipsgnak:信號處理模塊包括樣條插值,卷積,差分等濾波方法,還有FIR/IR濾波,中值、排序、維納、希爾伯特等濾波器,各種譜分析算法scipy.linalg:線代模塊提供各種線性代數(shù)中的常規(guī)操作scipy.sparse:稀疏矩陣模塊提供了大型稀疏矩陣計算中的各種算法scipy.spatial:空間結(jié)構(gòu)模塊提供了一些空間相關(guān)的數(shù)據(jù)結(jié)構(gòu)和算法,如elaunay三角剖分,共面點,凸包維諾圖,Kd樹等scipy.stats:統(tǒng)計模塊提供一些統(tǒng)計學(xué)上常用的函數(shù)scipy.ndimage:多維圖像處理模塊提供一些多維圖像處理上的常用算法scipy.io:lO模塊提供與其他文件的接口,如matlab文件、IDL文件、Wav(音頻)文件、ARFF文件3.5.1. 求積分integrate子模塊是積分函數(shù):quad()是自適應(yīng)求積分;fixed_quad()是固定高斯求積分;quadrature()是自適應(yīng)高斯求積;romberg()是自適應(yīng)龍貝格求積分。金融計算:基于Python193.5.2. 插值計算利率曲線的擬合等金融領(lǐng)域經(jīng)常會用到插值法計算,可以使用interpolate模塊下的interp1d(x,y,kind)函數(shù):nearest是最近鄰插值;zero是階梯插值法;slinear是線性插值法;quadratic是2階樣條插值;cubic:3是階樣條插值。金融計算:基于Python203.5.3. 方程組求解方程組求解可使用solve函數(shù)、fsolve函數(shù)實現(xiàn)。金融計算:基于Python213.5.4. 優(yōu)化問題

金融計算:基于Python223.6. Baostock數(shù)據(jù)平臺3.6.1.平臺說明證券寶是一個免費、開源的證券數(shù)據(jù)平臺(無需注冊)。提供大量準(zhǔn)確、完整的證券歷史行情數(shù)據(jù)、上市公司財務(wù)數(shù)據(jù)等。返回的數(shù)據(jù)格式:pandasDataFrame類型,以便于用pandas/NumPy/Matplotlib進(jìn)行數(shù)據(jù)分析和可視化。同時支持通過BaoStock的數(shù)據(jù)存儲功能,將數(shù)據(jù)全部保存到本地后進(jìn)行分析。支持語言:目前版本BaoS目前只支持Python3.5及以上(暫不支持python2.x)。金融計算:基于Python23數(shù)據(jù)說明時間范圍股票數(shù)據(jù)日、周、月K線數(shù)據(jù),時間范圍:1990-12-19至今;5、15、30、60分鐘K線數(shù)據(jù)1999-07-26至今指數(shù)數(shù)據(jù)日、周、月K線已經(jīng)包含指數(shù):綜合指數(shù),規(guī)模指數(shù),一級行業(yè)指數(shù),二級行業(yè)指數(shù),策略指數(shù),成長指數(shù),價值指數(shù),主題指數(shù),基金指數(shù),債券指數(shù)。2006-01-01至今季頻財務(wù)數(shù)據(jù)已經(jīng)包含的財務(wù)數(shù)據(jù):部分上市公司資產(chǎn)負(fù)債信息、上市公司現(xiàn)金流量信息、上市公司利潤信息、上市公司杜邦指標(biāo)信息。2007年至今季頻公司報告上市公司業(yè)績預(yù)告信息;上市公司業(yè)績快報信息2003年至今;2006年至今.login()函數(shù)登錄系統(tǒng)。建立與服務(wù)器的連接,無需注冊即可登錄。需要說明的是,登錄后超過一段時間沒有操作再調(diào)用api請求時會超時,需要重新登錄才能繼續(xù)下載數(shù)據(jù)不需要使用的時候可以主動調(diào)用bs.logout()函數(shù)斷開與服務(wù)器的連接。.logout()函數(shù)不需要使用數(shù)據(jù)的時候可以主動調(diào)用bs.logout()函數(shù)斷開與服務(wù)器的連接。金融計算:基于Python24.query_history_k_data_plus()函數(shù)通過API接口獲取A股歷史交易數(shù)據(jù),可以通過參數(shù)設(shè)置獲取日k線、周k線、月k線,以及5分鐘、15分鐘、30分鐘和60分鐘k線數(shù)據(jù),適合搭配均線數(shù)據(jù)進(jìn)行選股和分析。返回類型:pandas的DataFrame類型;樣本:1990-12-19至當(dāng)前時間的數(shù)據(jù);數(shù)據(jù)種類:不復(fù)權(quán)、前復(fù)權(quán)、后復(fù)權(quán)數(shù)據(jù)。金融計算:基于Python253.6.3. 季頻數(shù)據(jù)獲取函數(shù).query_profit_data()函數(shù)通過API接口獲取季頻盈利能力信息,可以通過參數(shù)設(shè)置獲取對應(yīng)年份、季度數(shù)據(jù),提供2007年至今數(shù)據(jù)。返回類型:pandas的DataFrame類型。.query_operation_data()函數(shù)通過API接口獲取季頻營運能力信息,可以通過參數(shù)設(shè)置獲取對應(yīng)年份、季度數(shù)據(jù),提供2007年至今數(shù)據(jù)。返回類型:pandas的DataFrame類型。金融計算:基于Python263.6.4.板塊數(shù)據(jù)獲取函數(shù).query_stock_industry()函數(shù)通過API接口獲取行業(yè)分類信息,更新頻率:每周一更新。返回類型:pandas的DataFrame類型。金融計算:基于Python273.6.5.宏觀經(jīng)濟(jì)數(shù)據(jù)獲取函數(shù).query_deposit_rate_data()函數(shù)通過API接口獲取存款利率,可以通過參數(shù)設(shè)置獲取對應(yīng)起止日期的數(shù)據(jù)。返回類型:pandas的DataFrame類型。金融計算:基于Python283.6.6.指定數(shù)據(jù)導(dǎo)入.獲取指定日期全部股票的日K線數(shù)據(jù).獲取指定時間區(qū)域部分股票的日K線數(shù)據(jù)金融計算:基于Python293.7. 數(shù)據(jù)爬取在大數(shù)據(jù)時代,互聯(lián)網(wǎng)成為獲取金融數(shù)據(jù)的重要途徑之一,因此,掌握一些Python、Web前端與爬蟲的相關(guān)知識是非常必要的。3.7.1.網(wǎng)頁結(jié)構(gòu)任意打開一個網(wǎng)頁(/),單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“檢查”選項,即可查看該網(wǎng)頁結(jié)構(gòu)的相應(yīng)代碼,如圖3-1所示。分析圖3-1,該圖左半部分為HTML文件,右半部分為CSS樣式,用<script></script>標(biāo)簽的就是JavaScript代碼。用戶瀏覽的網(wǎng)頁就是瀏覽器染后的結(jié)果,瀏覽器就是把HTML、CSS和JavaScript進(jìn)行翻譯得到用戶使用的網(wǎng)頁界面。金融計算:基于Python303.7.2. Python與爬蟲.爬蟲基本原理網(wǎng)頁請求和響應(yīng)的過程:Request(請求)。每一個用戶打開的網(wǎng)頁都必須在最開始由用戶向服務(wù)器發(fā)送訪問的請求。Response(響應(yīng))。服務(wù)器在接收到用戶的請求后,會驗證請求的有效性,然后向用戶發(fā)送相應(yīng)的內(nèi)容。客戶端接收到服務(wù)器的相應(yīng)內(nèi)容后,再將此內(nèi)容展示出來,以供用戶瀏覽。網(wǎng)頁請求的方式一般分為GET和POST兩種:GET是最常見的請求方式,一般用于獲取或者查詢資源信息,也是大多數(shù)網(wǎng)站使用的方式。POST與GET相比,多了以表單形式上傳參數(shù)的功能,因此除了查詢信息外,還可以修改信息。金融計算:基于Python31基礎(chǔ)爬蟲主要包括爬蟲調(diào)度器、URL管理器、HTML下載器、HTML解析器和數(shù)據(jù)存儲器等五大模塊,功能如下: 爬蟲調(diào)度器統(tǒng)籌其他4個模塊的協(xié)調(diào)工作;

URL管理器管理URL鏈接,維護(hù)已經(jīng)爬取的URL集合和未爬取的URL集合,提供獲取新URL鏈接的接口;

HTML下載器用于從URL管理器中獲取未爬取的URL鏈接,并下載HTML網(wǎng)頁;

HTML解析器用于從HTML下載器中獲取已經(jīng)下載的HTML網(wǎng)頁,并從中解析出新的URL鏈接交給URL管理器,解析出有效數(shù)據(jù)交給數(shù)據(jù)存儲器; 數(shù)據(jù)存儲器用于將HTML解析器解析出來的數(shù)據(jù)通過文件或者數(shù)據(jù)庫的形式存儲起來。.urllib模塊使用Python編寫爬蟲代碼,要解決的第一個問題是Python如何訪問互聯(lián)網(wǎng),為此Python專門準(zhǔn)備了urllib模塊。urllib是URL和lib兩個單詞共同構(gòu)成的,URL就是網(wǎng)頁的地址,lib是library(庫)的縮寫。URL的一般格式為(帶方括號[]的為可選項):protocol://hostname[port]/path/[parameters][?query]#fragment.URL由以下三部分組成:協(xié)議:常見的有HTTP、HTTPS、FTP、FILE(訪問本地文件夾)、ED2K(電驢的專用鏈接)等。存放資源的服務(wù)器的域名系統(tǒng)(DNS)主機(jī)名或IP地址(有時候要包含端口號,各種傳輸協(xié)議都有默認(rèn)的端口號,如HTTP的默認(rèn)端口為80)主機(jī)資源的具體地址,如目錄和文件名等。金融計算:基于Python32[例3.7.1]使用urllib訪問目標(biāo)網(wǎng)頁在urllib模塊中可以使用urllib.request.urlopen()函數(shù)訪問網(wǎng)頁,urllib.request.urlopen()函數(shù)的參數(shù)為:urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)金融計算:基于Python33[例3.7.2]使用urllib獲取響應(yīng)信息通過response.getcode()、response.geturl()及response.getheaders()獲取各種響應(yīng)信息。金融計算:基于Python34.Requests庫Requests庫是用Python語言編寫的,基于urllib,采用Apache2Licensed開源協(xié)議的HTTP庫,它比urllib更方便,可以節(jié)約開發(fā)者的工作量,完全滿足HTTP測試求。Requests實現(xiàn)了HTTP協(xié)議中的地大部分功能,它提供的功能包括Keep-Alive、連接池、Cookie持久化、內(nèi)容自動解壓、HTTP代理、SSL認(rèn)證、連接超時、Session等很多特性,更重要的是它同時兼客Python2和Python3。導(dǎo)入importrequests,使用requests庫模擬發(fā)送并且獲取響應(yīng)對象賦給變量res格式為:res=requests.請求方式(url,相關(guān)參數(shù))金融計算:基于Python35參數(shù)功能res.encoding查看響應(yīng)正文的編碼格式res.text查看響應(yīng)正文的文本內(nèi)容返回的是一個字符串格式res.content查看響應(yīng)正文的文本內(nèi)容返回的是一個字節(jié)格式如果獲取圖片數(shù)據(jù)或者音視頻數(shù)據(jù)通過它直接獲取二進(jìn)制數(shù)據(jù)并進(jìn)行保存res.status_code查看響應(yīng)的狀態(tài)碼res.headers查看響應(yīng)的響應(yīng)頭res.url查看響應(yīng)的URLres.request.headers查看請求頭信息res.request.body查看請求正文res.request.url查看請求urlres.request.method查看請求方式res.cookies獲取響應(yīng)中的cookie得到的是一個RequestsCookieJar對象[例3.7.3]自定義請求響應(yīng)頭先定義一個字典格式:h={"請求頭鍵":"對應(yīng)的值","請求頭鍵2":"對應(yīng)的值",...};然后讓定義的字典與請求產(chǎn)生關(guān)聯(lián)res=requests.請求方式(url,headers=h)。金融計算:基于Python36[例3.7.4]發(fā)送攜帶查詢字符串參數(shù)的GET請求方法1:參數(shù)直接寫在url中,res=requests.get("/s?wd=河北經(jīng)貿(mào)大學(xué)方法2:先定義一個字典,p={"查詢參數(shù)1":"對應(yīng)的值","查詢參數(shù)2":"對應(yīng)的值",...}(查詢參數(shù)就是值查詢字符串參數(shù)URL中?后面接的就是查詢字符串參數(shù));然后讓定義的字典與請求產(chǎn)生關(guān)聯(lián),res=requests.get(url,params=p)金融計算:基于Python37[例3.7.5]使用GET方式抓取網(wǎng)頁數(shù)據(jù)輸入:#導(dǎo)入requests庫importrequests#訪問目標(biāo)網(wǎng)頁url=""#將獲取的數(shù)據(jù)保存到strhtml變量中strhtml=requests.get(url)#打印網(wǎng)頁源代碼print(strhtml.text)金融計算:基于Python38[例3.7.6]使用GET方式抓取網(wǎng)頁數(shù)據(jù),并設(shè)置超時反應(yīng)輸入:#導(dǎo)入requests庫importrequests#訪問目標(biāo)網(wǎng)頁url1=""r=requests.get(url1,timeout=3)#打印網(wǎng)頁源代碼print(r.status_code)金融計算:基于Python39[例3.7.7]使用GET方式抓取網(wǎng)頁圖片輸入:importrequests#訪問目標(biāo)網(wǎng)頁url1="/it/u=3287115334,1498982333&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281"r1=requests.get(url1)withopen('ls1.png','wb')asf:f.write(r1.content)importmatplotlib.pyplotaspltfromPILimportImageimg=Image.open('ls1.png')img=np.array(img)plt.imshow(img)plt.show()金融計算:基于Python403.7.3. 爬取網(wǎng)頁內(nèi)容一般地,按照爬取網(wǎng)頁、解析數(shù)據(jù)、保存網(wǎng)頁的思路爬取所需要的網(wǎng)頁內(nèi)容。防止亂碼,設(shè)置編碼為utf-8。[例3.7.9]爬取/top250?start=網(wǎng)頁的電影詳情鏈接、圖片鏈接、影片中文名、影片外國名、評分、評價數(shù)、概況、相關(guān)信息,將評分前100的信息保存到excel文件中。第一步,數(shù)據(jù)庫導(dǎo)入第二步,設(shè)置正則表達(dá)式第三步,設(shè)置爬取網(wǎng)頁的函數(shù)第四步,設(shè)置變量存儲爬取的網(wǎng)頁信息的函數(shù)第五步,設(shè)置得到指定一個URL的網(wǎng)頁內(nèi)容的函數(shù)第六步,設(shè)置保存數(shù)據(jù)到表格的函數(shù)第七步,調(diào)用函數(shù)的程序金融計算:基于Python413.8. AKShare數(shù)據(jù)平臺AKShare是基于Python的財經(jīng)數(shù)據(jù)接口庫,目的是實現(xiàn)對股票、期貨、期權(quán)、基金、外匯、債券、指數(shù)、加密貨幣等金融產(chǎn)品的基本面數(shù)據(jù)、實時和歷史行情數(shù)據(jù)、衍生數(shù)據(jù)從數(shù)據(jù)采集、數(shù)據(jù)清洗到數(shù)據(jù)落地的一套工具,主要用于學(xué)術(shù)研究目的。AKShare的特點是獲取的是相對權(quán)威的財經(jīng)數(shù)據(jù)網(wǎng)站公布的原始數(shù)據(jù),通過利用原始數(shù)據(jù)進(jìn)行各數(shù)據(jù)源之間的交叉驗證,進(jìn)而再加工,從而得出科學(xué)的結(jié)論。金融計算:基于Python423.8.1. 安裝目前AKShare僅支持64位版本的操作系統(tǒng)安裝和使用,支持Python3.8(64位)及以上版本。AKShare推薦安裝最新版本的Anaconda(64位),可以解決大部分環(huán)境配置問題。安裝命令:pipinstallakshare--upgrade注意:--upgrade代表更新到最新版,初次安裝不加也可以,估計是這個包更新頻率比較高,直接加上比較方便。金融計算:基于Python433.8.2.AKShare數(shù)據(jù)接囗一覽.貨幣市場數(shù)據(jù).資本市場數(shù)據(jù).外匯市場數(shù)據(jù).金融衍生品數(shù)據(jù).商品數(shù)據(jù).宏觀數(shù)據(jù).環(huán)境數(shù)據(jù).COVID-19數(shù)據(jù)金融計算:基于Python443.8.3. 案例[例3.8.1]東方財富-數(shù)據(jù)中心-中國油價-汽柴油歷史調(diào)價信息,接口:energy_oil_hist,目標(biāo)地址:/cjsj/oil_default.html,獲得此數(shù)據(jù)。輸入:importakshareasakenergy_oil_hist_df=ak.energy_oil_hist()energy_oil_hist_df.head()金融計算:基于Python453.9. Efinance數(shù)據(jù)平臺efinance是由個人打造的用于獲取股票、基金、期貨數(shù)據(jù)的免費開源Python庫,其主要基于東方財富網(wǎng)的api獲取數(shù)據(jù)。雖然本身并沒有提供數(shù)據(jù)服務(wù),但其提供的功能已經(jīng)比較多了,包括同時支持多股票請求,支持日k、周k、月k、60分鐘、30分鐘、15分鐘、5分鐘、1分鐘k線數(shù)據(jù)等。金融計算:基于Python463.9.1. 安裝庫的安裝方法是:打開cmd(命令提示符或者其他終端工具),輸入以下代碼pipinstallefinance如果需要更新,則在cmd(命令提示符或者其他終端工具)運行下面的代碼pipinstallefinance--upgrade金融計算:基于Python473.9.2.獲取股票歷史日K線數(shù)據(jù)輸入:importefinanceasef#股票代碼stock_code='600519'stock_k=ef.stock.get_quote_history(stock_code)stock_k.head()金融計算:基于Python483.9.3.獲取基金數(shù)據(jù)輸入:#獲取基金歷史凈值信息ef.fund.get_quote_history('161725')金融計算:基于Python493.9.4.可轉(zhuǎn)債數(shù)據(jù)輸入:#全部可轉(zhuǎn)債信息bondq=ef.bond.get_all_base_info()bondq.head()金融計算:基于Python503.9.5.期貨數(shù)據(jù)輸入:#獲取交易所期貨基本信息futures=ef.futures.get_futures_base_info()futures.head()金融計算:基于Python51金融計算:基于Python52金融計算:基于Python

第4章 Python債券價值計算【教學(xué)目的與要求】通過本章學(xué)習(xí),結(jié)合習(xí)近平新時代中國特色社會主義經(jīng)濟(jì)思想,講授Python資金的時間價值、債券定價、久期、凸度、免疫的計算。【重點和難點】久期、凸度、免疫的計算【思政育人目標(biāo)】將習(xí)近平新時代中國特色社會主義經(jīng)濟(jì)思想融入到Python資金的時間價值、債券定價、久期、凸度、免疫的學(xué)習(xí)中。【課程學(xué)習(xí)目標(biāo)】了解Python資金的時間價值,掌握Python債券定價、久期、凸度、免疫的計算。金融計算:基于Python54主要內(nèi)容4.1.資金的時間價值4.2.債券定價4.3.久期計算4.4.凸度計算4.5.免疫計算金融計算:基于Python554.1. 資金的時間價值資金的時間價值即貨幣的時間價值,就是指當(dāng)前所持有的一定量貨幣比未來獲得的等量貨幣具有更高的價值。計算貨幣時間價值量時,要引入現(xiàn)值和終值兩個概念來表示不同時期的貨幣時間價值。現(xiàn)值(PV)是指未來某一時點上的一定量現(xiàn)金折合到現(xiàn)在的價值,通常記作P;終值(FV)是指資金經(jīng)過若干時期后包括本金和時間價值在內(nèi)的未來價值,通常記作F;利率是指一定時期內(nèi)利息額與借貸資金額(本金)的比率,通常記作r。如果單位本金在t后的價值是a(t),則當(dāng)t變動時,a(t)稱為累積函數(shù)。金融計算:基于Python564.1.1. 單利計息定義函數(shù)如下輸入:

defdl(r,t):dt=1+r*treturndt金融計算:基于Python574.1.2. 復(fù)利計息deffl(r,t):ft=(1+r)**treturnft[例4.1.1]假設(shè)本金100萬元,計算期是5年,年利率是5%,每年計息兩次,比較單利和復(fù)利計息的本息和。金融計算:基于Python584.1.3. 貼現(xiàn)函數(shù)deftxdl(r,n):dn=(1+t*r)**(-1)returndndeftxfl(r,n):fn=(1+r)**(-t)returnfn[例4.1.2]假設(shè)年利率是5%,求未來10年末資金100萬元的現(xiàn)值。金融計算:基于Python594.1.4. 利率計息次數(shù)defsjll(r,n):r1=(1+r/n)**n-1returnr1[例4.1.3]方案一:年利率8%,每半年付息一次;方案二:年利率8%,每季度付息一次。應(yīng)選擇哪個方案進(jìn)行投資?金融計算:基于Python604.1.5. 連續(xù)復(fù)利deflxfl(r,m):at=np.exp(r*m)returnat[例4.1.4]年利率8%,投資10年,連續(xù)復(fù)利率是多少?金融計算:基于Python614.1.6. 多期復(fù)利終值輸入:defdqflzz(ct,r,t):ct1=ct*(1+r)**tfv=sum(ct1)returnfv[例4.1.5]假設(shè)某公司在一年后投資100萬元,兩年后投資200萬元,三年后投資300萬元,四年后投資400萬元,如果投資的收益率為10%,那么5年后投資收益是多少?金融計算:基于Python624.1.7. 多期復(fù)利現(xiàn)值defdqflxz(ct,r,t):ct1=ct*(1+r)**(-t)pv=sum(ct1)returnpv[例4.1.6]假設(shè)某公司未來五年的投資額分別為100萬元、200萬元、300萬元、、400萬元、500萬元,如果貼現(xiàn)率為10%,投資的現(xiàn)值是多少?金融計算:基于Python634.2. 債券定價4.2.1.直接債券定價defbpd(ct,F(xiàn),y,t,n):a=ct/(1+y)**tb=F/(1+y)**np=sum(a)+sum(b)returnp[例4.2.1]假設(shè)新發(fā)行的3年期的債券面值為1000元,以后每半年支付利息50元,市場年收益為10%,那么債券的現(xiàn)值為多少?金融計算:基于Python644.2.2. 零息債券定價deflxbpd(F,y,n):b=F/(1+y)**nreturnb[例4.2.2]假設(shè)8年期的債券面值為1000元,市場年收益為8%,每半年付息一次的零息債券,那么債券的現(xiàn)值為多少?金融計算:基于Python654.2.3. 到期收益率計算importscipy.optimizeassoimportnumpyasnpdefYTM(P,C,k,M,T):defff(y):coupon=[]foriinnp.arange(0,T*k):coupon.append((C/k)/pow(1+y,i+1))returnnp.sum(coupon)+M/pow(1+y,T*k)-Preturnso.fsolve(ff,0.1)[例4.2.3]5年期的債券面值為100元,以后每半年支付利息2.5元,現(xiàn)在債券的價格是110元,求該債券的到期收益率。金融計算:基于Python664.2.4. 債券的贖回收益率計算defshbpd(ct,cp,y,t,n2):a=ct/(1+y)**tb=cp/(1+y)**n2p=sum(a)+sum(b)returnp[例4.2.4]有效期為18年的債券面值為100元,年票面利率是6%,每半年支付利息一次的可贖回債券,贖回年收益率為15.2%。假設(shè)這個債券最早可以在5年后以103元的價格贖回,求債券的市場價格。金融計算:基于Python674.3. 久期計算4.3.1.馬考勒久期defdur(ct,F(xiàn),y,n):a=ct/(1+y)**tb=F/(1+y)**np=sum(a)+sum(b)c=t*ct/(1+y)**tc1=n*F/(1+y)**np1=sum(c)+sum(c1)D=p1/preturnD[例4.3.1]票面面值100元,息票率為8%的三年期的債券,半年付息一次,到期年收益率為10%,求該三年期債券的麥考利久期。金融計算:基于Python684.3.2. 影響債券價格的要素deffxzq(y,i,n):a=(1+y)/yb=1+y+n*(i-y)c=i*((1+y)**n-1)+ydur=a-b/creturndurdeffxzq1(y,n):dur=(1+y)/y-(1+y)/(y*(1+y)**n)returndur金融計算:基于Python694.3.3. 資產(chǎn)組合久期[例4.3.2]一個債券組合由三種半年付息的債券構(gòu)成,債券A面值100元,票面利率6%,到期時間6年,市場價格951.68元,到期年收益率7%,債券B面值2萬元,票面利率5.5%,到期時間5年,市場價格2萬元,到期年收益率5.5%,債券C面值1萬元,票面利率7.5%,到期時間4年,市場價格9831.68元,到期年收益率8%,求該債券組合的久期。金融計算:基于Python704.4. 凸度計算4.4.1.凸度defconv(ct,F(xiàn),y,n):a=ct/(1+y)**tb=F/(1+y)**np=sum(a)+sum(b)c=(t**2+t)*ct/(1+y)**tc1=(n**2+n)*F/(1+y)**np1=sum(c)+sum(c1)con=p1/p*(1+y)**(-2)returncon[例4.4.1]票面面值100元,息票率8%的三年期的債券,半年付息一次,到期年收益率10%,求該債券的凸度。金融計算:基于Python714.4.2. 凸度與價格波動的關(guān)系[例4.4.2]在[例4.4.1]中,修正久期是2.65,年凸度為8.337,如果預(yù)期未來收益將為11%,計算凸度與價格波動的關(guān)系。輸入:dp=-2.65*0.01+0.5*8.337*0.01**2print(dp)金融計算:基于Python724.5. 免疫計算債券組合的主要風(fēng)險來自利率變化,就是期限結(jié)構(gòu)的改變。免疫是保護(hù)債券組合避免利率風(fēng)險的一種策略。管理者選擇久期等于他們負(fù)債的到期期限的債券組合,利用價格風(fēng)險和再投資率風(fēng)儉互相抵消的特點,保證管理者不受損失。金融計算:基于Python734.5.1. 再投資的收益分析[例4.5.1]如果債券管理者為投資者管理一個面值為100元,息票率是8%,息票再投資率是8%的5年期債券,分析當(dāng)利率發(fā)生變化時投資的收益情況。***由于利率的下降導(dǎo)致債券的收益率下降。使用免疫策略可以避免這種結(jié)果,即不使復(fù)利率下降。金融計算:基于Python744.5.2. 利率變化對債券價格的影響當(dāng)利率變化時,在給定到期期限上如何影響債券的價格,對收益率的影響如何呢?[例4.5.2]一個6年期面值為100元息票每畝和再投資率都是8%,計算其久期,分析利率上升至9%和下降至6%的債券價格及收益率。金融計算:基于Python754.5.3. 免疫策略設(shè)計與實現(xiàn)由上述分析可以得出利率發(fā)生變化時,影響債券價格的變化:利率下降、再投資收入減少,而債券價格上升;利率上升,再投資收入增加,而債券價格下降。免疫是利用再投資收入和債券價格相反交動、互相抵消來消除利率風(fēng)險的。免疫策略廣泛用于減少利率風(fēng)險,不僅可以應(yīng)用于個別債券,而且可以應(yīng)用于債券組合。這時債券組合的久期是包含各個債券久期的加權(quán)平均和。金融計算:基于Python76金融計算:基于Python77金融計算:基于Python

第5章 Python股票價值計算【教學(xué)目的與要求】通過本章學(xué)習(xí),結(jié)合習(xí)近平新時代中國特色社會主義經(jīng)濟(jì)思想,講授Python的股息貼現(xiàn)模型計算、市盈率模型計算、負(fù)債情況下的自由現(xiàn)金流分析。【重點和難點】Python的股息貼現(xiàn)模型計算、市盈率模型計算、負(fù)債情況下的自由現(xiàn)金流分析。【思政育人目標(biāo)】將習(xí)近平新時代中國特色社會主義經(jīng)濟(jì)思想融入到Python的股息貼現(xiàn)模型計算、市盈率模型計算、負(fù)債情況下的自由現(xiàn)金流分析的學(xué)習(xí)中。【課程學(xué)習(xí)目標(biāo)】了解股息貼現(xiàn)模型計算、市盈率模型計算、負(fù)債情況下的自由現(xiàn)金流分析的基本理論,掌握其Python的計算方法。金融計算:基于Python79主要內(nèi)容5.1. 股息貼現(xiàn)模型5.2. 市盈率模型5.3. 負(fù)債情況下的自由現(xiàn)金流分析法金融計算:基于Python805.1. 股息貼現(xiàn)模型5.1.1. 零增長模型零增長模型(zero-growthmodel)是股息貼現(xiàn)模型的一種特殊形式,它假定股息是固定不變的。[例5.1.1]假定投資者預(yù)期某公司每期支付的股息將永久性地固定為1.15元/每股,并且貼現(xiàn)率定為13.4%,那么,該公司股票的內(nèi)在價值等于多少?金融計算:基于Python815.1.2. 不變增長模型(戈登模型)[例5.1.2]如果X公司股票的股利增長率為0.03,第0期支付的股利為2元/股,市場資本率為12%,求其內(nèi)在價值?金融計算:基于Python825.1.3. 三階段增長模型及H模型. 三階段增長模型三階段增長模型(three-stage-growthmodel)是股息貼現(xiàn)模型的第三種特殊形式,最早是由莫洛多斯基(N.Molodovsky,1965)提出,現(xiàn)在仍然被許多投資銀行廣泛使用。金融計算:基于Python83股息增長的三個不同階段:第一階段(期限為A):股息的增長率為一個常數(shù)(ga)第二階段(A+1到B-1):股息增長率以線性的方式從ga變化為gn,gn是第三階段的股息增長率。第三階段(B到永遠(yuǎn)):股息的增長率也是一個常數(shù)(gn),該增長率是公司長期的正常的增長率。即戈登增長模型股息的增長率為一個常數(shù)(ga)股息增長率以線性的方式從ga

變化為gn

張瑞鋒-金融市場學(xué)-普通股價值分析

張亦春《金融市場學(xué)》觀點:defsfun(d0,ga,gn,y,t1,t2,A,B):#第一階段v1a1=((1+ga)/(1+y))**t1v1=d0*sum(a1)#第二階段v2gt1=ga-(ga-gn)*(t2[0]-A)/(B-A)dt1=d0*(1+ga)**A*(1+gt1)a21=dt1/(1+y)**t2[0]gt2=ga-(ga-gn)*(t2[1]-A)/(B-A)dt2=dt1*(1+gt2)a22=dt2/(1+y)**t2[1]gt3=ga-(ga-gn)*(t2[2]-A)/(B-A)dt3=dt2*(1+gt3)a23=dt3/(1+y)**t2[2]v2=a21+a22+a23#第三階段v3v3=dt3*(1+gn)/((y-gn)*(1+y)**(B-1))v=v1+v2+v3returnv金融計算:基于Python85劉紅忠《金融市場學(xué)》觀點defsfun(d0,ga,gn,y,t1,t2,A,B):#第一階段v1a1=((1+ga)/(1+y))**t1v1=d0*sum(a1)#第二階段v2gt1=ga-(ga-gn)*(t2[0]-A)/(B-A)dt1=d0*(1+ga)**A*(1+gt1)a21=dt1/(1+y)**t2[0]gt2=ga-(

溫馨提示

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

評論

0/150

提交評論