2013年8月22日 星期四

價差交易的新技術


作者:MURRAY A. RUGGIERO JR.
摘自:Futures 2007 / 8
日期:2007/9/13

翻譯:陳佩芳

價差交易獨具許多好處吸引交易人,如低保證金、顯而易見的走勢,與隱藏的獲利機會等,然而大部分的系統交易無論在測試階段或實際的執行階段,均無法清晰地處理價差交易。本文綜合應用了某些特定程式,說明新技術如何利用電腦展現其功能。

測試平台必須能正確計算價差交易的複雜關係

以裂解價差(Crack spread) 交易為例,該策略提供石油整合業者在市場走勢反向時,可以規避其原料或未來產出的價格風險。舉例來說,煉油業者避險所使用之裂解價差比率(Crack ratio)為X:Y:Z;X代表原油的桶數;Y代表汽油的加侖數;Z代表精煉油之桶數。避險者在期貨市場買X桶原油,賣Y加侖汽油以及Z桶精煉油。一般被廣泛利用的裂解比率依序為3:2:1,5:3:2,2:1:1。其中3:2:1使用最普遍,被稱為Gulf Coast 3:2:1以及Chicago 3:2:1。使用裂解比率唯一的限制是X=Y+Z。

就上述價差交易而言,每個組成商品交易的合約數均不同,因此估算最小變動點所造成合約價值變動並不容易。此外,有的價差交易並沒有按照一定的比率,而是因應市場之波動而改變,這類情形較常發生在股指或個股的價差交易。

TraderStudio、Trade Plan軟體的運用

簡單來說,測試平台必須能正確說明這些複雜的關係,並且經過歷史紀錄的測試,其結果仍然可靠。

所建立的測試方法,需要包含投資組合分析,市場間分析,並有能力掌握每個商品合約;策略的測試只針對那些目前仍然在交易的商品合約,這一點很重要,避免落入因價格調整而使資料失真。投資組合分析亦是關鍵,例如以12月玉米合約及12月小麥合約配對,以及3月玉米與小麥合約配對,形成兩組不同市場間的價差交易,利用TraderStudio軟體的功能,可以完成上述的交易。

市場間價差交易有幾個特性:需要在一個市場買進,並在另一個市場賣出;所交易的合約有相同的部位;合約間必須有相關性。但是價差組合中個別商品交易的進出場時間不需要一致。

在上述例子中,需要建立2個系統來交易玉米與小麥;雙向穀物價差比較依賴市場間分析、與投資組合水準的交易能力。如果是三向價差,如裂解價差交易,利用Trade Plan可以解決較複雜的關係,提供較好的解決方案。

價差交易的基本邏輯

※ 建立價差交易中合約之代碼

成為正式的價差交易員前,需要注意下列交易的基本邏輯。首先以C_1976U.CSV公式建立價差交易中合約之代碼:前2個為合約代號、接下來4個為交易年份,最後一個為交易月份代號(註一),最後為附加檔名。這個公式與當下日期比較可以幫助系統過濾,只交易目前市場上有效的合約月份。

※ 建立系統專用之固定到期日

玉米與小麥合約之交易月份分別在3月、5月、7月、9月、12月,穀物交易的市場年度之開始與結束月份並不相同,例如玉米的第一個新合約在12月,但小麥則在7月,這個差異是由於各類穀物之生長季節不同,也造成新穀物與舊穀物之間市場變動互異的有趣現象。

※ 建立系統專用之固定到期日

玉米與小麥合約之交易月份分別在3月、5月、7月、9月、12月,穀物交易的市場年度之開始與結束月份並不相同,例如玉米的第一個新合約在12月,但小麥則在7月,這個差異是由於各類穀物之生長季節不同,也造成新穀物與舊穀物之間市場變動互異的有趣現象。

我們使用Pinnacle Deep歷史價格資料,以及在合約月份之前一個月的22日,作為固定的到期日。也就是說,玉米與小麥最後一個交易日分別在2月、4月、6月、8月、11月的22日。表一之程式碼把上述邏輯放入功能中,刪除不能交易的月份,但指數仍然繼續計算。

