howard2c 發表於 16-8-29 10:21

原油周三庫存公佈的投機路程

本帖最後由 howard2c 於 16-8-29 11:52 編輯

在每周三晚上的10:30, 美國能源總署(EIA)會公佈上周美國的原油及汽油庫存.從接著的0.01秒開始, 原油價格會激烈波動到多方或空方勝利為止.這有三點吸引我.第一, 接下來的一到四小時會有相對強的波動, 不會等了半天價格動都不動.第二, 勝負很快就揭曉.有時候比賭二十一點還快.第三, 我喜歡迎接新的挑戰.

程式是自己用C#API開發的.我的報價源是IQFEED.外期BROKER是IB.

第一版:
10:31:00 程式根據一分鐘的變化, 下一口單, 無停損.

第二版:
10:31:00 程式根據一分鐘的變化, 下兩口單.一口無停損, 一口有停損轉向.

第三版:
10:30:01 程式根據這一秒的變化, 下兩口單.一口無停損, 一口有停損轉向.
10:31:00 程式根據這一分鐘的變化, 下兩口單.一口無停損, 一口有停損轉向.

程式已經跑了一個月.我會盡量在這分享這其中的過程.

howard2c 發表於 16-8-29 10:47

本帖最後由 howard2c 於 16-8-29 11:59 編輯

第三版:
10:30:01 程式根據這一秒的變化, 下兩口單.一口無停損, 一口有停損轉向.
10:31:00 程式根據這一分鐘的變化, 下兩口單.一口無停損, 一口有停損轉向.

第三版的程式的第一周(8/17)是賠錢的.一分鐘的程式是賠錢的.但一秒鐘的程式應該要是賺錢才對.回去分析才發現有問題:

10:30:01.100 的時候, 原油庫存資料公佈了1.1秒後, iqfeed 給我最新的報價只有到
10:30:00.041.結果我的程式用了晚了0.7秒的價格做了錯誤的判斷.

這是我第一次玩秒殺的東西, 對時間的精確度還不算講究.之後我去分析, 平常時IQFEED的報價只會DELAY0.3秒.在公佈原油庫存這種特殊爆量的情況, 這個DELAY變成0.7秒.所以, 我如果要用10:30:01.000的價格來做正確的決定, 理論上我必須等到 10:30:01.700 才可決定下單.因此我把秒殺程式改的10:30:02才下單.

然後, 我還做了個修改.其中一口本來是一個小時候出場.我發現大家跑短線, 有偷跑提前獲利了結.過了50分鐘後, 我原本獲利美金$1000.但到了一小時(也只差十分鐘)就變成虧了.因此我把其中一口的持倉時間縮短成50分鐘.

howard2c 發表於 16-8-29 11:51

第三版的程式的第二周(8/24)是賺錢的.分鐘及秒殺程式都是賺錢的.上周我做的兩個修改有差嗎?

1. 秒殺回測是用10:30:01的報價, 但現在我們知道即時報價會有0.7秒以上延遲.所以我們改成10:30:02秒才進場.

上周 系統時間 10:30:01.100 -> 即時報價的最後時刻 10:30:00.041, 延遲 0.7秒
這周 系統時間 10:30:02.100 -> 即時報價的最後時刻 10:30:00.221, 延遲 1.5秒

系統晚一秒做決定是有比較好, 但發現在這種公佈庫存的特殊爆量, 報價延遲從0.7秒延長到1.5秒, 其實還是無法用10:30:01的報價做決定.下周叫程式紀錄完整的報價延遲.不過下單時間大概不會再延.越慢下單滑價就越大, 可預期利潤也變少.現在知道這種秒殺的追單也不是那麼簡單.瞬間報價延遲讓你看得到未必吃得到.

2.另外一個改變是把其中一口持倉時間從一小時改成50分鐘.這個更改反而讓我在這一周少賺許多.要改回來嗎?算了.程式交易就是這樣, 整體回測有差就好, 但不可能每次都在高點.

howard2c 發表於 16-9-1 11:47

本帖最後由 howard2c 於 16-9-1 11:48 編輯

昨天晚上(8/31)這盤也是賺錢的.分鐘及秒殺的程式都賺錢.

另外, 我昨天改了程式來看每秒的報價延遲:

原油庫存公佈後的報價延遲
22:30:00 報價延遲: 0.454 秒
22:30:01 報價延遲: 1.034 秒
22:30:02 報價延遲: 1.747 秒
22:30:03 報價延遲: 2.413 秒
22:30:04 報價延遲: 2.829 秒
22:30:05 報價延遲: 2.859 秒
22:30:06 報價延遲: 2.750 秒
22:30:07 報價延遲: 2.625 秒
22:30:08 報價延遲: 1.589 秒
22:30:09 報價延遲: 0.689 秒
22:30:10 報價延遲: 0.186 秒

