專(zhuān)利名稱(chēng):一種基于gpu加速的證券實(shí)時(shí)分析系統(tǒng)的制作方法
—種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng)技術(shù)領(lǐng)域
本發(fā)明屬于金融工程領(lǐng)域,更具體而言,屬于證券分析中的量化投資分析領(lǐng)域。
背景技術(shù):
隨著互聯(lián)網(wǎng)交易的普及和計(jì)算機(jī)技術(shù)的發(fā)展,量化投資分析受到越來(lái)越多的重視。在我國(guó)證券市場(chǎng),基本面研究占據(jù)市場(chǎng)的主流地位,然而隨著證券市場(chǎng)的不斷發(fā)展,證券數(shù)目的增加、衍生品出現(xiàn)及新業(yè)務(wù)的推出,基金要想戰(zhàn)勝指數(shù)的難度也不斷增加,量化投資將發(fā)揮越來(lái)越重要的作用。隨著量化投資分析的推廣和分析模型的復(fù)雜化,為了保證分析系統(tǒng)的實(shí)時(shí)性,人們對(duì)相關(guān)領(lǐng)域的計(jì)算機(jī)系統(tǒng)提出了越來(lái)越高的性能要求。尋找能夠快速進(jìn)行模型分析的計(jì)算機(jī)系統(tǒng)成為了證券投資分析領(lǐng)域的一個(gè)迫切任務(wù)。
近年來(lái),GPU通用計(jì)算技術(shù)逐步發(fā)展起來(lái),并應(yīng)用到了圖像處理、信號(hào)處理、人工智能、金融分析、數(shù)值計(jì)算、天文計(jì)算、生物計(jì)算、分子動(dòng)力學(xué)計(jì)算、石油勘探、密碼學(xué)、模式識(shí)別等各種領(lǐng)域。GPU計(jì)算具有的計(jì)算硬件成本低、功耗小的優(yōu)點(diǎn)使其成為了許多計(jì)算系統(tǒng)的首選。發(fā)明內(nèi)容
本發(fā)明公開(kāi)了一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),目的是利用GPU的通用計(jì)算能力來(lái)提高證券分析速度,降低分析計(jì)算成本。
本發(fā)明利用一組GPU或多組GPU來(lái)加速證券分析模型的計(jì)算過(guò)程,主要步驟包括
(I)數(shù)據(jù)獲取證券的基本面數(shù)據(jù)和歷史成交數(shù)據(jù)在本地存儲(chǔ),證券的實(shí)時(shí)成交數(shù)據(jù)由CPU負(fù)責(zé)從互聯(lián)網(wǎng)實(shí)時(shí)抓?。粸榱吮WC實(shí)時(shí)抓取速度,采用多線(xiàn)程的方式進(jìn)行并行抓取。
(2)數(shù)據(jù)預(yù)處理該過(guò)程用于提取模型分析算法所用的特征,對(duì)于歷史成交數(shù)據(jù), 只需要一次計(jì)算,由CPU完成;對(duì)于實(shí)時(shí)成交數(shù)據(jù),需要?jiǎng)討B(tài)地進(jìn)行特征提取,由GPU完成。
(3)模型分析利用GPU對(duì)多個(gè)證券進(jìn)行并行分析,每一個(gè)GPU線(xiàn)程對(duì)一個(gè)特定模型的一個(gè)特定證券進(jìn)行分析。
(4)結(jié)果輸出模型分析結(jié)果由GPU的全局顯存導(dǎo)入內(nèi)存,再由CPU進(jìn)行輸出處理。
證券數(shù)據(jù)在GPU的全局顯存的存儲(chǔ)方式為一組證券的某一特征的所有數(shù)據(jù)在一個(gè)連續(xù)的區(qū)域內(nèi),而不是一個(gè)證券的所有特征的數(shù)據(jù)在一個(gè)連續(xù)的區(qū)域。
本發(fā)明在一示例性實(shí)施例中,給出了該系統(tǒng)的一個(gè)實(shí)施方式說(shuō)明。該實(shí)施例使用一個(gè)Intel公司的CoreI5型號(hào)的CPU和兩個(gè)Nvidia公司的GTX480型號(hào)的GPU。在一個(gè) GPU中進(jìn)行了 60分鐘周期的KDJ金叉預(yù)警分析和MACD死叉預(yù)警分析,在另一個(gè)GPU中進(jìn)行了 30分鐘周期的價(jià)格放量上穿N日線(xiàn)預(yù)警分析和KDJ的J值小于20預(yù)警分析。
該系統(tǒng)的優(yōu)點(diǎn)在于
(I)在給定模型條件下,加速模型分析速度,有利于證券分析系統(tǒng)和自動(dòng)交易系統(tǒng)的快速?zèng)Q策。
(2)在給定分析時(shí)間條件下,降低模型分析粒度和/或提高模型分析復(fù)雜度。
(3)與不使用GPU計(jì)算的系統(tǒng)比較,可以大幅節(jié)約計(jì)算成本。
以上說(shuō)明是對(duì)該系統(tǒng)的概述,不可避免地進(jìn)行了簡(jiǎn)化和抽象。相關(guān)領(lǐng)域技術(shù)人員應(yīng)該理解,簡(jiǎn)化和抽象的目的在于對(duì)系統(tǒng)進(jìn)行說(shuō)明而不是限制。
該系統(tǒng)采用了 OpenCL編程框架和Nvidia公司的CUDA架構(gòu)實(shí)現(xiàn),可應(yīng)用于股票、 債券等證券分析及權(quán)證、期貨等金融衍生品分析領(lǐng)域。
圖I描繪了計(jì)算機(jī)系統(tǒng)的高級(jí)框圖。
圖2描繪了證券數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)的流向的高級(jí)框圖。
圖3描繪了該系統(tǒng)的流程圖。
圖4描繪了證券數(shù)據(jù)的存儲(chǔ)方式的高級(jí)框圖。
圖5描繪了證券數(shù)據(jù)在顯卡內(nèi)的流向的高級(jí)框圖。
圖6描繪了 GPU線(xiàn)程與GPU硬件之間的映射關(guān)系的高級(jí)框圖。
圖7描繪了模型分析模塊的流程圖。
具體實(shí)施方式
利用具有一個(gè)中央處理器和兩個(gè)顯卡的計(jì)算機(jī)系統(tǒng)來(lái)進(jìn)行計(jì)算(如圖I),通過(guò)在 (PU上開(kāi)啟兩個(gè)線(xiàn)程,分別控制兩塊顯卡。每一個(gè)顯卡可以同時(shí)進(jìn)行多個(gè)模型的分析。在一個(gè)GPU中采用了 60分鐘周期的KDJ金叉模型和MA⑶死叉模型,在另一個(gè)GPU中采用了 30 分鐘周期的價(jià)格放量上穿20日線(xiàn)模型和KDJ的J值小于20模型。
基本面數(shù)據(jù)和歷史成交數(shù)據(jù)從本地獲取,實(shí)時(shí)成交數(shù)據(jù)從互聯(lián)網(wǎng)獲取(如圖2)。 為保證實(shí)時(shí)成交數(shù)據(jù)的抓取效率,通常采用多線(xiàn)程的方式對(duì)實(shí)時(shí)成交數(shù)據(jù)進(jìn)行批量抓取。 歷史成交數(shù)據(jù)的分析周期化在CPU上進(jìn)行,實(shí)時(shí)成交數(shù)據(jù)的分析周期化在GPU上進(jìn)行。
該系統(tǒng)的具體操作步驟包括(如圖3):初始化、證券數(shù)據(jù)獲取、證券數(shù)據(jù)從內(nèi)存到顯存的復(fù)制、GPU計(jì)算、結(jié)果從顯存到內(nèi)存的復(fù)制、結(jié)果輸出等過(guò)程。初始化步驟用于指定分析周期、分析模型種類(lèi)等參數(shù)。證券數(shù)據(jù)從內(nèi)存到顯存的復(fù)制和結(jié)果從顯存到內(nèi)存的復(fù)制步驟(如圖3),通過(guò)調(diào)用OpenCL或者CUDA編程框架的相應(yīng)函數(shù)實(shí)現(xiàn)。證券數(shù)據(jù)獲取步驟分別從本地磁盤(pán)和互聯(lián)網(wǎng)抓取上交所和深交所的2000多只A股股票的交易數(shù)據(jù)。從本地磁盤(pán)讀取的歷史成交數(shù)據(jù)為5分鐘分析周期的成交數(shù)據(jù)。從互聯(lián)網(wǎng)讀取的實(shí)時(shí)成交數(shù)據(jù)為5秒鐘左右更新一次的數(shù)據(jù)。
為了充分利用GPU的合并訪(fǎng)問(wèn)的特性,證券數(shù)據(jù)在內(nèi)存和顯存中的存儲(chǔ)采用的方式為(如圖4):一組證券數(shù)據(jù)的同一特征在一個(gè)連續(xù)的內(nèi)存或顯存區(qū)域,從而保證GPU上一個(gè)線(xiàn)程組內(nèi)的相鄰線(xiàn)程在訪(fǎng)問(wèn)全局顯存時(shí)能夠訪(fǎng)問(wèn)到連續(xù)的顯存空間,以此來(lái)提高數(shù)據(jù)的訪(fǎng)問(wèn)速度。
從CPU傳入GPU的證券數(shù)據(jù)中的歷史成交數(shù)據(jù)部分是經(jīng)過(guò)了分析周期化處理了的數(shù)據(jù)。一個(gè)典型的分析周期化處理方式是通過(guò)短周期的K線(xiàn)數(shù)據(jù)來(lái)生成長(zhǎng)周期(指定分析4周期)的K線(xiàn)數(shù)據(jù)。
數(shù)據(jù)在顯卡中的顯存和GPU之間的流向?yàn)?如圖5):用于模型分析的歷史成交數(shù)據(jù)和實(shí)時(shí)成交數(shù)據(jù)在存儲(chǔ)上連續(xù),實(shí)時(shí)成交數(shù)據(jù)經(jīng)過(guò)分析周期化處理,存儲(chǔ)在全局顯存的指定位置。
實(shí)時(shí)成交數(shù)據(jù)的分析周期化和模型分析步驟中的GPU線(xiàn)程和任務(wù)的劃分為(如圖 6):一個(gè)線(xiàn)程對(duì)應(yīng)一只股票的一個(gè)模型。對(duì)于X只股票做雙模型分析而言,則有2X個(gè)GPU 線(xiàn)程。GPU線(xiàn)程的數(shù)量遠(yuǎn)遠(yuǎn)大于真實(shí)的GPU中的硬件核心數(shù)量,并且只有這樣才能較好的利用GPU的特性,隱藏?cái)?shù)據(jù)訪(fǎng)問(wèn)的延遲,加速模型分析過(guò)程。
根據(jù)已經(jīng)分析周期化的成交數(shù)據(jù)(歷史成交數(shù)據(jù)和實(shí)時(shí)成交數(shù)據(jù))和(或)基本面數(shù)據(jù),通過(guò)GPU來(lái)進(jìn)行模型分析(如圖7)。本實(shí)施例中,60分鐘周期的成交數(shù)據(jù)包括每只股票的500個(gè)歷史K線(xiàn)數(shù)據(jù)和小于等于4個(gè)的實(shí)時(shí)K線(xiàn)數(shù)據(jù)。30分鐘周期的成交數(shù)據(jù)包括每只股票的500個(gè)歷史K線(xiàn)數(shù)據(jù)和小于等于8個(gè)的實(shí)時(shí)K線(xiàn)數(shù)據(jù)。
KDJ指標(biāo)的計(jì)算算法為
首先計(jì)算一段時(shí)間如9個(gè)分析周期的RSV值,RSV值的計(jì)算可由公式RSV = (CLOSE-LLV (LOW, N)) / (HHV (HIGH, N) -LLV (LOW, N)) *100 得出,其中 CLOSE 代表收盤(pán)價(jià),LOff 代表最低價(jià),HIGH代表最高價(jià),N為分析周期個(gè)數(shù),LLV和HHV函數(shù)分別代表N個(gè)分析周期內(nèi)的最小的最低價(jià)和最大的最高價(jià)。K值等于前一分析周期的K值的2/3加上RSV值的1/3 的和,D值等于前一分析周期的D值的2/3加上當(dāng)前的K值的1/3的和。當(dāng)沒(méi)有前一分析周期的K值與D值時(shí),用50代替。J值等于當(dāng)前K值的3倍減去當(dāng)前D值的2倍的差。當(dāng)上一分析周期的J值小于K值,并且當(dāng)前分析周期的J值大于K值時(shí),視為金叉。反之,視為死叉。
MA⑶模型用到DIF和DEA兩個(gè)值。DIF值的計(jì)算需要SHORT和LONG兩個(gè)分析周期個(gè)數(shù)參數(shù)。SHORT小于L0NG,一般地SHORT取12,LONG取26。DIF值即為SHORT分析周期內(nèi)的EMA值與LONG分析周期內(nèi)的EMA值的差。EMA值的計(jì)算公式為EMA(N) = 2/ (N+l)*CL0SE+ (N-I)/(N+l)*LEFT(EMA(N),I),其中 N 為分析周期個(gè)數(shù),CLOSE 為收盤(pán)價(jià), LEFT (EMA (N),I)為上一分析周期EMA (N)值。當(dāng)沒(méi)有上一分析周期的EMA (N)值時(shí),取值O。 DEA值為DIF值的M個(gè)分析周期的EMA值,通常M取9。當(dāng)上一分析周期的DIF小于DEA,并且當(dāng)前分析周期的DIF大于DEA時(shí),視為金叉;反之,視為死叉。
股價(jià)放量上穿N日均線(xiàn)模型需要計(jì)算N日收盤(pán)價(jià)的平均值,并比較上一分析周期的成交量與當(dāng)前分析周期的成交量。當(dāng)股價(jià)高于N日平均值并且成交量放大一定量時(shí),視為符合模型的分析結(jié)果。
權(quán)利要求
1.一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),該系統(tǒng)包括數(shù)據(jù)獲取模塊、數(shù)據(jù)預(yù)處理模塊、模型分析模塊、結(jié)果輸出模塊,其特征在于(a)數(shù)據(jù)獲取模塊從本地磁盤(pán)和/或本地?cái)?shù)據(jù)庫(kù)獲取基本面數(shù)據(jù)和歷史成交數(shù)據(jù),從互聯(lián)網(wǎng)獲取實(shí)時(shí)成交數(shù)據(jù);(b)數(shù)據(jù)預(yù)處理模塊分別利用CPU和GPU對(duì)歷史成交數(shù)據(jù)和實(shí)時(shí)成交數(shù)據(jù)進(jìn)行分析周期化處理;(c)模型分析模塊利用GPU對(duì)證券數(shù)據(jù)進(jìn)行指定模型的并行計(jì)算。
2.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于數(shù)據(jù)獲取模塊從本地磁盤(pán)和/或本地?cái)?shù)據(jù)庫(kù)獲取的基本面數(shù)據(jù)包括但不限于股本數(shù)、流通股本數(shù)、市盈率、市凈率、市值、每股收益、每股凈資產(chǎn)、收益率證券指標(biāo);實(shí)時(shí)數(shù)據(jù)包括但不限于成交量、成交價(jià)格、最高成交價(jià)、最低成交價(jià)、開(kāi)盤(pán)價(jià)、收盤(pán)價(jià)、成交時(shí)間、成交金額。
3.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于數(shù)據(jù)預(yù)處理模塊在指定的分析周期中,CPU對(duì)歷史成交數(shù)據(jù)只計(jì)算一次,GPU對(duì)實(shí)時(shí)成交數(shù)據(jù)進(jìn)行多次計(jì)算。
4.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于模型分析模塊由一組GPU或多組GPU組成。
5.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于模型分析模塊包括但不限于指定分析周期的KDJ指標(biāo)金叉、指定分析周期的MACD指標(biāo)死叉,價(jià)格放量上穿N日均線(xiàn)。
6.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于該系統(tǒng)可同時(shí)對(duì)多個(gè)證券進(jìn)行多模型并行分析。
7.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于模型分析模塊采用GPU通用計(jì)算編程架構(gòu)實(shí)現(xiàn),包括但不限于CUDA、OpenCL, C++AMP。
8.如權(quán)利要求I所述的一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),其特征在于該系統(tǒng)應(yīng)用于股票、債券證券分析及權(quán)證、期貨金融衍生品分析領(lǐng)域,包括但不限于指數(shù)分析。
全文摘要
本發(fā)明公開(kāi)了一種基于GPU加速的證券實(shí)時(shí)分析系統(tǒng),屬于金融工程領(lǐng)域。該系統(tǒng)支持一組GPU或者多組GPU進(jìn)行多個(gè)模型的并行分析,包括數(shù)據(jù)獲取模塊、數(shù)據(jù)預(yù)處理模塊、模型分析模塊和結(jié)果輸出模塊。其優(yōu)點(diǎn)在于利用GPU的并行計(jì)算特性,在給定模型條件下,加速模型分析速度,有利于證券分析系統(tǒng)和自動(dòng)交易系統(tǒng)的快速?zèng)Q策;在給定分析時(shí)間條件下,降低模型分析粒度和(或)提高模型分析復(fù)雜度;與不使用GPU計(jì)算的系統(tǒng)比較,可以大幅節(jié)約計(jì)算成本。
文檔編號(hào)G06Q40/06GK102930474SQ20121040818
公開(kāi)日2013年2月13日 申請(qǐng)日期2012年10月24日 優(yōu)先權(quán)日2012年10月24日
發(fā)明者李化常 申請(qǐng)人:李化常