1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【Python】我常用的幾個(gè)Python金融分析庫(kù),太強(qiáng)了~

        共 5573字,需瀏覽 12分鐘

         ·

        2024-07-29 12:00

        Python 是金融分析和開(kāi)發(fā)的強(qiáng)大工具。從計(jì)算原始數(shù)據(jù)到創(chuàng)建美觀而直觀的圖形用戶界面(GUI),有無(wú)數(shù)的庫(kù)可以幫助用戶建立自己的金融模型。
        本文將介紹10個(gè)主流的金融和金融建模庫(kù),重點(diǎn)關(guān)注量化金融領(lǐng)域的特定應(yīng)用,這些應(yīng)用需要完成數(shù)據(jù)導(dǎo)入和轉(zhuǎn)換、時(shí)間序列和風(fēng)險(xiǎn)分析、交易和回溯測(cè)試、EXCEL 集成以及數(shù)據(jù)可視化等編程任務(wù)。

        1 NumPy

        從根本上說(shuō),所有金融模型都依賴(lài)于數(shù)字運(yùn)算。NumPy 是用 Python 進(jìn)行科學(xué)和數(shù)學(xué)計(jì)算的基礎(chǔ)庫(kù)。它不僅在 Python 中引入了 n 維數(shù)組和矩陣,還包含一些基本的數(shù)學(xué)函數(shù)來(lái)操作這些數(shù)據(jù)結(jié)構(gòu)。本文后面提到的大多數(shù)高級(jí)金融 Python 庫(kù)都依賴(lài)于 NumPy。

        例如,創(chuàng)建兩個(gè) 2×2 復(fù)數(shù)矩陣并打印總和:

        import numpy as np
        a = np.array([[1+2j2+1j], [34]])
        b = np.array([[56+6j], [78+4j]])
        print(a+b)

        輸出:

        [[6.+2.j   8.+7.j]
         [10.+0.j 12.+4.j]]

        2 SciPy

        NumPy 庫(kù)為操作和存儲(chǔ)數(shù)據(jù)提供了基本的數(shù)學(xué)結(jié)構(gòu)。但要基于這些數(shù)據(jù)建立復(fù)雜的模型,還需要一個(gè)包含更高級(jí)統(tǒng)計(jì)工具和操作的存儲(chǔ)庫(kù),這就是 SciPy。

        SciPy提供了對(duì)建立任何統(tǒng)計(jì)模型所需的高級(jí)科學(xué)計(jì)算至關(guān)重要的函數(shù)和算法。其中包括插值、優(yōu)化、聚類(lèi)、轉(zhuǎn)換和數(shù)據(jù)整合算法。在進(jìn)行任何類(lèi)型的數(shù)據(jù)分析或構(gòu)建任何類(lèi)型的預(yù)測(cè)模型時(shí),這些操作都是必不可少的。

        為了演示插值,我首先使用 NumPy 用任意函數(shù)創(chuàng)建一些數(shù)據(jù)點(diǎn),然后比較不同的插值方法:

        from scipy.interpolate import interp1d
        import pylab
        x = np.linspace(0510)
        y = np.exp(x) / np.cos(np.pi * x)
        f_nearest = interp1d(x, y, kind='nearest')
        f_linear  = interp1d(x, y)
        f_cubic   = interp1d(x, y, kind='cubic')
        x2 = np.linspace(05100)
        pylab.plot(x, y, 'o', label='data points')
        pylab.plot(x2, f_nearest(x2), label='nearest')
        pylab.plot(x2, f_linear(x2), label='linear')
        pylab.plot(x2, f_cubic(x2), label='cubic')
        pylab.legend()
        pylab.show()

        3 Pandas

        Pandas建立了一種直觀易用的數(shù)據(jù)結(jié)構(gòu)--DataFrame,專(zhuān)門(mén)用于分析和建立模型。

        Pandas以 NumPy 引入的數(shù)組為基礎(chǔ),針對(duì)表格、多維和異構(gòu)數(shù)據(jù)進(jìn)行了優(yōu)化。最常見(jiàn)的操作,如分組、連接、合并或填充、替換和歸納空值,都可以在一行中執(zhí)行。

        此外,Pandas還提供了從各種標(biāo)準(zhǔn)格式導(dǎo)入數(shù)據(jù)的函數(shù),以及用于快速繪圖、檢索基本統(tǒng)計(jì)數(shù)據(jù)或輸出數(shù)據(jù)的其他函數(shù)。

        創(chuàng)建 DataFrame

        import pandas as pd
        df_1 = pd.DataFrame({'col1': [1,2], 'col2': [3,4]})

        合并dataframe

        df_2 = pd.DataFrame({'col3': [5,6], 'col4': [7,8]})
        df = pd.concat([df_1,df_2], axis = 1)

        4 statsmodels

        SciPy 提供了一個(gè)統(tǒng)計(jì)工具庫(kù),允許用戶構(gòu)建模型,而 pandas 則使其易于實(shí)現(xiàn)。statsmodels 以這些庫(kù)為基礎(chǔ),對(duì)不同的統(tǒng)計(jì)模型進(jìn)行了更高級(jí)的測(cè)試。

        對(duì)于任何給定的模型,每個(gè)估計(jì)器都有大量的結(jié)果統(tǒng)計(jì)和診斷列表,目的是讓用戶全面了解模型的性能。這些結(jié)果將根據(jù)現(xiàn)有的統(tǒng)計(jì)庫(kù)進(jìn)行測(cè)試,以確保其正確性。

        例如,導(dǎo)入一個(gè)內(nèi)置數(shù)據(jù)集:

        import numpy as np
        import statsmodels.api as sm
        rand_data = sm.datasets.randhie.load(as_pandas=False)
        rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1)
        rand_exog = sm.add_constant(rand_exog, prepend=False)

        并用泊松模型對(duì)數(shù)據(jù)集進(jìn)行擬合:

        poisson_mod = sm.Poisson(rand_data.endog, rand_exog)
        poisson_res = poisson_mod.fit(method="newton")
        print(poisson_res.summary())

        5 Quandl

        Quandl 是金融數(shù)據(jù)源庫(kù),提供了的大量經(jīng)濟(jì)、金融和市場(chǎng)數(shù)據(jù)。大多數(shù)原始數(shù)據(jù)集在注冊(cè)后可免費(fèi)訪問(wèn)(需要一個(gè) API 密鑰),更高級(jí)和更深入的數(shù)據(jù)集則需要付費(fèi)。

        6 Zipline

        Zipline是一個(gè)強(qiáng)大的 Python 算法交易庫(kù), 將統(tǒng)計(jì)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)源聯(lián)系,且為 Quantopian(一個(gè)用于構(gòu)建和執(zhí)行交易策略的免費(fèi)平臺(tái))提供支持。

        Quandl的數(shù)據(jù)可以輕松導(dǎo)入,自定義算法也可以輕松設(shè)計(jì)、測(cè)試和實(shí)施。這包括算法的回溯測(cè)試和實(shí)時(shí)交易。一個(gè)基本算法是這樣的:

        from zipline.api import order, record, symbol
        def initialize(context):
            pass
        def handle_data(context, data):
            order(symbol('AAPL'), 10)
            record(AAPL=data.current(symbol('AAPL'), 'price'))

        我們從 zipline 中導(dǎo)入訂單、記錄和符號(hào)函數(shù),建立了一個(gè)記錄蘋(píng)果股票價(jià)格的算法。

        7 Pyfolio

        在 zipline 中設(shè)計(jì)和測(cè)試算法后,pyfolio 庫(kù)提供了一種生成包含性能統(tǒng)計(jì)數(shù)據(jù)的簡(jiǎn)便方法。這些統(tǒng)計(jì)數(shù)據(jù)包括年度/月度回報(bào)、回報(bào)量化、滾動(dòng)貝塔/夏普比率、投資組合周轉(zhuǎn)率等。生成單只股票的示例數(shù)據(jù)表:

        import pyfolio as pf
        stock_rets = pf.utils.get_symbol_rets('FB')
        pf.create_returns_tear_sheet(stock_rets, live_start_date='2015-12-1')

        輸出結(jié)果將是一系列包含性能指標(biāo)的表格和圖表。

        8 TA-Lib

        接下來(lái)的兩個(gè)庫(kù)是 zipline 和 pyfolio 的替代品。第一個(gè)是技術(shù)分析庫(kù),簡(jiǎn)稱(chēng) TA-Lib,它使用 C++ 編寫(xiě),但也有 Python 的封裝。與 zipline 一樣,TA-Lib 提供了常見(jiàn)的金融工具,如重疊研究、動(dòng)量指標(biāo)、成交量指標(biāo)、波動(dòng)率指標(biāo)、價(jià)格轉(zhuǎn)換、周期指標(biāo)、模式識(shí)別和純統(tǒng)計(jì)功能。

        9 QuantLib

        QuantLib 是 zipline 和 pyfolio 的第二個(gè)替代庫(kù),與 TA-Lib 類(lèi)似,QuantLib 也是用 C++ 編寫(xiě),然后導(dǎo)出到 Python。

        QuantLib旨在創(chuàng)建一個(gè)免費(fèi)、開(kāi)源的建模、交易和風(fēng)險(xiǎn)管理庫(kù)。該庫(kù)包含設(shè)計(jì)和實(shí)施高級(jí)算法的工具,其中包括市場(chǎng)慣例、收益曲線模型、求解器、PDE、蒙特卡羅等功能。

        10 Matplotlib

        前面用于金融的 python庫(kù)包含了金融數(shù)據(jù)源、金融數(shù)據(jù)的最佳數(shù)據(jù)結(jié)構(gòu)以及統(tǒng)計(jì)模型和評(píng)估機(jī)制。但沒(méi)有一個(gè)庫(kù)提供了用于金融建模的最重要的 Python 工具之一:數(shù)據(jù)可視化(本文中的所有可視化均由 matplotlib 提供)。

        可視化不僅對(duì)于理解金融數(shù)據(jù)的趨勢(shì)很重要,而且對(duì)于向非技術(shù)人員傳達(dá)見(jiàn)解也很重要。Python 中有許多數(shù)據(jù)可視化庫(kù),每個(gè)庫(kù)都有其優(yōu)點(diǎn)和缺點(diǎn),但在金融建模中最容易實(shí)現(xiàn)的是 matplotlib。這主要是因?yàn)樵S多庫(kù)都已經(jīng)依賴(lài) matplotlib。

        來(lái)源:activestate

            
               
                   
                      
        往期精彩回顧




        • 交流群

        歡迎加入機(jī)器學(xué)習(xí)愛(ài)好者微信群一起和同行交流,目前有機(jī)器學(xué)習(xí)交流群、博士群、博士申報(bào)交流、CV、NLP等微信群,請(qǐng)掃描下面的微信號(hào)加群,備注:”昵稱(chēng)-學(xué)校/公司-研究方向“,例如:”張小明-浙大-CV“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~(也可以加入機(jī)器學(xué)習(xí)交流qq群772479961


        瀏覽 155
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            99久久久无码国产成人 | 特级西西西西4444级酉西88wwww特 | 色婷婷一区二区三区 | 午夜成年视频 | 美女操逼一区 | 欧美掰穴| 一级内射片在线网站观看 | 国产精品97| 久久丫丫 | 男男肉耽高h彩漫 |