※ 建立簡單的系統程式

當交易一個單獨合約,我們希望系統買、賣、結平多頭部位、結平空頭部位,並且下一步建立下單之功能。謹記,當合約沒有在市場上交易,該部位必須出場。

以下為多頭進場點的程式碼:
Sub
BuySingleContract(Signal Name,Size,Price,OrderType,OrderTime)
IfIsActiveCornContract() Then
Buy(SingleName,Size,Price,OrderType,OrderTime)
Else
ExitAllTrades
End If
End Sub

以下為價差之空單路徑:
Sub
SellSingleContract(SignalName,Size,Price,OrderType,OrderTime)
If IsActiveCornContract() Then
Sell(SingnalName,Size,Price,OrderType,OrderTime)
Else
ExitAllTrades
End If
End Sub

因此,我們利用這些功能建立一個簡單的系統:
Sub CornWheatSpread(Slen)
 Dim MKSym As String
 Dim CleanSymbol As String
Dim Spread As BarArray
Spread=Close-Close Of independent 1
 If Spread = Highest(Spread,Slen,0)Then
 BuySingleContract(thismarket.Symbol(0)&”BuySide”,1,0,Market,Day)
 End If
 If Spread=Lowest(Spread,Slen,0)
Then
 sellsinglecontract(thismarket.Symbol(0)&”SellSide”,1,0,Market,Day)
End If

以上簡單的程式,在價差達到高點時啟動系統的進場買單;價差到達低點時啟動出場賣單。搭配利用TraderStudio軟體,我們可以建立用玉米與小麥在不同市場間的價差組合。

一個合理的方法是:將2007年5月玉米與2007年5月小麥合約配對,以及2003年5月玉米與2003年5月小麥配對。表二顯示TraderStudio如何完成價差組合之配對。即使價差交易比率為1:1,小麥的波動比較高,因此不管是多頭或是空頭價差,大部分的獲利來自於小麥這一邊。以2001年7月7日至2007年4月9日測試期間為例,系統交易的績效並不理想,平均每筆交易獲利35美元。但這不重要,因為我們的目標是說明如何建立測試價差交易之程式碼,而不是建立有效的價差系統。

建立系統並不容易

在我們的系統中不會看交易的商品代碼,而是運用鏡子影像的邏輯:當玉米/小麥價差達到高點,則表示小麥/玉米價差達到低點。如果系統設計的邏輯不是鏡子影像,(如價差的相對強弱指標RSI,在20代表買進訊號,90為賣出訊號),那麼將不會有配對交易,持有的價差部位有時亦會曝露在風險中。

在TraderStudio中,thismarket.symbol(序號)可以擷取交易的合約代號,使我們能以更複雜的價差邏輯來寫程式,例如,完成能源裂解價差交易的分析。能源裂解價差中,原油常被用來與無鉛汽油及精煉油一起交易,運用價差分析,我們可以決定每種商品的交易合約數量。

若是Trade Plan則需要建立3個不同的系統,運用Trade Plan結合此3個系統分析並執行裂解價差交易。這是系統交易完成此類價差交易最簡單的方法。

圖一中的上圖:最上面的是玉米走勢圖、中間則是小麥走勢、最下面是玉米/小麥價差曲線圖;很明顯地,價差曲線比實際市場波動和緩平順;下圖是另一段期間玉米與小麥的交易並不活絡,玉米走勢上下變動,而價差曲線則先是大幅上揚,接著大幅縮小。

當個別商品合約具有10年以上的交易紀錄,利用新的科技可以測試市場。這個方法對價差交易之研究而言是一個全新的領域,而在這個新世代中,對利用傳統系統受到挫折的交易員來說,價差交易的測試方法是一大福音。

【註一】月分代號:一月F, 二月G, 三月H, 四月J, 五月K, 六月M, 七月N,八月Q, 九月U, 十月V, 十一月X, 十二月Z。

(欲索取文中所提之表一、表二、與圖一,請email至fangpchen@futures.org.tw)



http://www.futures.org.tw/ViewInfo.asp?id=257

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...