Showing posts with label 程式交易. Show all posts
Showing posts with label 程式交易. Show all posts

Friday, September 25, 2009

演算法已成風潮 | 即時新聞 | 股市投資 | 聯合新聞網

演算法已成風潮 | 即時新聞 | 股市投資 | 聯合新聞網: "

金融市場交易已經轉為速度競賽,元大期貨昨(22)日為了法人及自然人客戶介紹風靡歐美的演算法交易(Algorithmic trading),俄羅斯的TS Support執行長丹尼斯葛洛帕(Dennis Globa)表示,演算法交易證券比例在過去3年由30%的佔比成長到70%。

元大期貨副董事長盧立正指出,2008年期貨市場的電子交易比重約58%,但今年上半年期貨市場法人市佔率僅有7%,扣除外資國內法人市佔率更不到1.5%,代表國內法人在運用期貨或選擇權市場避險、套利、價差或增加投資收益的空間仍大。

【2009/09/23 經濟日報】

"

Monday, September 14, 2009

一定要堅守交易系統的訊號嗎 -- Equality Curve 模擬(續2)

一定要堅守交易系統的訊號嗎 -- Equality Curve 模擬(續2): "

用程式交易,當有虧損的時候,總是最難熬的時候,到底是一時的drawdown,還是策略已經死掉了,是要繼續堅持訊號,還是停止出場。在之前的文章討論中(http://tw.myblog.yahoo.com/futurex168/article?mid=14) (http://tw.myblog.yahoo.com/futurex168/article?mid=26) ,採類似 Bollinger Band 方式保護,算是一種系統性的檢測方式,而且具有的動態的調整,但方法略為複雜,我是覺得實用性不是很高。



其實回到我們的最基本的問題應該是 - 當策略變差時,在什麼情況下,應該停止採用此系統?



Lars Kestner 提出一個簡單的方法,就是計算 Equality Curve (淨值曲線)的迴歸直線,然後以迴歸直線直線為基準,建立 1 或 2 的標準誤差的帶狀區間,如果Equality Curve向下突破帶狀區間,就停止採用策略,再決定究竟應該是放棄該策略,還是作必要的調整。



根據這樣的檢測依據,我們可以只要每一季將Equality Curve的迴歸直線帶狀區間畫出來 (兩條虛線間),然後觀察之後的績效是否落在這個帶狀區間內,如下圖。 我個人覺得這不失一個簡單、明確的檢測策略執行績效的方式。





"

由期交所交易資料分析國內程式自動交易現況 - 小肥牛 - Yahoo!奇摩部落格

由期交所交易資料分析國內程式自動交易現況 - 小肥牛 - Yahoo!奇摩部落格: "

程式交易系統是近十幾年來歐美專業投資機構新興的交易方法,近年來更是引進台灣,成為應付大量且複雜的期貨交易中,一個非常重要的甚至是頼以生存的武器。

程式交易系統的精神在「順勢而為」,由大盤發出價格資訊給程式,若是經過程式分析確認趨勢啟動,就會發訊號給我們進行下單,換句話說,交易系統只是趨勢的追隨者,並不是趨勢預言家。而交易系統能成功,除了系統本身的執行力,最重要的就是它能忠誠地追隨市場的腳步。

愈來愈多人使用程式交易系統進行期貨交易是必然的趨勢,要了解程式交易系統的現況與它對目前交易環境造成的影響,交易資料永遠是最真實、最直接資料來源,本文章中,從分析期交所的2008年的交易資料,可以很清楚看到程式交易系統在目前台灣交易市場佔有舉足輕重的重要性,且了解目前使用程式交易系統的現況與可能的偏離現象。

"

Sunday, September 06, 2009

國外TS高手是怎麼看performance report的?

國外TS高手是怎麼看performance report的?: "



在TradeStation Forum裡面有好幾個高手,我在他們的文章裡面學了很多,貼一個文章給大家參考一下,下面的文章是有一個叫做OpusTrader 的高手寫的。



Reading & Understanding TradeStation Preformance Report

In order to understand a strategy, you must review many numbers from a performance report. Other numbers not covered are useful but this is a good starter course.

I will base this on a scalping strategy here is the attached Performance Report.

Attachment:DATA/20090106002201TF scalper.xls 22016 bytes


This scalper strategy trades the eMini Futures, this specific report is on 5 min chart for TF (Russell)

Here is how I read the preformance report

First, I look at how many times does the strategy trades on one chart in one day. The reason the more often a strategy trades the more profit it can generate.

Attached example traded 397 trades in the last 3 1/2 months, averaging 5.3 trades per day.

Second, I look at the Avg Trade Amount. It needs to be large enough that slow order fills and/or larger than normal slippage does not kill the profitable of the strategy.

Attached example Avg Trade Profit is $162.32 (with correct commissions and slippage being subtracted from the performance report)
55% of the time this strategy trades 1 contract
35% of the time this strategy trades 3 contracts
10% of the time this strategy trades 5 contracts

Third, I like to see a Profit Factor & Ratio Avg Win-Avg Loss both above 1.5 with the percentage wins above 45%

This strategy had a Profit Factor of 1.83
This strategy had a Ratio Avg Win-Avg Loss of 2.28 (2.28 means breakeven is around 28% Winning Trades)
Percentage Winning Trades was 44.58%

Fourth, I look at the trade list specifically the run-up and drawdowns column to see how many trades made money and how much money before trade was exited at what amount in relation to the run-up and drawdown. I want to know if managing the trades will generate more profits. The example used shows good percentage of trades made a lot higher profits than automated exit point.


Fifth, I also look at the three DD number and I like to see the largest number at 15% or less of the profit and the Max DD at 5% or less.

Total Profit - $64,440
Peak to Valley DD - $8,960 is 13% of Total Profit
Close to Close DD - $7,120 is 11% of Total Profit
Max DD - $3,420 - 5% of Total Profit

Sixth, Looking at the Largest Losing Trade on the report I like 5% or less

Largest Losing Trade that occurred - $2,580 is 4% of Total Profit

Seventh, I review the Length of time in trade. Does the time in trades comply with the Golden Rule "cut your losses quickly and let your profits run"

Avg bars per Trade 5.17 bars
Avg bars per winning trade 7.24
Avg bars per losing trade 3.51 bars

It does comply with the Golden Rule, see how it cuts losses quickly an avg of 3.5 bars and lets profits run an avg of 7.2 bars.

What does this all mean ? It passes the back testing process.

After passing back testing next step is forward testing that strategy live on your simulated account. You want to see if the strategy preformance Live like it preforms in historical testing.



這個交易系統的Performance Report檔案放在這裡:



http://rapidshare.com/files/180936716/20090106002201TF_scalper.xls





"

參數高原與參數孤島 - 有圖說明

參數高原與參數孤島 - 有圖說明: "


之前有報告過參數孤島與參數高原的觀念。今天用一些圖來作多一點說明。



所謂參數高原以及參數孤島,指的是我們將我們交易系統裡的兩組參數,加上評估績效的指標(通常是Net Profit),用3D的方式來呈現。讓我們可以觀察最佳績效的參數附近,他們的獲利程度會不會有很大的差異。



如果獲利最好的那一組參數附近,也都是表現不錯的話。那看起來就會像是一個高原一樣。這是我們所希望看到的。看起來的圖會是像下面這樣。


下面這張圖是Pardo的書裡面的範例:



下面這張圖是我實際操作e-mini SP&500交易系統的3D圖:





如果獲利最好的那一組參數附近,表現都不好的話,那看起來就會像是孤島一樣。這是我們所不想要看到的。看起來的圖會是像下面這樣。


下面這張圖是Pardo的書裡面的範例:





下面這張圖是網路上抓下來的:




"

跟一個高手朋友的討論

跟一個高手朋友的討論: "


最近跟網路上一個朋友討論的蠻高興的,他也是靠賭博為生的,轉貼出來給大家參考。希望能給大家一些idea。


cc to Howard, 因為你寫的實在是太好了,我轉貼一下不要介意喔。



----------------------------------------------------------------------------------------------------------



hi~~


首先要謝謝你美盤的歷史數據,真心覺得您是個很願意與人分享的好人!!


接續上文的討論,個人有一些小小的看法,


1.30%的MD,真的很大,似乎Over-trade. 理查丹尼斯設定的MD應該沒有50%,卻二度搞的基金破產且未來賺的錢還要撥出一部分還投資人!! 總覺得設定30%,不久後就很可能遇到60%MD,然後爆掉!!海龜於1987不就遇到了嗎? LTCM也不到5年就遇到! 黑天鵝越來越常被看到了!!不是唱衰,只是當天才也殞落時,我們凡人更要引以為戒!!


2.美盤真的隨機性超高,我相信大家用的方法差不了太多,但是看了你的績效,年報酬30~50%卻要背負30%MD. 我做台灣香港,隨機性遠遠低於美盤,我去年的績效為200%,總資產為原先3倍,MD從未超過10%,我是day trader,交易次數應該多到存屬運氣的機率有點低了!! 當然這不是說我技術多好,相反的,最簡單的順勢策略搭配資金管理就能辦到,我想主要原因是台灣淺碟型市場,隨便一個大戶進場,趨勢就很明顯,trend follow就很有用.


3.我是賭博維生,也建議了一個很好賭的賭場. 我覺得賭徒的生活,雖然輕鬆不用擔心經濟問題,可是很無聊,生活中的樂趣就是看著球在輪盤上滾阿滾的,開紅還是開綠呢??!!當然拉,也是因為生活無聊,所以也上來廢話了一堆,請不要介意!!



------------------------------------------------------------------------------------------------------------


Dear Howard,



沒想到你也是個高手,真是高興碰到高手可以一起互動。對你的建議,我的想法如下:


1.30%MD的確是有點高,我應該考慮減少到20%-25%。謝謝你的建議。


2.你的績效真的是相當的好,真的是讓我驚訝。我想應該是我可以從你身上學到比較多東西。尤其是10%的MD, 用的應該是相當穩健的資金管理方式,還有那麼好的績效,真是讓人驚訝(而且竟然還是 day trade)。我想我應該開始考慮來研究台灣的市場了。


3.我也是擔心單純每天賭博的生活會很無聊,所以現在還沒有辭去工作。因為有同事離開公司以後(他家超有錢的,不需要上班賺生活費),隔兩年又回來上班,原因是每天在家很無聊。不過最近公司狀況不好,可能明年就沒頭路了。搞不好明年就要專心來每天賭博了。


4. 很高興可以跟你交流,有空常來這裡逛逛吧,這裡很歡迎你的。


-----------------------------------------------------------------------------------------------------------



HI~~


您抬舉我了,我不是高手,這樣說太沉重了,真正的高手太多了,輪不到我!!


更何況,其實我完全不會用trade station,我只是用excel作一些簡單的計算,我想可能是天份的問題,我天生對寫程式就很反感. 我唯一會用的語言是mathmatica,用這我會寫多層膜光學模擬(nkd回歸),我會寫LCD廣視角亮度模擬,可是我就是不會trade station,電腦語言總是讓我困惑!!


但是不會用trade station搞不好是我能夠穩定於市場賺錢的原因之一,一開始接觸期貨交易的人用了trade station,難免就有一個框架框住思想範圍,反倒是容易忽略很多最基本的東西.例如順勢操作為什麼可以賺到錢,基本的模型是什麼?似乎學trade station的人傾向埋首於程式語言怎麼寫,驗證賺不賺錢,極少看到人是將這個基本模型以一個數學方程式寫出來,當然啦,我可能也是由於另一個框架框住我的思考模式,我被之前的訓練訓練成確定模型,建立方程式,最後才驗證模型. 可能這個思考方向在期貨交易算是少數,於是讓我僥倖賺了一些錢!!


最後分享一下我建立的模型,基本上是延伸自曼博德的厚尾equation,趨勢性評估(曼博德有提出)可自行調整以建立一個值評估,這個模型最棒的地方是厚尾現象百年不變(曼博德以一百年的棉花資料證實了這點),所有期貨皆有厚尾(我用過去15年的資料證實了金屬,能源,農作物,股價指數期貨都有這現象),所以不用太擔心模型失效.至於應用的細節其實不難,有興趣的人稍加分析應該自然會知道!!



------------------------------------------------------------------------------------------------------------





Dear Howard,



果然是好厲害的朋友,看來我們應該會很有的聊了。我猜你應該是工科出身的,我本身也是工科出身的,大學學的就是電子計算機系,研究所念的也是資訊管理所,所以那時候學會了寫一點程式。所以現在才用這個來賭博。



我完全同意你的觀念,我們交易所用的工具僅僅只是工具而已,不管是我用tradestation or 你用excel, 重點應該是交易觀念&模型的建立,然後再用工具去驗證而已。 我現在也是看到太多人在鑽寫程式的牛角尖,反而把工具當成是主要研究的對象。時間花在不對的地方上,有點可惜了。



最後你提到曼博德的厚尾equation, 我是完全沒有聽過(呵呵)。所以對你的知識又更加的景仰了。等我花一些時間研究研究,再來跟你請教討論。謝謝!





----------------------------------------------------------------------------------------------------------------------



"

如何建立一個獲利的交易系統

如何建立一個獲利的交易系統: "



之前有貼過一篇文章,是講說如何開發出一套可以獲利的交易系統。但是原文是英文的,所以熱心的網友 王小喵 就幫忙翻譯成中文。在這裡要感謝王小喵的幫忙,他之前也有翻譯過小弟跟Steven一篇有關walk forward的討論文章。 朋友有空可以去他的blog捧個場。謝謝。



http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=1666&sc=1#1741



http://nickcatwang.blogspot.com/





如何建立一個獲利的交易系統




在這篇文章裡,我們會教大家以五個步驟建立獲利系統:



1.選擇市場與時間框架



2.制訂進場規則



3.制訂出場規則



4.評估系統



5.改善系統






好了,我們來把這些步驟說個仔細吧。




1.選擇市場與時間框架:



每個市場及時間框架都能夠用系統交易。但當你面前有是50個不同的期貨市場與6個主要時間框架時(例如:5K、10K、15K、30K、60K、日K),等於是有300個選擇等待你來評估。這裡有一些好方法,可以篩選你的選擇:




.雖然每個期貨市場都可以交易,但我建議你專注在電子化市場上(例如e-mini S&P、國庫券、貨幣等)。通常這些市場流動性都很好,買賣不會有太大的問題。低手續費是另一個電子化市場的優點:大概比非電子化市場便宜至少一半。有時候,甚至可以便宜到75%。




.選擇小一點的時間框架(小於60K),每次交易平均獲利,通常會比較低,但交易可能性會比較多。以較大的時間框架交易,每次的交易利潤會比較高,但交易可能性會比較低。哪一種時間框架比較適合自己,就靠自己決定了。




.小一點的時間框架,表示利潤會少一點,但風險性也會小一點。當你有個沒甚麼錢的戶頭,最好選擇小一點的時間框架,以確保你不會過度交易。大多數獲利系統,用較大的時間框架,如日K或週K,但交易次數會少許多,最大折返也會大許多。





2.制訂進場規則




讓我們掀開神秘的進場規則。基本上有兩種進場類別:




.trend-following趨勢系統:起漲,就跟著買,跌了,跟著賣。




.Swing-trading擺盪系統:當價格漲超高(例如在價格通道上緣時),就賣,並試著抓住價格回到「正常範圍」的時機。同樣的規則適用於跌超高時。





我認為,擺盪系統是最適合程式交易初學者的第一步。相對而言,如果交易者能抓住數週或數月的主波段,趨勢系統提供了極佳的獲利潛能,但只有很少數的交易者,有足夠的紀律能這麼長時間的守住部位而不放棄。




在交易軟體裡面找到的大部分指標屬於這趨勢與擺盪這兩種類別:同時會有數種指標來判斷趨勢(如MA移動平均線),或是有定義超買或超賣的指標,供你設立一個擺盪系統。





所以,要進入交易的世界,不要被各式各樣的資訊困擾了。只要確認你瞭解為什麼要用這個指標,還有這個指標量測了甚麼。在下一章節,便有一個簡單的擺盪策略的例子。





3.制訂出場規則




這裡也還是簡單的說明:有兩種不同的出場規則可以應用:




.停損出場->保護資金



.奪取點數->變現資金





這兩個出場規則,都可以用4種方法來表現:




.固定金額(如1000元)



.價格百分比(如1%的進場價)



.波動百分比(如50%的每日平均波動值)



.時間出場(如3天後出場)





我不建議固定金額,因為市場的相異性太大。例如,天然瓦斯,每天的每筆平均交易以數千元計,歐元則是數百元。建立系統時需要一致化這些差異,才能再不同市場回測。這是為什麼應該使用百分比停損或停利(如1%停損),或用波動直停損等方式,取代固定金額出場。




時間出場,可以在市場沒有趨勢時,幫助你出場,活化你的資金,進入別的交易。





4.評估系統




第一個要看的數字是net profit淨利。你當然想要你的系統賺錢。但不要在設計系統時,因回測的虧損而喪氣,可以試著反轉進場訊號。在我們的網站www.rockwelltrade.com,你已經學會交易是零合遊戲:如果你買多虧損,那就試試看賣空。這個簡單的方式,常常可以翻轉一個虧損策略變成賺錢的。




第二個要看的數字是average profit per trade每次交易平均獲利。確認這個數字大於滑價與佣金,這樣交易才值得進行。交易充滿了風險與回報,你需要確認每次付出的風險,得到足夠的回報。





還要看一下Profit Factor獲利因子(=Gross Profit/Gross Loss 總收入/總虧損)。獲利因子告訴你,相對於你可能賺的錢,你的虧損是多少。一個系統的獲利因子應該在1.5以上,但如果大於3.0時,要注意你有可能過度最佳化系統了。



.Winning percentage獲勝比率



許多有不錯淨利的趨勢系統,只有一個相當小的獲勝比率,有時候比30%還低。這些系統相信:「虧損要砍,利潤要無限放大」但,你要考慮一下,能不能承受10次交易裡,輸了7次,只贏3次。如果你希望大多數時候都能贏,那應該選一個高獲勝比的策略。




.Number of Trades per Month每月交易次數



你想要每天交易?如果你希望每天都交易,那你應該選一個每月交易次數比較高的策略。許多賺錢系統,一個月只有2~3次交易,如果你的耐心不夠,那你應該選擇一個交易頻率比較高的策略。




.Average Time in Trade平均交易部位時間週期



有些人在有部位的時候很緊張。我聽過有人留倉的時候,晚上甚至會睡不著。如果你是這樣的,你應該確認平均交易部位時間週期,越短越好。你可能要選一個不留倉的策略。





.Maximum Drawdown最大虧損/最大折返(即為HTS的最大評價損失幅)



一個有名的交易員曾說:「如果你希望你的系統倍增或3倍增加你的錢,你應該預期到在賺大錢的路上,會有高達30%的虧損。」不是每個交易者,都能夠承受30%的虧損。看看系統至今產生的的最大虧損數值,然後加倍這個數值。如果你可以承受這個雙倍的虧損,那你就找到了一個適合的系統。為什麼要加倍?記住:最遭的虧損,永遠比你預期的大。





.Most consecutive losses最大連續虧損次數



連續虧損次數,是對交易的重大衝擊,特別是以特別的資金管理策略操作時。在你用高槓桿的資金策略時,5或6次的連續虧損,會給你帶來大麻煩。




另外,這個數值,可以幫你決定你有沒有足夠的紀律來使用這個系統:連續虧損10次,你還會繼續使用這個系統嗎?一個獲利系統,連續虧個10~12次是很常見的。





5.改善系統




「改善」和「最佳化」是有差別的。可以測試不同出場規則,來改善系統:如果你用固定金額出場,試著用traling stop移動出場。加一個時間出場,看看結果如何。不要只看淨利,也要看看獲利因子、每次交易平均獲利、及最大虧損。有時候,當增加一個不同出場方式時,淨利稍稍下降了點,可是其他的數值卻大幅改善了。




不要落入最佳化的陷阱:你可以排除用足夠的規則來排除全部的虧損。例如:你發現星期二的虧損高於其他日子,你可能會想要加一個濾網來阻擋星期二的交易。然後你發現,一月的成績比其他月份差,你又加了一個濾網,讓系統只在2~12月交易。當濾網越加越多來避免虧損時,最後會變成我最近看到的一個策略:




IF FVE > -1 And Regression Slope (Close , 35) / Close.35 * 100 > -.35 And Regression Slope (Close , 35) / Close.35 * 100 < .4 And Regression Slope (Close , 70) / Close.70 * 100 > -.4 And Regression Slope (Close , 70) / Close.70 * 100 < .4 And Regression Slope (Close , 170) / Close.170 * 100 > -.2 And MACD Diff (Close , 12 , 26 , 9) > -.003 And Not Tuesday And Not DayOfMonth = 12 and not Month = August and Time > 9:30 .......




雖然你刪除了所有虧損(過去的虧損),回測數字即為夢幻,但實際交易時,數字就沒沒有這麼好看了。





總結:




發展一個策略很不容易,但並不如策略商說的這麼複雜。這篇eBook就是要提供一個發展策略的步驟概論。在建立並評估系統時,記得應用「10 Power Principles of Successful Trading Systems」:http://www.rockwelltrading.com/trading_system_step_2.htm



"

交易系統應該回測多久?

交易系統應該回測多久?: "


感謝王小貓網友的熱心翻譯,下面是原文出處和翻譯後的文章。



http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=1665&sc=1#1743



交易系統應該回測多久?




我常被問到這個問題:交易系統應該回測多久。雖然沒有一個標準答案,但我可以提供一些想法。在決定回測時間之前,有一些因素是你該注意的。





1.交易頻率



每天交易系統會交易幾次?回測多久並不重要,重要的是,能夠產生一個「統計上有效的」數值。如果你的系統一天交易三次,一年交易六百次,那回測一年就可以建立一個可靠的回測數值了。如果你的系統一個月只交易三次,一年交易36次,那你應該多回測幾年來建立可靠的數據。




什麼是:「統計上有效的」
最近我收到一篇統計學的碩士論文。他在下圖中列出了關於樣本數與其錯誤的可能性。越大的樣本數,錯誤的可能性越低,通常200次的交易數量已經足夠,如果你的系統能夠產生足夠的交易,那最好是測試500~600次交易為佳。




2.太低的成交量



除了頻率,也必須考慮交易量是否太低,下圖是e-mini S&P每日的交易量平均值








回測e-mini S&P 1999年以前的數值沒有意義,因為根本沒甚麼交易!就我來說,2002年以前也沒有回測價值,那時候的市場和現在完全不同,因為:太低的流動性與市場參與者截然不同。我覺得2002~2004的e-mini S&P回測數值才是可靠的。



"

一定要堅守交易系統的訊號嗎?

一定要堅守交易系統的訊號嗎?: "



對於執行系統交易的朋友而言,剛開始一定會面臨到一個鍛鍊。就是我們能不能夠堅守交易系統訊號的鍛鍊。當系統發出買賣訊號的時候,我們能不能夠忠實的遵守系統的訊號進行買賣的動作?我相信一定有很多朋友會說,做系統交易,就是一定要遵守交易系統的訊號。就算連輸十次也要繼續堅持下去,因為可能第十一次交易就會把之前輸的那十次贏回來。怎麼可以有不跟單的情形。所謂輸少贏多就是這樣的道理。




對於這樣的論點是否正確(堅守系統的訊號),我會說Yes and NoYes的原因是因為交易系統本來就是要摒除人性的弱點(貪婪和恐懼)。所以當然要遵守系統的訊號才對。而我說No的原因,則是當下面這情形發生的時候,我們還需要遵守交易系統的訊號嗎?





1.交易系統的生命週期已經結束(壽命終結,死掉了)


2.我們所交易的市場,特性已經改變了(eg.從趨勢市場變成了擺盪市場. )


3.我們的交易系統根本就是over-fitting出來的產物,經不起實際市場的考驗





如果當上面這些情形發生了,而我們還在堅守交易系統的訊號,(就像滿清末年的義和團一樣,強迫催眠自己是刀槍不入),那麼結果就是我們會眼睜睜的看著我們的資金逐步縮水。更糟糕的是,我們還必須說服自己:我一定要遵守訊號, 我一定要遵守訊號,我一定要遵守訊號 然後看著自己的資金跳下懸崖。





那這時候我們應該怎麼辦呢?我們做系統交易不就是為了要進退有據嗎?進場,出場都有交易系統的訊號可以遵守。那要不要遵守交易系統的訊號的這件事情,是不是也可以有個規則來決定。





所以今天要報告的題目就是,什麼時候該暫停使用一個交易系統,國外這種方法叫做Trade Equity Curve





一般我們都是根據價格做交易,但是Trade Equity Curve的觀念則是把資金曲線當作一條曲線來做交易。因為剛剛我們問的三個問題:




1.交易系統的生命週期已經結束(壽命終結,死掉了)


2.我們所交易的市場,特性已經改變了(eg.從趨勢市場變成了擺盪市場. )


3.我們的交易系統根本就是over-fitting出來的產物,經不起實際市場的考驗





如果這些問題的答案是Yes的話,那都會有一個共同的表現方式。就是我們的資金曲線會開始往右下角下降。講的白話一點,就是我們開始賠錢了。Trade Equity Curve的觀念就是我們取最近30個資金曲線上面的點,然後畫出一條移動平均線(不是股價的移動平均線喔)。以後只要我們系統的表現是在這條移動平均線之上,則我們就繼續接受交易系統的訊號進行交易,這代表著系統的表現是正常的。但是當系統績效開始變差,而往下掉落到移動平均線之下的話,則我們就暫停採用系統的訊號(也就是忽略系統的訊號,不進行實際交易)。等到資金曲線往上回升到這條移動平均線之上,我們才又重新採用訊號進行實際交易。





這裡所提的取30個資金曲線點的移動平均線,只是一個說明而已。實際所應該使用的參數,則要看我們交易系統的特性而定。舉例來說,如果我們是使用順勢系統,而這個順勢系統平均而言,會有著小輸十次,然後大贏一次的特性(平均來說)。那這時候我們就不應該取5個資金曲線點的移動平均線,因為很可能前面的小輸十次,就會讓我們的資金曲線掉落到移動平均線之下,然後我們就會把接下來真正會大贏的那次訊號給忽略掉。所以這個移動平均線,應該不要取的那麼敏感。





Trade Equity Curve 的優點是可以在系統壽命終止的時候,讓我們的資金不會隨著一起消失。但是也有其缺點,因為我們只採用移動平均線之上的訊號交易,移動平均線之下的訊號會被忽略,所以約略會有一半的訊號會被我們忽略不用。對於有些人來說,這樣的交易次數可能就少得不符合他的風格了。





所以在這裡提出個人的一個建議,就是我們可以取資金曲線的Bollinger BandBollinger Band的移動平均線是採用30 trade 的平均值,但是我們加上upper band & lower band的觀念,upper band & lower band各是equity curve的移動平均值加減一個標準差。而我們暫停接受交易系統訊號的時間點,則是當資金曲線往下掉落到equity curvelower band以下的時候才停止接受訊號。這樣就可以避免捨棄掉太多的訊號,而當系統真正壽命終結的時候,我們也知道什麼時候要停止使用這個系統。





"

如何看進場系統是不是具有獲利能力

如何看進場系統是不是具有獲利能力: "





之前有報告過如何看進場點是不是具有Strategy Potential,和如何找出可獲利的出場系統的觀念。




http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=608&prev=693&next=560&page=1&sc=1#yartcmt




http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=1566&prev=1584&next=1513&l=f&fid=7




其中進場點Strategy Potential的觀念就是指一個交易系統具有良好的進場系統,價格的走勢通常會在進場之後,就往我們喜歡的方向發展,也就是我們一進場之後就開始獲利的意思。在那篇文章當中,我們用了一個3rd party的軟體來看進場點是不是具有potential,今天要報告的是用不需花錢就可以做到同樣功能的方法,也就是Time Exit(Fix Bar Exit)出場方法。




還記得我們在尋找出場系統的時候,會想要設計一個中立的(Neutral)”進場系統,所以我們設計了隨機進場系統,好方便來測試出場點是不是能夠獲利的。




我們也可以反過來做,如果我們想要尋找能夠獲利的進場系統的話,就應該把出場設計為中立的(Neutral)”’才對。所以如果測試出來的結果是會獲利的,因為出場是不具有獲利能力的,所以我們就可以歸納是因為良好的進場系統讓我們獲利的。而這裡所謂中立的出場點有幾種方法,收盤出場是其中一種,接下來要報告的Time Exit也是其中一種。




Time Exit的觀念其實很簡單,就是在我們進場之後,固定幾根K線之後就出場。完全不管進場之後價格如何發展,沒有濾網,沒有追蹤停損,也沒有獲利了結的觀念,所以算是相當Neutral的出場方法。TS也已經把這個出場系統內建在標準策略裡面了,所以我們直接套用就可以了。




接下來我想用一個例子作簡單的說明。比如說我們想要測試兩條移動平均線進場系統是不是具有獲利能力,那我們就可以固定住用10K線和100K線這兩條移動平均線的進場系統,加上Time Exit(Bars)的這個出場系統。然後我們只對Time Exit(Bars)幾根K線出場這個參數跑最佳化。當跑完最佳化以後,我們可以來看Strategy Optimization Report










接著我們讓Optimization Report依照test順序排好,然後滑鼠點選All:Net Profit這個欄位,接著按Line Graph這個按鈕。









這時候就會出現一個曲線圖,這個曲線圖的X軸代表著是進場之後固定幾根K線出場。Y軸代表的是這個策略的獲利能力。由下面的圖我們可以看得出來,我們固定在10K線和60K線交叉之後進場的話,平均來說,剛進場之後會是賠錢的。但是在經過11K線的時間發展之後,我們開始進入獲利的狀態,而且約略在第60K線附近,我們的獲利能力達到高峰。









這時候我們就會知道,兩根移動平均線的進場系統是具有Strategy Potential的。平均來說,雖然剛進場之後是會賠錢的,但是經過11 K線時間的發展,價格就會發展到讓我們獲利的程度。所以我們接下來就可以測試不同的出場系統,例如不同的追蹤停損方法,看哪一種方法可以讓我們保留最多的利潤。




另外一種情形,如果我們跑出來的曲線是像下面這樣的話,那就代表這個進場系統很爛,一進場之後就讓我們賠錢(因為都在水平面之下),不管經過幾根K線之後,都還沒有辦法讓我們進入獲利的狀態。像這種情形,不管用什麼樣的出場系統(追蹤停損,獲利了結),也沒辦法改善這個進場系統。這時候我們就知道應該花時間開發其他的進場系統了。











Strategy Optimization Report裡面的這個 Line Graph的功能其實很好用,如果我們的系統只有一個參數的話,可以直接用來看參數高原的圖形。像下面的圖形就是用Price Channel Breakout系統(只有一個參數)用在台指期5分鐘線的狀況。可以看得出來中間那一群的參數,績效表現的分佈還算平均。代表這樣的系統在未來的實際交易時,不會因為市場狀況的稍微改變而讓績效有很大的差異。








"

判斷趨勢盤or擺盪盤的指標

判斷趨勢盤or擺盪盤的指標: "



我們所開發出來的交易系統,大體上可以分為兩個類別,分別是順勢系統以及擺盪系統。順勢系統在趨勢盤的時候表現會很優異,而擺盪系統會於市場在盤整的時候有不錯的表現。所以應該會有些朋友會想,能不能夠有一套交易系統是可以適用於趨勢盤和盤整盤。




後續會來報告一個會換檔的交易系統,也就是這個系統會因應目前市場狀況的改變,而調整自己採用順勢模式或是擺盪模式。不過在報告這個系統之前,需要先報告用來判別現在市場狀況是趨勢盤or擺盪盤的指標。




其實用來判別盤勢的指標,Van Tharp”Trade Your Way to Financial Freedom”這本書裡面早就有提到過了,用的就是LeBeau & Lucas1992年提出的ADX這個指標。基本上,ADX的數值會介於0-100之間,ADX數值越大,代表現在市場走勢的方向程度越高,也就是趨勢越明顯。如果ADX的數值大於15,代表目前市場的趨勢明確。ADX這個指標,TS都已經有內建了,所以也不用浪費時間去查書自己寫程式碼。




今天報告另一個簡單的指標,則是George & John在書中所提出的一個指標,叫做 ChoppyMarketIndex。這個指標也是用來判斷目前盤勢的方法之一。計算方式如下:



ChoppyMarketIndex = (Abs(Close-Close[29]) / (Highest(High,30)-Lowest(Low,30)) * 100)



分母是最近30天最高價 最近30天的最低價。分子則是今天的收盤價-29天前的收盤價,然後再取絕對值。ChoppyMarketIndex的數值也是會介於0-100之間,數值越大,代表市場趨勢越明顯。數值越小,則代表目前市場可能陷入擺盪狀況。




ChoppyMarketIndex這個Function的程式碼如下:



{Choppy Market Index Function


This function returns a value from 0 to 100.


A lower value denotes higher market indecisiveness (choppiness),


whereas a higher value denotes a trending market.


The only input is the number of bars that we look back.}



Inputs: periodLength(Numeric);



Vars: num(0),denom(1);



if(periodLength<>0) then


begin


denom = Highest(High,periodLength) - Lowest(Low,periodLength);


num = Close[periodLength-1]- Close;


num = AbsValue(num);


ChoppyMarketIndex = 0.0;


if(denom<>0) then ChoppyMarketIndex = num/denom*100;


end;




所以不管用的是ADX,或是ChoppyMarketIndex,我們只要有了這種可以判斷目前盤勢的指標之後,就可以用來接著開發後續要報告的會換檔的交易系統了。謝謝。




"

Saturday, September 05, 2009

參數最佳化是否能提昇你未來獲利的績效 - 小肥牛 - Yahoo!奇摩部落格

參數最佳化是否能提昇你未來獲利的績效 - 小肥牛 - Yahoo!奇摩部落格: "在程式交易中,最佳化參數是乎是必要的惡,一個程式策略的產生,必定會用歷史資料去檢測這個策略的可行性,在檢測的過程中,很難不會作參數最佳化,希望能由過去的歷史資料,歸納出市場的趨勢特性與參數,而能在未來的市場中獲利。"

停損、價格突破與厚尾 -- 談程式交易為什麼能獲利 - 小肥牛 - Yahoo!奇摩部落格

停損、價格突破與厚尾 -- 談程式交易為什麼能獲利 - 小肥牛 - Yahoo!奇摩部落格:
解釋程式交易為什麼會賺錢,易言之 大賺小陪,長期就會賺
"今天來談談為什麼我會認為程式交易為什麼能獲利,還有停損、價格突破與厚尾之間的關聯。其中有些是我自已的想法,有些是從網路上看到的一些想法,有些地方可能不會很嚴謹,但大家可以參考看看。"

參數最佳化是否能提昇你未來獲利的績效

參數最佳化是否能提昇你未來獲利的績效: "


網路上一位小肥牛朋友,利用了Lars Kestner在Quantiative Trading Strategies這本書裡面的方法,來探討了參數最佳化的程序。我覺得寫得真好。所以轉貼給大家參考一下。原文出處是:http://tw.myblog.yahoo.com/futurex168/article?mid=37&prev=-1&next=26




另外,小肥牛網友也對小弟之前的一篇文章'一定要堅守交易系統的訊號嗎?(Trade Equity Curve)'作了一些分析,指出了小弟之前考慮未周詳的地方。大家也可以參考一下:


http://tw.myblog.yahoo.com/futurex168/article?mid=26&prev=37&next=14




下面是轉貼的原文:


=====================================================




在程式交易中,最佳化參數是乎是必要的惡,一個程式策略的產生,必定會用歷史資料去檢測這個策略的可行性,在檢測的過程中,很難不會作參數最佳化,希望能由過去的歷史資料,歸納出市場的趨勢特性與參數,而能在未來的市場中獲利。



當然我們都知道,過去的最佳化參數,並不能代表未來會有最佳的獲利,但也不能排除最佳化參數完全有可能提昇未來的績效,對同一策略而言,若是一組參數在過去歷史的績效比較好,另一組參數在過去歷史的績效比較差,在沒有其他的輔助訊息下,應該都會選績效比較好的參數。



因此,我們不一定要排斥參數最佳化,而是要問,參數最佳化是真的可以提昇未來的績效,還只是過度的curve fitting,造成績效的假象,一般來說,要避免 curve over-fitting 的問題,通常是看是否為參數孤島,可參考藍色投機客的文章(http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=966&sc=1),另外,利用 Walk forward Backtesting (http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=702&sc=1) 也是一個不錯的方法。



在這一篇文章中,我們從另外一種分析方法,來探討參數最佳化是否能提昇你未來獲利的績效,假設我們有十組參數,經過backtesting,一定可以排出第一名到第十名,但是第一名的參數,是不是在未來還會是第一名呢? 因此我們可能不止看每個參數最後績效的總排名,我們可能也要看每一年的排名。



若是每一年,這組參數都是第一名(超級資優生),我們大概可以有很高的期望,明年還是會考第一名。 但若是今年第一名,次年第5名,再次年最後名,後來又回到第2名,即使最後總排名是第一名,我們對它在明年的表現還是會有比較多的疑慮。因此我們要檢測我們的系統是屬於前一種,還是後面這一種。



概念講完了,在來說明如何量測,基本上是參考 Lars Kestner 在 Quantitative Trading Strategies (中譯本:計量技術操盤略)中衡量最佳化程序的方法,方法是將每一年最佳化績效的排名與下一年的排名,排成一個 array,如1990年排名第三,1991年排名第八,就在 (3,8) 標一點,標示所有年份與所有參數的組合後,我們可以判斷今年與隔年表現,利用迴歸分析,檢測是否存在線性關性。 若是45度斜上表示最佳化參數一致性,今年第一名的績效,次年還是第一名,今年最後一名的績效,次年還是最後一名,表非「參數最佳化非常有助於隔年的績效」,若是近於水平則表示參數最佳化沒有助於隔年的績效,另外若是一由左上到右下,表示去年最差績效的參數,在今年表現反而不錯,這種參數不一致的現象,可能要特別小心,可能要檢討策略與參數的關係。



接下來,我們以一個實例來說明,使用的是 YG (小黃金) 過去7年的資料(2002/7-2009/7),time frame = 30 min,策略是用 Price Channel Breakout (http://tw.myblog.yahoo.com/Blue-Speculator/article?mid=1584&l=d&fid=7),參數 Length 從102 - 198,間格為 4,共 25 組,我們記錄每一個參數在每一年與次一年的績效排名,可以得到下圖的結果,經過迴歸分析,可得到紫紅色的迴歸直線,slope=0.188,相關係數也是 0.188,在檢測上是為顯著,代表這個策略的最佳化今年績效與次年績效有一定的相關,因此最佳化在某種程度上有助於未來的績效。




另外,我們將每一個參數的歷年的平均排名(藍線)與歷年的獲利(紫紅線)畫成下圖,從這個圖來看,參數 180 附近是最佳的參數選擇,因為這個區域有最佳的獲利,而且是一個參數高原,另外歷年的平均排名也是相當低,表示每一年都考前幾名的次數比較多。




基本上,經過上面的分析,我們可以知道參數最佳化對策略的影響,並且由歷年的績效排名,在選擇參數上,有更客觀的參考,但最後還是要提醒大家,所有這些都只是過去歷史資料的統計分析,「在統計上過去的最佳的投資策略,還是不能代表未來會有最佳的獲利」,我們將平均排名前三名與平均排倒數第二名(第24名)的過去7年的排名畫出。




我們可以看到前三名在2003-2005表現都非常好,但在2006年表現都是20名以上(倒數5名內),反而倒數第二名在2006年表現是第一名,但在其他年的表現卻不是很好,歷年資料的分析,只能給我們一些客觀統計數字,但也不能完全規避市場風險。




"