|
趨勢(shì)追蹤日內(nèi)交易策略優(yōu)缺點(diǎn)優(yōu)點(diǎn):大波段幾乎都能捕獲到,并且較早產(chǎn)生買賣點(diǎn)。 優(yōu)點(diǎn):獲利交易收益較大,虧損交易損失控制較好,并且通過(guò)設(shè)置止損點(diǎn),還可進(jìn)一步改進(jìn)。 缺點(diǎn):大部分平倉(cāng)操作由反向操作引發(fā),而不是由純粹的平倉(cāng)策略產(chǎn)生,導(dǎo)致交易成本和沖擊成本吞噬很多收益。 一、股指期貨的程序化日內(nèi)交易簡(jiǎn)介1、日內(nèi)程序化交易簡(jiǎn)介日內(nèi)交易是指由于某些證券品種(如股指期貨、商品期貨)具備T+0的機(jī)制,并且還可以賣空,從而允許投資者在一天之內(nèi)多次買多、賣空、平倉(cāng)。日內(nèi)交易的一個(gè)特點(diǎn)是不留倉(cāng)過(guò)夜,以規(guī)避下個(gè)交易日開盤時(shí)高開或者低開不確定性帶來(lái)的風(fēng)險(xiǎn)。 程序化交易是指將交易策略設(shè)計(jì)成計(jì)算機(jī)程序,通過(guò)計(jì)算機(jī)自動(dòng)對(duì)行情價(jià)格序列進(jìn)行判斷來(lái)下單,而不再由人肉眼觀察行情序列下單。程序化交易通常是用于日內(nèi)交易的,這是由于日內(nèi)交易數(shù)據(jù)頻率通常以秒為單位,如果由人來(lái)操作的話會(huì)比較辛苦,也很難保證準(zhǔn)確率。 程序化交易與人工交易相比具有以下一些優(yōu)勢(shì): 1程序化交易能避免人的貪婪、恐懼造成的非理性。長(zhǎng)期來(lái)看,堅(jiān)持某一個(gè)策略能獲得更高的收益,但是人的貪婪和恐懼很難避免,從而偏離原先的原則,而程序化交易則完美的執(zhí)行了既定策略,因?yàn)樗褪菣C(jī)器。 2程序化交易能更快的下單。相對(duì)于人的反應(yīng)來(lái)說(shuō),計(jì)算機(jī)判斷的時(shí)間可以認(rèn)為是0。 在股指期貨這樣的價(jià)格瞬間變動(dòng)迅速的市場(chǎng)上下單速度十分重要。 3程序化交易可以方便的應(yīng)用各種交易策略,也很容易檢測(cè)一些策略是否有效,對(duì)于篩選優(yōu)秀的交易策略是十分必要的。 日內(nèi)程序化交易基本只看技術(shù)分析,雖然也可以引入一些價(jià)值層面的參數(shù)作為變量,但是絕大部分日內(nèi)程序化交易還是就使用一些圖線形態(tài)和技術(shù)指標(biāo)。常用的圖形形態(tài)有頭肩頂?shù)住底、M頭、三角形整理;常用的技術(shù)指標(biāo)有移動(dòng)平均線(MA)、隨機(jī)指數(shù)(KD線)、相對(duì)強(qiáng)弱指數(shù)(RSI)、移動(dòng)平均值背馳指標(biāo)(MACD)。這些指標(biāo)在市場(chǎng)被廣泛的應(yīng)用,而這反過(guò)來(lái)更加強(qiáng)了這些指標(biāo)的作用。 2、程序化交易在國(guó)外的現(xiàn)狀由于國(guó)外市場(chǎng)比較成熟,所以很多東西都可以作為我們國(guó)內(nèi)市場(chǎng)的參考。以高頻交易為例,統(tǒng)計(jì)顯示,高頻交易在紐交所交易量中占比一直穩(wěn)定在70%左右,它是作為一種國(guó)際市場(chǎng)常用的交易方式存在的。而高頻交易通常都會(huì)采用程序化的方式來(lái)進(jìn)行,這是因?yàn)槿绻捎萌藶榈亩⒈P,一方面人力有限,另外一方面,人的反應(yīng)速度、情緒也會(huì)影響交易結(jié)果。 在國(guó)外,交易商可以向交易所支付較高的信息費(fèi)用來(lái)獲取高頻率的tick行情信息,甚至如大投行高盛可以將其服務(wù)器直接與交易所主機(jī)對(duì)接,而在高頻交易中擁有提前數(shù)毫秒的優(yōu)勢(shì)。國(guó)外進(jìn)行高頻交易時(shí),微型指令的頻率上兆。交易指令的速度是毫秒級(jí)。客戶從本地發(fā)出交易指令到高頻交易商,再轉(zhuǎn)發(fā)到交易所,延遲不超過(guò)30毫秒,為了保證這個(gè)速度,終端機(jī)一定要和交易所同位。 從NYSE的統(tǒng)計(jì)數(shù)據(jù)以及CTA的數(shù)據(jù)顯示,一般推出股指期貨早期程序化交易策略以套利為主,后續(xù)會(huì)逐步過(guò)渡到股指期貨投機(jī)交易。 另外一方面,各國(guó)交易所基本都針對(duì)股指期貨程序化交易有限制性條款,這是由于大量相似的自動(dòng)化下單判定條件很有可能會(huì)因?yàn)槟骋粋€(gè)事件而被同時(shí)觸發(fā),從而導(dǎo)致市場(chǎng)的非理性上漲或者下跌。5月6日華爾街就上演了一出被懷疑是由程序化交易引發(fā)的"空中蹦極",短短幾分鐘道瓊斯指數(shù)就從10600點(diǎn)下跌至9869點(diǎn),下跌幅度近10%。 3、國(guó)內(nèi)股指期貨日內(nèi)交易機(jī)會(huì)從4月16日股指期貨上市以來(lái),除了第一天走勢(shì)平緩之外,其余交易日波動(dòng)都比較大,存在較多的日內(nèi)投機(jī)機(jī)會(huì)。以5月12日的6秒數(shù)據(jù)為例: 圖1是一個(gè)典型的震蕩上漲的交易日,藍(lán)色的點(diǎn)A、E、I是較好買入點(diǎn)位置,但是我們可以看到在日內(nèi)仍有很多的賣空機(jī)會(huì),比如像紅色的點(diǎn)C、G、H,其余黑色的點(diǎn)是比較理想的平倉(cāng)的位置。股指期貨像這樣存在較大波動(dòng)的交易日比較多,而像其他的單邊上漲或者單邊下跌的交易日就更加適合做日內(nèi)交易了,所以不管是震蕩行情還是單邊行情,只要有波動(dòng),都比較適合做日內(nèi)交易。 二、交易策略邏輯1、數(shù)據(jù)的選擇首先是數(shù)據(jù)的選擇問(wèn)題,這個(gè)主要是考慮以何種周期的數(shù)據(jù)作為分析對(duì)象。我們采用的是先提取某一日1秒數(shù)據(jù)到程序中存儲(chǔ)好,每隔6秒提取一個(gè)價(jià)格組成價(jià)格序列。之所以這樣做是為了能夠方便的修改時(shí)間周期,當(dāng)需要其他周期的價(jià)格序列的時(shí)候,可以非??斓膶?shí)現(xiàn)。另外一個(gè)考慮就是方便考察產(chǎn)生買賣點(diǎn)之后價(jià)格的波動(dòng)情況,方便考察沖擊成本。至于具體的周期的選擇,這個(gè)有比較大的隨意性,但是這個(gè)對(duì)于交易策略的參數(shù)優(yōu)化影響很大,不同的周期需要不同的優(yōu)化參數(shù),所以周期應(yīng)該較早確定,不應(yīng)輕易改變。 2、如何模擬實(shí)盤在對(duì)交易策略的研究中有一個(gè)需要重點(diǎn)關(guān)注的問(wèn)題是不能利用未來(lái)的數(shù)據(jù)來(lái)研究。這是因?yàn)槲覀冊(cè)谑潞髶碛薪灰子涗浿蠛苋菀撞蛔杂X的利用所有的數(shù)據(jù)來(lái)研究交易策略,這樣得到的結(jié)果跟實(shí)盤中只能獲得歷史數(shù)據(jù)和當(dāng)前交易數(shù)據(jù)的情況差別很大。對(duì)于這個(gè)問(wèn)題的處理主要有兩種方法: 第一種是每次來(lái)了新的價(jià)格就將歷史價(jià)格和當(dāng)前價(jià)格送入價(jià)格預(yù)處理子程序和交易策略子程序重新運(yùn)行一遍,然后判定當(dāng)前點(diǎn)是不是買賣點(diǎn)或者平倉(cāng)點(diǎn)。 第二種是將價(jià)格預(yù)處理子程序處理過(guò)的歷史數(shù)據(jù)數(shù)組保存起來(lái),每次來(lái)了一個(gè)新的價(jià)格序列不需要重新處理歷史價(jià)格序列,而只需要由交易策略子程序?qū)Ρ忍幚磉^(guò)的歷史數(shù)據(jù)數(shù)組和當(dāng)前點(diǎn),決定是否進(jìn)行買賣平的操作,然后再將這個(gè)點(diǎn)加入處理過(guò)的歷史數(shù)據(jù)數(shù)組。 第一種方法主要是實(shí)現(xiàn)簡(jiǎn)單,邏輯清晰,但是當(dāng)歷史數(shù)據(jù)太多時(shí)運(yùn)行時(shí)間會(huì)變長(zhǎng),而第二種方法主要是能節(jié)省程序運(yùn)行時(shí)間,不過(guò)相對(duì)編碼容易出錯(cuò),在實(shí)盤中肯定需要用第二種方法,本文實(shí)驗(yàn)采用的是第二種方法。 1)均線化 因?yàn)樾星榈娜諆?nèi)高頻價(jià)格序列波動(dòng)比較劇烈,看起來(lái)也幾乎是雜亂無(wú)章的,所以我們?yōu)榱瞬蹲节厔?shì)需要過(guò)濾掉一些干擾的噪聲,均線是過(guò)濾微小擾動(dòng)的一種常用的方式,而且也適合用于捕捉趨勢(shì)。我們將A個(gè)連續(xù)的數(shù)據(jù)取均值,形成MA(A),在本文所作測(cè)試中A取為10,下文都稱經(jīng)過(guò)均值化的數(shù)據(jù)位MA(10)。由于采用的原始價(jià)格序列是6秒高頻數(shù)據(jù),所以均線化后的數(shù)據(jù)類似于60秒價(jià)格均值。如圖4,以4月29日IF1005合約9點(diǎn)30分到9點(diǎn)40分10分鐘的價(jià)格序列來(lái)看,經(jīng)過(guò)均值化后的價(jià)格序列明顯平滑了很多,不再像之前6秒價(jià)格序列那樣波動(dòng)劇烈。 2)記錄極值點(diǎn) 極值點(diǎn)是局部的高點(diǎn)或者低點(diǎn),在極值點(diǎn)處股價(jià)出現(xiàn)了轉(zhuǎn)折,所以這些點(diǎn)是圖形分析的重要點(diǎn)位,它們包含了重要的信息。判斷極值點(diǎn)的方法也比較簡(jiǎn)單:瀏覽經(jīng)過(guò)均值化的價(jià)格序列MA(10),如果股價(jià)上漲至此,接下來(lái)又下跌,那么這個(gè)點(diǎn)就是極高值點(diǎn);如果股價(jià)下跌至此,接下來(lái)又出現(xiàn)上漲,那么這個(gè)點(diǎn)就是極低值點(diǎn)。這些點(diǎn)利用另外一個(gè)數(shù)組記錄下來(lái),它們是股價(jià)變化的關(guān)鍵點(diǎn),以備進(jìn)一步制定策略。 3)過(guò)濾極值附近微小波動(dòng) 均線用于追蹤趨勢(shì)效果比較好,在形成趨勢(shì)時(shí)能緊跟趨勢(shì),雖然略有滯后,但是在于用高頻數(shù)據(jù)分析中,價(jià)格波動(dòng)較多,均線也就搖擺不定,容易頻繁發(fā)出交易信號(hào),如圖5第二個(gè)極值點(diǎn)的位置,雖然價(jià)格序列出現(xiàn)了轉(zhuǎn)折,但是并不改變大的下跌的趨勢(shì)。另外在高頻數(shù)據(jù)中,很容易出現(xiàn)很多極值點(diǎn)連續(xù)出現(xiàn)的情況,這對(duì)于分析也是很大的干擾。所以我們必須對(duì)極值附近的點(diǎn)進(jìn)行濾波。我們?yōu)V波的方法是,當(dāng)股價(jià)形成一個(gè)極點(diǎn)E后,比如在接下來(lái)股價(jià)波動(dòng)范圍在E點(diǎn)價(jià)位正負(fù)0005元以內(nèi),我們就認(rèn)為股價(jià)過(guò)濾微小波動(dòng)后的趨勢(shì)線和E點(diǎn)沒有區(qū)別,這樣我們就得到了過(guò)濾了極值點(diǎn)附近微小波動(dòng)的均線趨勢(shì)線filtered。 我們選取4月29日IF1005合約某一時(shí)段均線后序列作為示例: 4)高低點(diǎn)標(biāo)記 將極值點(diǎn)附近微小擾動(dòng)過(guò)濾掉之后,有部分極值點(diǎn)會(huì)被過(guò)濾掉,如圖中所示。這樣需要重新標(biāo)記以前的極值點(diǎn),而且這次可以直接將高低點(diǎn)的具體信息也標(biāo)記進(jìn)去。這次的標(biāo)記高低點(diǎn)需要注意價(jià)格序列很可能會(huì)出現(xiàn)連續(xù)的一條直線,所以標(biāo)記的時(shí)候需要記錄之前的趨勢(shì)才行。所謂高點(diǎn),在這里指的是當(dāng)一個(gè)上升趨勢(shì)結(jié)束,轉(zhuǎn)為下降時(shí)的位置,同理所謂低點(diǎn),指的是當(dāng)一個(gè)下降趨勢(shì)結(jié)束,轉(zhuǎn)為上升時(shí)的位置。 4、具體策略分析 1)高低點(diǎn)比較策略通常人們判斷趨勢(shì)處于上升的理由是,當(dāng)前低點(diǎn)比前一個(gè)低點(diǎn)要高,當(dāng)前高點(diǎn)也比前一個(gè)高點(diǎn)要高。判斷趨勢(shì)處于下跌的理由是,當(dāng)前低點(diǎn)比前一個(gè)低點(diǎn)要低,當(dāng)前高點(diǎn)也比前一個(gè)高點(diǎn)要低。如果僅僅以高低點(diǎn)的比較去判斷趨勢(shì)的漲跌,這樣的情況一天內(nèi)會(huì)發(fā)出上百次而導(dǎo)致交易過(guò)于頻繁。而且很多高低點(diǎn)之間的價(jià)格差距并不大,就是說(shuō),有時(shí)幾乎沒有上升,或者上升幅度很小卻被判斷為上升趨勢(shì);或者有時(shí)幾乎沒有下跌或者下跌幅度很小,結(jié)果卻被判定為下跌趨勢(shì)。我們需要一個(gè)度量上升和下跌速度的方法。所以必須引入時(shí)間這個(gè)變量。 引入時(shí)間這個(gè)因素是基于這樣的考慮:股價(jià)經(jīng)過(guò)很短時(shí)間就有明顯上漲和股價(jià)經(jīng)過(guò)較長(zhǎng)時(shí)間才上漲同樣幅度,這顯然是不一樣的,時(shí)間短的上漲說(shuō)明上升趨勢(shì)比同樣幅度上漲需要較長(zhǎng)時(shí)間的更加明顯。所以我們?cè)O(shè)置一個(gè)根據(jù)時(shí)間變動(dòng)的附加項(xiàng)drift,來(lái)對(duì)簡(jiǎn)單的高低點(diǎn)策略進(jìn)行完善。 最后的策略分三種情況: 建空倉(cāng)策略:當(dāng)前高點(diǎn)低于前一個(gè)高點(diǎn),并且低于前一個(gè)高點(diǎn)減去附加的漂移項(xiàng),這個(gè)漂移項(xiàng)等于shift*Time。其中shift作為整個(gè)策略的參數(shù),可以進(jìn)行優(yōu)化和人工設(shè)置,而Time則是兩個(gè)高點(diǎn)之間所經(jīng)過(guò)的時(shí)間,在本文中就是經(jīng)過(guò)了多少個(gè)6秒。 建多倉(cāng)策略:當(dāng)前低點(diǎn)高于前一個(gè)低點(diǎn)一定幅度,這個(gè)幅度等于shift*Time,為了測(cè)試方便,這里將建多倉(cāng)的shift參數(shù)和建空倉(cāng)的shift參數(shù)設(shè)定為相同。如果對(duì)于大勢(shì)走向比較明確,可以考慮將這個(gè)shift參數(shù)和建空倉(cāng)的參數(shù)設(shè)置為不同,但是這樣對(duì)于優(yōu)化的工作量,會(huì)成倍增加。 平倉(cāng)策略:平倉(cāng)分為多平和空平,但它們的策略都基本一致。以空平為例:如果當(dāng)前高點(diǎn)處于前一個(gè)高點(diǎn)兩條斜線之間則平倉(cāng),這兩條斜線是從前一個(gè)高點(diǎn)引出的加減drift項(xiàng)射線。多平也是同樣的思路。 2)高低點(diǎn)突破策略 行情中還容易出現(xiàn)另外一種典型的情況,以下跌為例,就是直接從一個(gè)最高點(diǎn)開始形成一個(gè)主跌段,但是并沒有出現(xiàn)連續(xù)的高點(diǎn)。如果只用高低點(diǎn)比較的策略,就無(wú)法捕捉到此次賣空機(jī)會(huì)。高低點(diǎn)突破策略具體如下: 建空倉(cāng)策略:如果濾波后均線往下突破了前一個(gè)低點(diǎn)減去漂移項(xiàng)drift_down的延伸線和濾波后均線的交叉點(diǎn),那么則認(rèn)為在突破位置出現(xiàn)了一個(gè)賣空點(diǎn)。其中drift_down=downshift*Time,Time和高低點(diǎn)比較策略里面的值一樣,dwonshift作為參數(shù)輸入,這個(gè)可以設(shè)置為和shift一樣,也可設(shè)置為不同。一般在下跌趨勢(shì)比較明顯的時(shí)候可以設(shè)為較小的值。 建多倉(cāng)策略:如果濾波后均線往上突破了前一個(gè)高點(diǎn)加上漂移項(xiàng)drift_up的延伸線和濾波后均線的交叉點(diǎn),那么則認(rèn)為在突破位置出現(xiàn)了一個(gè)買入點(diǎn)。其中drift_up=upshift*Time,Time和高低點(diǎn)比較策略里面值相同,upshift作為參數(shù)輸入,可設(shè)置為與shift和dwonshift不同的值。一般在上漲趨勢(shì)較明顯時(shí)可以設(shè)為較小的值。 平倉(cāng)策略:多平的條件是三個(gè):一是之前是多倉(cāng),二是當(dāng)前趨勢(shì)是向下,三是價(jià)格突破前一個(gè)低點(diǎn)的上面一條斜線。空平的條件也是三個(gè):一是之前是空倉(cāng),二是當(dāng)前趨勢(shì)是向上,三是價(jià)格突破前一個(gè)高點(diǎn)的下面一條斜線。另外的一種平倉(cāng)情況是,當(dāng)持有多倉(cāng)又直接遇到需要開空倉(cāng)的條件,則先平倉(cāng)再開空倉(cāng)。持有空倉(cāng)的情況類似。 3)大波段保護(hù) 如果股指期貨經(jīng)過(guò)了一個(gè)比較大的短期上漲或者下跌,那么有必要對(duì)其建立盈利保護(hù)機(jī)制,因?yàn)榇鬂q大跌后容易出現(xiàn)大幅度的回調(diào),所以需要對(duì)盈利頭寸進(jìn)行保護(hù)。這里采用的方法是利用高低點(diǎn)突破策略來(lái)保護(hù)盈利頭寸。比如當(dāng)前價(jià)格已經(jīng)比上次低點(diǎn)出現(xiàn)后已經(jīng)有05%的漲幅,并且出現(xiàn)了高點(diǎn),也就是濾波后均線出現(xiàn)了拐點(diǎn),那么就把低點(diǎn)上移到離高點(diǎn)一定幅度的位置,這樣由于低點(diǎn)的改變,當(dāng)下次進(jìn)行判斷的時(shí)候就會(huì)利用高低點(diǎn)突破策略的平倉(cāng)策略保護(hù)好盈利頭寸。 三、實(shí)證檢驗(yàn)與參數(shù)優(yōu)化結(jié)果 1、檢驗(yàn)設(shè)定與參數(shù)優(yōu)化檢驗(yàn)假設(shè)每次買賣就買一手合約,這樣可以簡(jiǎn)化沖擊成本的測(cè)算,因?yàn)殡S著交易量的上升,沖擊成本會(huì)顯著上升。股指期貨合約交易保證金為15%,再加上一部分維持保證金,所以資金成本按照合約金額的25%來(lái)設(shè)定。 參數(shù)優(yōu)化的樣本區(qū)間是4月19日到5月10日的IF1005合約的6秒價(jià)格序列,我們以夏普比率為目標(biāo)函數(shù)來(lái)優(yōu)化參數(shù),優(yōu)化的參數(shù)包括如下: 均線n濾波區(qū)間range普通漂移項(xiàng)shift上升漂移項(xiàng)upshift下降漂移項(xiàng)downshift大波段閥值wave大波段保護(hù)點(diǎn)wavecut下降漂移項(xiàng)經(jīng)過(guò)優(yōu)化比上升漂移項(xiàng)小一些,這是因?yàn)閺?月19日到5月10日之間大市以下行為主,所以通過(guò)將下降漂移項(xiàng)設(shè)置的小一些來(lái)更容易觸發(fā)賣空點(diǎn)。不過(guò)經(jīng)過(guò)測(cè)試,其實(shí)將shift、upshift和downshift置為相同值,對(duì)測(cè)試結(jié)果也影響不大。 2、交易成本與沖擊成本交易 成本中金所規(guī)定為合約金額的萬(wàn)分之05,期貨公司一般收取萬(wàn)分之一,并且是雙向收取。在本文之中采用萬(wàn)分之一,并且雙向收取,也就是開倉(cāng)、平倉(cāng)均收取合約金額的萬(wàn)分之一。 在交易策略的測(cè)試中,通常采用成交價(jià)格作為策略的買賣平倉(cāng)點(diǎn),但是在實(shí)盤交易中,由于并不一定能保證在理想價(jià)位成交,所以必須考慮沖擊成本。 沖擊成本的估計(jì)比較復(fù)雜,詳細(xì)的估算方法請(qǐng)關(guān)注隨后即將推出的報(bào)告。本文中采用比較簡(jiǎn)單但是嚴(yán)格的沖擊成本估算方法。通過(guò)對(duì)IF1005合約成交明細(xì)的分析,主要考慮買一價(jià)與成交價(jià)的差值,以及賣一價(jià)與成交價(jià)的差值,對(duì)差值取均值,發(fā)現(xiàn)一般來(lái)說(shuō)成交價(jià)與這兩個(gè)價(jià)的差距為02個(gè)指數(shù)點(diǎn),所以將沖擊成本設(shè)置為02個(gè)指數(shù)點(diǎn),即不管建多倉(cāng)、空倉(cāng)還是平倉(cāng),均將成交價(jià)格往不利方向移動(dòng)02個(gè)點(diǎn)位。舉例來(lái)說(shuō),如果我們交易策略提示我們?cè)谙乱粋€(gè)價(jià)格周期建多倉(cāng),而下一個(gè)周期(本文設(shè)置為6秒)成交價(jià)格為3000點(diǎn),則將買入一手IF1005合約的價(jià)位設(shè)置為30002點(diǎn),建空倉(cāng)和平倉(cāng)時(shí)的處理類似。由于沒有考慮根據(jù)交易量來(lái)改變沖擊成本,所以這個(gè)處理比較簡(jiǎn)單,但是有一定參考價(jià)值,具體的沖擊成本測(cè)算請(qǐng)關(guān)注隨后推出的專題報(bào)告。 |
|
|
來(lái)自: 停機(jī)保號(hào) > 《量化》