2016年10月18日 星期二

小製作 大工程

經過近四個星期日以繼夜的努力,新的賭馬model總算成形。這次更新model有兩大目的:一是希望增加model的穩定性;二是希望理順從資料採集到下注的整個流程,使整體操作更自動化、更省時、方便,且更準確。雖然還未經實戰考驗,初步看來這兩個目標還是可以達到。

所謂增加model的穩定性,就是要防止model因某方面data不足而失算時會出現過大的損失,具體解決之道還是一個“借”字,即“借”外力去彌補incomplete data所造成的偏差,但如何“補”得恰如其分而又不會喧賓奪主,則很考功夫。

前文已經說明,在expected value相若的情況下,最大損失越小的賭局,越能放心以大大注獲利。故能有效排除model出現極端損失的可能性是一個很大的進步。

從資料採集,到把data在各module間搬來搬去,再到最後結合實時賠率計算注碼下注,在操作層面看,人手輸入或手動操作的次數越少,出錯的機會就越少,要做到這一點,就要靠有效的programming來維繫。這方面,新的操作介面亦已大大改善。

其中一個改變,是把即時賠率的擷取,從馬會網頁的HTML版改為XML版。使用XML不僅run得快一些、順一些,更重要的是XML版不僅顯示賠率,還顯示具體的派彩,不像HTML版無論10.00倍還是10.95倍都一律以10倍表示就算。更detail的預計派彩,可以確保注碼分配的計算更精準。而且,使用XML版還有另外一個好處...,賣個關子,下次再說。


回過頭去看,其實這次改動並算不上什麼大製作,如果一路順利沒有阻滯,最多不過四、五天的工作量。這樣的小製作卻搞成了為期近一個月的大工程,實在太不應該。

小題變成大做,主要原因還是自己的知識根底不夠堅實,對不同的distribution認識不充分,對maximum likelihood等概念亦頗為模糊。缺乏清晰的認知,每每走到十字路口就躊躇不定,最後憑直覺、貪方便變成了抉擇的標準。碰巧錯誤的方法撞中一個正確的結果,問題更加嚴重,加深了積非成是的印象,更對正確的方法產生排斥,寧願一直在錯誤中打轉。

另一個原因就是programming技巧的不足。受阻於programming能力而停滯不前時,首先想到的不是攻堅克難,而是左閃右避,迂迴前進,甚至在具體做法上偷工減料,結果是令原本正確的方法扭曲變形,越錯越遠。

總結教訓:當務之急,需認真刨下書,重新掌握返STA101,同時要練習下programming,打返好個底。