IQFeed 的報價延遲平常就200-300ms.但隨著 22:30 原油庫存公佈後爆量, 報價延遲從 200ms 變慢到 2.859 秒.我必須等到三秒後才能看到庫存公佈後那一秒的最後價格.然而, 報價速度也迅速的在十秒後就恢復同步.以後就知道, 做Special Event要特別注意報價延遲.那把問題反過來. 我是否可以用報價延遲來預測市場將會有波動嗎?我覺得錯的訊號應該會太多, 但還是值得探索.

昨天價格在公佈後0.043秒 (43ms), 原油價格就跌了20個tick.0.043秒是什麼概念.我如果在公佈後, 按了重新整理, 等資料顯示在螢幕上都要1秒鐘.光是資料要透過網路從美國傳到台灣都需要0.22秒.等我把瀏覽器拉到那邊, 讀完那幾行, 三秒都過去了, 我都還沒輸單呢.別人卻能夠只用我還來不及眨眼時間 (0.043秒), 就已經分析完畢, 得出結論, 然後下單成交了.別人是怎麼辦到的?應該是說他們根本不是人, 而全都是不需要眨眼的電腦及程式.資料要從華盛頓傳到芝加哥就要0.033秒, 已經在CME代管的電腦只剩10毫秒的時間判斷及下單給CME的電腦.這是一場電腦對電腦的科技競賽雖然我只能在旁邊看熱鬧, 但還是挺好玩的.

shishen 發表於 16-9-1 18:57

週四10:30的天然氣   要不要也試試看

howard2c 發表於 16-9-5 09:40

這周末有看了今年的天然氣庫存公佈.常看到一秒就跌過頭, 之後一小時有小反彈.這
可能是因為跟的人不夠多, 量不夠大, 所以沒什麼後勁.不過, 這反彈的勝率還可以, 就是賺太少了.

howard2c 發表於 16-9-9 11:29

本帖最後由 howard2c 於 16-9-9 11:56 編輯

這次的原油庫存公佈被改成周四11點了, 也就是昨天晚上, 所以我今天才寫.

這次我新增了兩個程式.原本無停損轉向的程式損益太不穩定.十次裡面大概有四次賺, 三次平, 三次虧.雖然整體還是賺, 但賺的很少.而眼睜睜的看著一小時內虧這麼多其實是痛苦的.所以才寫了第二版, 第三版, 及現在的第四版.這次新增的兩個程式一個是讓停損機制的心跳變慢.另一個程式脫離了固定時間入場的限制.原本我想讓所有的程式併行一起跑.就讓那兩個無停損的舊程式再賭一次!後來還是覺得理性點好.所以我把無停損的那兩個程式停掉了, 而用這次新寫的兩個程式取代.

這次原油庫存大減.結果我的程式小賺.如果沒有停用那兩個舊程式, 我會賺更多.這又回到剛剛的原點, 我該理性一點, 把比較容易虧錢的程式停掉, 還是讓比較容易虧錢的程式再賭一把.我的直覺想賭賭看.但我最終選擇讓我的理性關掉那兩個程式, 而因此少賺了原本該賺的錢.這應該是程式交易或是任何交易常碰到的爭札吧.

這次的波動依然是神速.

11:00:00.000 (公布前)      $46.17 (+0.00%)
11:00:00.035 (35毫秒後)    $46.50 (+0.71%)
11:00:00.055 (又20毫秒後) $46.70 (+1.14%)

我的單在一秒後成交, 我一毛錢都還沒賺到, 搶頭香的電腦已經賺了 1.36%.你如果去看昨天的K線圖, 你在23:00會看到一根漂亮的突破.在這提醒大家, 除非你能在 0.055 秒內出手, 那根棒是看得到吃不到!別人坐高鐵, 我們騎腳踏車.我們晚到只能撿他們吃剩的.在一樣的風險下, 我們只能小賺, 搶頭香的人大賺.

接下來我可以怎麼做?

1. 把電腦寄存在美國交易所附近.這不難, 而對成交價會有少許幫助.
2. 我想讓電腦準時下載剛公佈的原油庫存數據, 然後電腦馬上根據新數據下單, 不用等行情突破.這感覺還蠻好玩的.
3. 看看是否有方法預測原油庫存, 這樣可以在公佈前就下賭注.
4. 看看報價延遲是否可以幫助預測潛在波動.
5. 把資料源及交易商換成更高級的.短時間不可能, 因為所有的程式都必須重寫.

第2,3,4,5項都需要時間.以後再說吧!

howard2c 發表於 16-9-15 02:30

9/14 的原油庫存公佈很難操作.前幾次停損轉向機制都沒被觸發.而今天則是被觸發太多次, 15分鐘內6次.上週我嘗試著把一個程式的停損轉向的心跳變慢.看來那是對的.下周應該會全面跟進.這樣就能夠避免將近一半的損失.

上次列的第二項是讓電腦即時下載原油庫存數據, 然後電腦馬上判斷下單.這已經實現了.庫存是10:30:00公佈的.而這個程式可在 0.991 秒內下載數據及根據預設條件下單.這是我目前為止下單速度最快的程式.如果要更快就得把伺服器寄放到美國去.初步跟歷史資料的比對顯示這程式一定的價值.可惜這次跟我其他程式一樣是虧錢的.

