摘要:Kaburobo是日本早稻田大學(xué)用JAVA語言編寫的一種股票機(jī)器人,它既可以在假想的股票交易平臺上進(jìn)行虛擬交易,又能通過接口自行編程進(jìn)行算法模擬和實現(xiàn)。本文結(jié)合作者的研究成果詳細(xì)介紹了Kaburobo的工作原理,并通過這個股票交易平臺,研究了人工智能在股票交易領(lǐng)域的應(yīng)用。
關(guān)鍵詞:Kaburobo;股票機(jī)器人;人工智能
中圖分類號:TP182文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)14-20931-03
1 引言
隨著改革開放的不斷深入,我國股票市場得到了迅速的發(fā)展,股票投資已成為眾多個人理財?shù)闹匾绞?。不言而喻,如果投資者能正確預(yù)測股票價格,選準(zhǔn)買賣時機(jī),無疑會給個人帶來豐厚收益。經(jīng)過長期實踐和研究,人們總結(jié)出了一套技術(shù)分析方法,利用這些方法方便了股民對股市的把握。如:K線理論,波浪理論,周期理論,切線理論等。現(xiàn)有的技術(shù)指標(biāo)分析方法有:移動平均線,相對強(qiáng)弱指數(shù),動量指標(biāo),乖離率,騰落指數(shù),漲跌比率,成交量比率,平滑異同移動平均線(MACD)等,它們成為一般的股票分析的常用工具。當(dāng)然,影響股票價格的因素有很多,最經(jīng)常,直接,而又多方面作用于股票價格的是經(jīng)濟(jì)因素,此外,還有政治因素,人為因素,心理因素等。
Kaburobo是在2004年,由日本早稻田大學(xué)率先發(fā)起研究的項目,旨在對股票自動交易算法進(jìn)行研究并舉行股票機(jī)器人編程。到目前為止,已經(jīng)有超過17000人參加。200610臺最優(yōu)秀的股票機(jī)器人進(jìn)行了實際運用,取得優(yōu)異的成績,引起很大的反響。各種優(yōu)秀的技術(shù)被應(yīng)用于股票機(jī)器人當(dāng)中,象在人工智能領(lǐng)域的機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等[1]。
本文結(jié)合研究實踐介紹Kaburobo的規(guī)則、執(zhí)行、工作原理等并基于人工智能理論,提出解決股票機(jī)器人一系列問題的方法如選擇買賣股票的問題,股價的預(yù)測問題等。
2 Kaburobo及其開發(fā)環(huán)境
2.1 環(huán)境設(shè)置
Kaburobo SDK是用Java開發(fā)的股票機(jī)器人工具包[2]。安裝好工具包后首先要對配置文件進(jìn)行啟動設(shè)定,配置文件的文件名一般為robot-config.xml,內(nèi)容如下:
以上是Kaburobo啟動配置文件的主要部分,做成股票機(jī)器人的時候可以根據(jù)實際情況進(jìn)行設(shè)置。
另外Kaburobo SDK中提供了做成股票機(jī)器人的基本的類,還提供了對各種參數(shù)進(jìn)行管理的類,詳細(xì)情況參照下表:
使用Kaburobo開發(fā)股票機(jī)器人的算法程序時推薦使用Eclipse做為開發(fā)環(huán)境。環(huán)境設(shè)置的過程是新建工程,在新建工程界面的JavaBuildPath的Libraries選項中,將Kaburobo SDK中的JAR文件追加進(jìn)去。設(shè)定環(huán)境變量,新建Kaburobo_HOME變量,將Kaburobo所在路徑添加進(jìn)去。這些都準(zhǔn)備好之后,就可以進(jìn)行編程,實現(xiàn)自己的股票機(jī)器人了。
2.2 Kaburobo工作原理
2.2.1數(shù)據(jù)來源
Kaburobo SDK中包含了東京證券交易所近幾年的股票信息數(shù)據(jù),開發(fā)人員可以通過配置文件的設(shè)定來選擇某一時間段內(nèi)的測試數(shù)據(jù)。在Kaburobo的機(jī)器人大賽中,數(shù)據(jù)全部來自當(dāng)日東京證券交易所的真實數(shù)據(jù),并且交易過程也嚴(yán)格按照東京證券交易所的規(guī)定。
2.2.2 實現(xiàn)過程
股票機(jī)器人大賽的參加者可以登錄www.Kaburobo.jp網(wǎng)站進(jìn)行注冊,然后參加比賽,過程如下:
(1)個人信息注冊;
(2)編程實現(xiàn)Kaburobo機(jī)器人;
(3)進(jìn)行虛擬股票交易;
(4)運用成績總結(jié)。
Kaburobo作成之后,在進(jìn)行股票交易的時候,按照東京證券交易所的規(guī)定進(jìn)行交易,在每一個交易日,Kaburobo的工作過程如下:
(1)08:00-09:00 上午股市開盤前的準(zhǔn)備工作;
(2)09:00-11:00 上午股市交易時間;
(3)11:30-12:30 總結(jié)上午股票交易,同時做好下午開盤前的準(zhǔn)備工作;
(4)12:30-15:00 下午股市交易時間;
(5)16:00-24:00 對整個交易日進(jìn)行總結(jié),做下一個交易日的準(zhǔn)備工作。
2.2.3 簡單的Kaburobo實例
本例中繼承AbstactRobot作成一個簡單的Kaburobo機(jī)器人,重寫了order和screening兩個方法。
order方法是進(jìn)行交易處理的方法,screening方法是對股票進(jìn)行篩選,為交易提供數(shù)據(jù)支持的方法,在本例中,買進(jìn)了1000股名為stock的股票。
3 Kaburobo與人工智能
本節(jié)從人工智能的觀點出發(fā),提出解決Kaburobo所面對的一系列問題的方法。
3.1 交易決定問題
所謂交易決定問題,就是決定交易的一系列參數(shù)的過程,比如交易哪些股票,用什么方法,交易量是多少等。從人工智能的觀點來看,Kaburobo的交易決定問題就是連續(xù)決策問題(Sequential Decision Problem)的一種,我們的目的在于一邊規(guī)避股市風(fēng)險,一邊增加總資產(chǎn)。
對于股票的各項信息,我們用以下參數(shù)建立模型。開始的時刻為t=0,在時刻t時的狀態(tài)為St觀察到的可能信息為It,那么在各個時刻的股票信息集合為{},基于這些信息,我們假定在目標(biāo)時刻T>t時的交易效果Ut最大,這個時刻決定出來的交易股票集合S St,種類t T,價格p N,股數(shù)n Z,這些參數(shù)組成的集合叫做Ot,那么交易決定問題就變成了集合Ot的確定問題。(在這里,S是可能交易的股票集合,T是交易種類的集合,N是自然數(shù)集合,Z是整數(shù)集合。)
這里我們把連續(xù)決策問題做為解決問題的方法,其實強(qiáng)化學(xué)習(xí)算法和遺傳算法等也正在被研究。當(dāng)使用這些方法的時候,如何設(shè)計效果函數(shù)U就成了一個很大的課題。
3.2 股票選擇問題
如上所述,我們用一個4元組(s,t,p,n)來表示一次交易,本節(jié)我們著眼于股票集合S,以各時間t的股票信息It為基礎(chǔ),從可能交易的股票集合S里來決定要交易的股票集合。
股票的選擇問題,可以歸類于人工智能領(lǐng)域的分類問題(Classification)[3],也就是說將可能交易的股票集合S分成兩類:交易股票和非交易股票,也叫二值分類問題。對于分類問題的解決方法有很多研究,在使用這些方法時,變量的選擇非常重要。
3.3 股價的預(yù)測問題
Kaburobo的效果函數(shù)U,在很多場合都與股價有著很深的聯(lián)系,因此,在目標(biāo)時刻T,用效果函數(shù)U的大小來幫助預(yù)測股價會很有幫助的。
股價的預(yù)測問題就是,在各個時刻t,根據(jù)股票信息It來推定目標(biāo)時刻的股票價格Pr。這個問題在人工智能領(lǐng)域被當(dāng)作回歸問題處理(Regression),也就是說,對于可能交易股票的集合S中所包含的事件,每一件都分配給一個數(shù)值。
目前,回歸問題中的邏輯回歸(Logistic)和支持向量回歸(Support Vector)等的解決方法有很多,當(dāng)然在使用這些方法的時候,變量的選擇也很重要[4,5]。
另外,這個問題也可以看作是時序列數(shù)據(jù)預(yù)測問題(Time-Series Data Prediction),就是說,對于每一支股票,隨著時間的發(fā)展,通過過去的股價可以預(yù)測將來的股價,從持續(xù)增加的大量時序列數(shù)據(jù)中,總結(jié)出股價變化的規(guī)律和模式,從而推測股票的價格走勢。
3.4 其他因素對股價的影響
影響股票市場的因素很多,比如新產(chǎn)品的發(fā)布,投資計劃的變更,國家政策的改變,甚至美國總統(tǒng)的選舉都對投資者的投資計劃有很大影響。因此,如果能足夠充分的考慮到這些因素對股價的影響,那么就能夠達(dá)到理想的投資效果。
4 結(jié)束語
本文在現(xiàn)有的研究成果上,介紹了Kaburobo機(jī)器人的工作原理,并從人工智能的角度出發(fā),提出Kaburobo股票機(jī)器人的優(yōu)化方案。
總體來說,本文中提出的方案能夠在一定的條件下解決問題,但是,股票市場瞬息萬變而且受各種因素影響,要想更好的解決問題需要更進(jìn)一步的研究。人工智能是一門在很多領(lǐng)域被廣泛應(yīng)用的學(xué)科,隨著越來越多的人參與研究人工智能,一定會使它不斷獲得新的發(fā)展。
參考文獻(xiàn):
[1] 蔣宗禮.人工神經(jīng)網(wǎng)絡(luò)導(dǎo)論[M].北京:高等教育出版社,2001:39-40.
[2] Kaburobo http://www.Kaburobo.jp[ol].
[3] 俞星星,閻平凡.強(qiáng)化學(xué)習(xí)系統(tǒng)及其基于可靠度最優(yōu)的學(xué)習(xí)算法[J].信息與控制,1999m10:99-101.
[4] 王小平,曹立明.遺傳算法理論應(yīng)用與軟件實現(xiàn)[M].西安:西安交通大學(xué)出版社,2002.27-29.
[5] 張汝波,張國印.強(qiáng)化學(xué)習(xí)系統(tǒng)的結(jié)構(gòu)及算法[J].計算機(jī)科學(xué),1999,10:231-233.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文