100 則留言:

  1. 池兄磨利刀,聽晚殺豬?

    回覆刪除
    回覆
    1. 哈哈。亦可能自己變左豬。

      刪除
    2. 看來池兄成功劏豬了!

      刪除
    3. 不算很成功,三隻重錘只中兩隻,差隻「超強快駒」。

      刪除
    4. 竟然係「超強快駒」!第6場計到有3隻overlay, 包括「金錢路」,但無雷神份, 但在落注時, 馬會app load 唔到去確認下注版面, 最後真係10號跑出, 贏少成萬銀.

      刪除
    5. 「金錢路」池某只係計到平手左右,冷門Kelly分母大,好少可以重錘。

      刪除
  2. 回覆
    1. 池某冇programming基礎,由零開始,所以方方面面包括最基本的問題都是問題。

      刪除
  3. “從資料採集,到把data在各module間搬來搬去......人手輸入或手動操作的次數越少,出錯的機會就越少”

    我覺得人手處理的資料愈多,便愈容易遇上noisy data,既粍心力,又有機會和有用的訊息混淆。

    相信池兄的新model更上一層樓,祝大殺四方:)

    回覆刪除
    回覆
    1. 能夠不經人手最好,fat finger error無論如何都難以避免。

      刪除
  4. 祝池兄model運動大成功!

    回覆刪除
  5. 我一對住e類野我就腦閉塞:(

    回覆刪除
    回覆
    1. 睇返轉頭唔算難,但programming問題要考慮到好瑣碎,真係幾煩。

      刪除
  6. 假伸手黨:用得味?(講笑)

    咁埋頭苦幹,老婆有冇咋型先~~~

    回覆刪除
  7. 池兄最終都發現XML比HTML版好用, 恭喜恭喜

    回覆刪除
    回覆
    1. 嘻嘻。被迫的,下次講點解。

      刪除
    2. 睇嚟池兄已經成功將大戶最latest嘅information納入model,恭喜

      刪除
    3. 只係開閘前果D。哈哈。

      刪除
  8. 池兄已經好勁,森而仲用緊人手輸入,祝新model大勝!

    回覆刪除
    回覆
    1. 多謝。池某D手指太「肥」嘛,唔適合輸入資料。

      刪除
  9. 回覆
    1. 大勝應該不會,只希望有D優勢一場一場滾落去。

      刪除
  10. 小弟一路都唔識點攞馬會賠率條xml link,希望池兄教下路,應該無傷大雅吧!

    回覆刪除
    回覆
    1. 池兄個excel係咪會自動下注? 如果無呢個功能,可以試下用按鍵精靈

      刪除
    2. http://bet.hkjc.com/racing/getXML.aspx?type=win&date=19-10-2016&venue=HV&raceno=1
      直接匯入excel就得。

      刪除
    3. 按鍵精靈?多謝推介,學習下先。

      刪除
    4. 做吓伸手先,按鍵精靈可以從excel 滙入data做program嗎?

      刪除
    5. 呵呵,michael兄玩連贏,呢個功能吸引力好大。

      刪除
    6. 係,因為網上下注一次最多二十注!
      池兄計勝率係場計定日計?

      刪除
    7. 30注。
      小弟個方法未至於全自動 但只需copy and paste便下注 幾十條連贏都係入緊閘先買

      刪除
    8. 咁利害?Peter兄可唔可以教下小弟!

      刪除
    9. //勝率係場計定日計
      場計

      刪除
    10. //場計
      諗落諗落我現在個Model應該有啲時間上的錯配。

      刪除
  11. 回michael兄,可以的,我就用過按鍵精靈從excel拿馬號和投注金額,然後自動下注獨贏,大概三秒就可以完成下注,快到睇唔到 當然正路就係用java控制會投注網頁最好,但要識java lol,我就唔識

    回覆刪除
    回覆
    1. 獨贏其實唔係咁需要,連贏就真係有用。如果java行得通池某要搵IT人幫手搞搞先。

      刪除
    2. 我做咗少少功課,excel係可以的,我估Peter兄應該都係用excel掛!不過就要用IE,我搵CHROME得唔得。

      刪除
    3. //回michael兄.....
      謝!我見YouTube都有好多Tutorial,今晚搵吓!

      刪除
    4. 之前我有諗過用按鍵精靈
      但硬係對d模擬analog既野唔係好信得過
      有時lag機miss左一個click可能後面全部錯哂

      刪除
    5. PETER兄,伸手黨想問,如何用EXCEL控制CHROME?我懂的EXCEL VBA CODE只能控制IE.....

      刪除
    6. 最簡單的copy and paste
      嚴格來說兩者並沒關聯

      刪除
    7. excel計出的注碼後,用VBA 傳去CHROME?
      印象中VBA好像沒有Firefox 和 Chrome的object,研究了很久也找不到方法,唯有用IE。

      刪除
    8. *個人意見 歡迎評論*

      小弟不是不鼓勵大家學習vba
      而是希望不要只依賴vba來solve problem
      小弟所有賭馬賭波model均沒有用上vba的
      excel本身的功能十分強大 大部分的情況已足以應付
      殺雞又焉用牛刀
      若是難題一到 不思考他法 腦袋就只有vba
      未來可能遇上了1+1也只打算用vba解決 那就反而成了心窮而智窮的一群
      正如不是每一個物理定律也要搬上微積分
      如果腦袋只有一樣工具 一題易如反掌的mc也要運算個半小時也太不切實際
      先看清難題的要求 用最簡單的方法解決 也是訓練解難技巧的一環
      的確小弟的model因欠缺vba不能實現全自動化下注
      若之後再用vba令model更上一層樓 那就如虎添翼了
      恕小弟表達能力尚有待改善 歡迎互相分享討論
      (說到底 小弟真的太懶了 加上排山倒海的事務等著小弟去處理 學習vba已排到to-do list 的第十幾項了 如果Ivan兄真的想用vba達成上述目標的話 那就抱歉 要問問其他高手了)

      刪除
    9. 除咗直接寫 program, Firefox / Chrome plug-in iMacro / DejaClick 亦係串連既方法, 此方法應可減省大量輸入時間。但要做到全自動 Excel (VBA) -> iMacro / DejaClick -> Firefox / Chrome 落注, 可能要購買 iMacro / DejaClick 付費版 !
      IT 人

      刪除
    10. 完全未聽過IT人介紹果兩個 plugin, 長知識了, 謝謝

      刪除
    11. 講得出 iMacro / DejaClick 付費版, 應該係programmer方面既IT人.
      池兄, 我想問馬會XML怎樣可以找到開盤賠率, 你知道嗎?

      刪除
    12. 馬?好像只有即時賠率。

      刪除
    13. 補充一下, 我意思是初盤賠率...

      刪除
  12. 討論由maths層面轉到engine了呢

    回覆刪除
    回覆
    1. 成個賭馬程序的確算係一個系統工程。

      刪除
  13. 祝成功,想聽一些關於池兄對自由財務的看法和見解
    池兄的任何類型的文章對於金錢的議題,也極具欣賞價值,股票除外,因小弟不懂,哈哈

    回覆刪除
    回覆
    1. 財務自由是個假議題,自不自由在於對生活的態度,不在於對教條的信奉。

      刪除
  14. 池兄,請問點樣從每隻馬Win的expected odds 引伸到Q的下注呢?

    回覆刪除
    回覆
    1. 這個有點技術性,需要一些篇幅來解釋,過兩天寫篇文討論一下吧。

      刪除
    2. 記得池兄講過,用跑第一的機率估算跑第二的機率係好難,不如直接由RAW DATA估跑第二的機會

      刪除
    3. 做法上用跑第一的機率估算跑第二的機率最容易,但要算得準就很難。

      刪除
  15. 能請問一下xml的地址嗎, 本來想用python去html採, 之後見到大師你能用xml
    用xml又可以輕鬆D

    回覆刪除
    回覆
    1. 其實呢。。池兄係上面留言已經post左一次。。

      刪除
    2. 是的,上面回覆Yu fung Wong兄那個留言已post了xml的link。
      btw,千萬不要稱「大師」,池某的文章十篇中起碼有八篇是調侃「大師」的。:)

      刪除
  16. 池兄,可以指教一下如何在EXCEL載入XML版DATA嗎?
    樓上說:
    http://bet.hkjc.com/racing/getXML.aspx?type=win&date=19-10-2016&venue=HV&raceno=1
    直接匯入excel就得。

    嘗試過在開發人員和資料兩邊匯入都得出Information not ready. 13

    麻煩了。

    回覆刪除
    回覆
    1. 要將date同venue改作最近的賽事,或者吉左呢兩項都得。

      刪除
    2. 即係咁:
      http://bet.hkjc.com/racing/getXML.aspx?type=win&date=02-11-2016&venue=ST&raceno=1
      或者咁:
      http://bet.hkjc.com/racing/getXML.aspx?type=win&date=&venue=&raceno=1

      刪除
    3. 多謝池兄,成功做到了

      請問LINK是用什麼找到的?
      想試試應用在足球那邊
      感謝

      刪除
    4. google search。足球那邊好像沒有XML。

      刪除
    5. 感謝池兄指教

      刪除
  17. 池師兄:

    win的XML係用type=WIN, 位置就用type=PLA, Q就用type=QPL, Q就用type=QIN, 這些我自己猜的。
    其他彩池的XML應該用什麼? 我知道例如三重彩, 四重彩等等馬會冇公布, 但係例如單T, 四連環, 孖寶等是用什麼的?

    感謝。

    回覆刪除
  18. 池兄,
    依家用EXCEL匯入馬會賠率好似已經唔得

    回覆刪除
    回覆
    1. 冇問題呀。XML仍然好正常。

      刪除
    2. 為什麼我照以上方法輸入

      只有彈出
      Attribute:DATE Attribute:VENUE Attribute:updateDate Attribute:updateTime
      14/2/2018 HV 13/2/2018 19:09:25

      但沒有賠率顯示

      刪除
    3. 現在是18/2/2018 ST的賠率。

      刪除
  19. BLOG主你好,你今天賽事能從XML拿到資料嗎?

    回覆刪除
    回覆
    1. 馬會轉左json了,這篇文章的留言有較多討論:
      https://poolshunter.blogspot.com/2018/01/blog-post.html

      刪除
    2. 謝回覆,我平時用EXCEL VBA拎賽績D CODE又要重新寫過,真麻煩。

      刪除
    3. json的數據結構比xml更簡單

      刪除
    4. xml直接import到excel就用得,json要再拆先用得,excel用家梗係希望用xml。

      刪除
  20. http://bet.hkjc.com/racing/getXML.aspx?type=Starters
    Json 有没有相應的link?

    回覆刪除
    回覆
    1. http://bet.hkjc.com/racing/getJSon.aspx?type=rdt

      刪除
    2. 正到不得了 吾該晒ray

      刪除
    3. 正。有冇得只要單場架?

      刪除
  21. '"http://bet.hkjc.com/racing/getJSON.aspx?type=win&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=pla&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=qin&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=qpl&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=tri&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=ff&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=raceres&date=2018-07-01&venue=ST&raceno=1"
    '"http://bet.hkjc.com/racing/getJSON.aspx?type=pooltot&date=2018-07-01&venue=ST&raceno=1"
    暫時只找到這些

    回覆刪除
    回覆
    1. 仲有呢個,可以揀同時要幾場賠率
      http://bet.hkjc.com/racing/getJSON.aspx?type=winodds&date=2018-07-01&venue=ST&start=1&end=5

      刪除
    2. 謝謝...我要努力搵返Starter!!

      刪除
  22. excel處理json比處理xml麻煩啊。

    回覆刪除
  23. 唔該晒版本今日email覆我

    呢個page真係好有用,如果早兩日搵到就唔洗而家先攪轉json

    回覆刪除
  24. 請教、個json好複雑、如何轉array?!

    回覆刪除
    回覆
    1. 可用TRIM、MID、SUBSTITUTE等指令將所需的數據「挖」出來。

      刪除