我看了一下昨天的圖形.真的很難操作.程式一度有賺錢過.但之後全停損掉了.唯一能賺錢的方式是在賺錢的時候用trailing stop或分步出場.但我覺得這可能會減少整體的獲利.或許我程式寫得再好, 也沒有辦法在這種情況下獲利.有時候, 最好的選擇就是等下一次, 畢竟不可能每次都賺.

howard2c 發表於 16-9-29 10:55

上星期結果是小虧的.在看相關的新聞才發現原來星期二凌晨4:30還有一個預賽.4:30 公佈的是API機構自己訪調的庫存數據, 但必須要有路透社才能訂閱.雖然我看不到這個數據, 但我看得到價格的變動.

2016-09-20 16:30:05,44.58,44.29,44.39,44.48,662146,795,
2016-09-20 16:30:04,44.49,43.99,43.99,44.40,661264,2812,
2016-09-20 16:30:03,44.00,43.98,43.99,44.00,658437,39,
2016-09-20 16:30:02,44.01,43.98,44.01,43.99,658395,73,
2016-09-20 16:30:01,44.05,44.00,44.04,44.00,658321,173,
2016-09-20 16:30:00,44.07,44.04,44.06,44.04,658129,26,
2016-09-20 16:29:59,44.13,44.04,44.13,44.08,658099,164,

在早上4:30的第4秒的時候, 油價瞬間漲1%.到早上8:00, 油價已經漲了3.5%.或許我寫的程式也可用在這個預賽上面.或許這預賽的結果也可幫助我預測周三主賽的動向.

howard2c 發表於 16-9-29 11:42

本帖最後由 howard2c 於 16-9-29 12:16 編輯

本周結果是賺的.賺錢的原因不是因為抓對方向而是停損轉向機制.昨天庫存(符合API預測)是減少的.我的秒殺程式(反應時間在2秒以內)全都做多.結果全被停損轉向了.所以本周賺的錢有一半是停損後轉向才賺來的.

本周開始電腦程式已經被寄存在芝加哥.PING的速度真的很快. 但整體改善並沒有預期的多.主要是IQFEED的瞬間報價延遲及IB的下單成交時間就是慢.就算是電腦搬到CME的機房裡面, 因為我用便宜的報價源, 報價延遲依然存在, 不過我可能已經找到變通的方式.

最讓我想不通的是, 我的程式從台灣去抓EIA庫存資料只需要0.991秒.但程式放芝加哥後, 抓資料的時間不減反增到2.297秒.是不是在10:30的瞬間, 華盛頓到芝加哥的網路也突然塞車, 而到台灣則不會.還是我哪裡沒弄好?下周依然還是會把程式放在芝加哥做測試.

PS.我剛又測試了在非尖峰期從芝加哥抓華盛頓的庫存資料.這次只需300毫秒, 跟尖峰期的2.297秒實在差很多.不知道這塞車是正常的, 還是有人故意要讓網路瞬間塞到爆, 不然怎麼可能資訊到台灣比到芝加哥還快!這代表在美國東岸玩這遊戲的大咖一定要有自己的專屬線路.

Henk 發表於 16-9-29 22:05

好猛…
一個剛接觸台指期的菜鳥路過…

howard2c 發表於 16-10-14 12:30

本帖最後由 howard2c 於 16-10-14 14:06 編輯

先分享結果.上周小賠, 這周小賺.另外我周二凌晨4:30的API程式也寫好了, 跟周三的還是有點不同.本周已上線, 以小賺收場.

我之前有說過, 最近原油庫存公佈賺的錢大部份來至轉向機制.也就是說這幾周的進場都被停損掉, 然後因為程式即時轉向, 才有機會賺錢.我原本會來玩原油庫存公佈是因為入場機制回測有6成勝率.但為什麼最近進場機制會連續錯五次.

昨天公布的原油庫存增加了490萬桶, 聽起來很多, 那油價應該要跌才對吧.結果公布後的六分鐘確實跌了1.57%.接下來的四十分鐘, 油價卻又漲了2.26%.庫存多了這麼多, 油價還漲合理嗎?可是最近幾周都是這樣.如果庫存公佈的油價要漲, 油價會先來個大跳樓, 把追空的單都引出來, 然後才開始漲.如果油價要跌也一樣, 會先來個沖天炮, 來引出所有的追單, 然後在讓它跌個夠.

因此, 最近無論我的程式判斷對或錯, 都會發生停損.這個現象連續發生五周.我必須問, 之前6成勝率還存在嗎, 還是以後都這樣.如果以後都這樣的話, 那我是不是可以修改程式來從中獲利.這麼復雜的洗牌賺得了錢嗎?好像還是可以的.

PS.我以後不會再更新此版了.很難在這分享, 又不透露重要細節.Bye Bye!
頁: [1]
查看完整版本: 原油周三庫存公佈的投機路程