蒙特卡洛算法在程序化研究中簡單應用

2020-12-05 和訊期貨

    近年來,程序化交易發展愈來愈火爆,傳統的程序化研究一直致力於各種成熟指標的組合,如將MACD和均線指標結合起來,在各種期貨合約品種上應用,尋求最佳的歷史回測效果;另外還有投資者利用自己對盤面的獨特了解,建立個人自定義的指標;然而隨著市場越來越多地程序化研究越來越深入,程序化交易方法基本是從市場價格和成交持倉信息出發,通過數學計算,構建交易模型,這也是造成模型同質化的根本原因,因為大家建模的出發點過於一致。目前市場對於程序化研究主要從宏觀和微觀兩個方面深入。宏觀方面,投資者可以基於更多的市場信息開發新型的交易模型,主要有以下幾種模式:

    第一,基本面數據建模。可以從CPI、PPI、貨幣發行量等宏觀經濟指標出發,建立擇時交易系統,這種方法為多為機構應用。對於期貨市場,每個品種都有供需方面的統計數據,投資者可以結合對這些數據的理解,使用數學方法分析數據,形成多空判斷;

    第二,利用數據挖掘技術分析新聞事件,在深入分析可能造成市場異常波動的事件基礎上,把握交易時機,獲得超額投資回報;

    第三,基於現貨市場的走勢,比如,對於建立在滬深300指數上的股指期貨,可以利用指標股的走勢建模,選擇對指數影響大的權重股,構建領先指標進行交易。

    微觀方面,筆者認為,可以講傳統的指標組合方法進行升華,引入在物理數學中成熟的數學模型,改進傳統的程序化交易模型,如運用數值計算中的蟻群算法和模擬退火算法等,本文介紹的也是數值計算中的蒙特卡洛算法。

    蒙特卡洛(Monte Carlo,簡稱MC)方法,也稱統計模擬方法,或稱計算機隨機模擬方法,最早是由法國布豐等數學家提出用來分析一些科學現象的仿真方法,它是一種以概率統計理論為指導的一類非常重要的數值計算方法,是指使用隨機數(或更常見的偽隨機數)來解決很多計算問題的一種方法。MC方法的基本思想是:為了求解數學、物理或工程技術等方面的問題,首先建立一個概率模型或隨機過程,使其某個參數等於問題的解,然後通過對模型或過程的觀察或抽樣試驗來計算所求參數的統計特徵,最後給出所求解的近似值。

    金融市場充滿了確定性和不確定性,因此形成的數位化變量也是具有確定性和隨機性兩種特徵,而蒙特卡洛算法本身就屬於一類隨機算法,利用儘可能多的模型採樣,尋求近似近似最優解,在金融市場中可以理解為儘可能的尋找市場的確定性方向。

     目前市場上比較流行的一種方法是雙均線突破系統,然而這種系統面臨的問題表現在兩個方面:1.在市場噪音較大時,無法有效地給出買賣信號;2.雙均線的參數無法有效確定,基於這一現狀,筆者考慮引入蒙特卡洛算法,改善傳統雙均線突破系統。

       基於蒙特卡洛算法的雙均線系統主要過程如下:

        1.      首先確定系統兩個參數樣本空間Q和P,初始化多頭指標B=0,空頭指標S=0;

        2.      從樣本Q和P中從隨機抽取參數m和n,其中m>n;

        3.      m周期均線值MA1,m周期均線值MA2,當MA1>MA2,S=S+1;當MA1<MA2,B=B+1;

        4.      重複執行K次,統計多空指標S值和B值;

        5.      確認買賣信號,S>L時,系統發出賣信號,B>L時,系統發出買信號(其中L為系統參數,L<K)。

      在交易開拓者中實現基於蒙特卡洛算法改進雙均線系統,測試螺紋鋼指數期貨30分鐘合約,測試時間為:2009.03.27—2015.04.01,手續費設為每手5元,主要效果如圖1和圖2所示:



     從測試效果來看,運用蒙特卡洛算法改進原來的系統後,策略效果表現良好,總體績效曲線呈現穩步向上的走勢,從具體交易 信號來看,每次進出場信號比較及時,能抓住幾乎每一波大趨勢,同時也過濾了市場中的噪音信號,總體交易次數比較少,具體策略指標如圖3所示。




     從策略指標來看,總體交易次數較少,只有32次,說明這個系統可以認為是抓取大趨勢的指標,類似於日線級別指標,同時整體收益不錯,達到了66060,優於一般的日線指標。為了更好的說明改進效果,將基於蒙特卡洛雙均線系統和傳統雙均線系統各項指標對比,其中傳統爽均線系統選取均線參數為(10,20),如下表1所示:


 

    從表1中各項指標的對比可以看出,經過引入蒙特卡洛算法,提高了雙均線系統的盈利能力,收益能力提高了近50%;減少了交易次數,從178次減少到32次;回撤效果也有一定的改善,顯著提高了原程序化交易系統性能。

    從本文的實例看出,蒙特卡洛方法以概率統計理論為其主要理論基礎,以隨機抽樣(隨機變量的抽樣)為其主要手段,通過相當大的重複抽樣獲取最優解。在程序化交易系統中引入蒙特卡洛算法時,首先應確定抽樣樣本空間,然後構造算法目標函數,最後進行重複隨機抽樣,獲取最優目標函數,指示買賣信號。

     程序化交易在中國起步較晚但是發展迅猛,尤其是過去兩年,程序化交易在國內期貨市場發展的速度,超乎了很多人的意料。而傳統的程序化系統使用者越來越多,市場中策略不可避免會出現同質化現象,造成策略失效。在這種情況下,筆者認為通過引入數學物理中經典算法改進原有交易系統,可以在一定程度上達到更好的效果,而在其中過程中,我們也可以體會到數學之美。

  【免責聲明】本文僅代表作者本人觀點,與本網站無關。本網站對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,並請自行承擔全部責任。

(責任編輯:儲曉燕 HF075)

相關焦點

  • 蒙特卡洛模擬的簡單例子
    圖片來源:Wikipedia旋輪線的面積的證明:車輪在地上旋轉一圈的過程中,車輪圓周上的某一點划過的曲線就叫做「旋輪線」。他的方法簡單得實在是出人意料:它在金屬板上切出旋輪線的形狀,拿到秤上稱了稱,發現重量正好是對應的圓形金屬片的三倍。「稱重」是對蒙特卡羅模擬法最形象的解釋。 蒙特卡洛模擬我們首先把旋輪線放在坐標系中:
  • 蒙特卡洛模擬算法|公開課3
    本篇是「微慕課」公開課系列第3講——蒙特卡洛模擬算法蒙特卡洛(Monte Carlo)模擬方法是一種廣受好評的算法,
  • 蒙特卡洛模擬算法的探討與應用
    附錄一  蒲豐投針實驗與蒙特卡洛算法的相關代碼1.set(gca,'xticklabel',{2.94:0.05:3.39});  ……附錄三 蒙特卡洛模擬算法Python代碼:1.def MTKL(t,r,q,sigma,S,K,kind):  2.    miu=r-q 3.    ans_ST=[]  4.
  • 蒙特卡洛方法在美式期權定價中的應用
    藉助計算機技術,蒙特卡洛方法兼具了兩大優點:一是簡單,省卻了繁複的數學推導和演算過程,使得一般人也能夠理解和掌握;二是快速,簡單和快速是蒙特卡洛方法在現代項目管理中獲得應用的技術基礎。在實際應用中,蒙特卡洛方法通過執行統計抽樣實驗來解決各種數學問題,提供了近似的解決方案。
  • 一文了解AlphaGo中蒙特卡洛方法的由來與發展
    AlphaGo想必大家都相當熟悉了,除了卷積神經網絡技術的應用,蒙特卡洛搜索方法也是起到關鍵性作用的技術手段。接下來就簡單介紹蒙特卡洛方法的由來與發展過程。在二十世紀初期,英國統計學學校沉浸在大量的簡單蒙特卡洛工作,大多數的工作看起來更像是角色的說教,很少用於研究或發現,只有在一些罕見的場合強調的是獨創的發現而不是令人欣慰的驗證。1908年學生(W.S.Gosset)用抽樣實驗幫助他完成了相關係數的分布規律的研究,同年,學生也使用抽樣的方法來支持在他經由搖搖欲墜的、不太完整的理論分析推導出來的所謂丁分布。
  • MCMC、蒙特卡洛近似和Metropolis算法簡介
    MCMC 是Markov Chain Monte Carlo 的簡稱,但在傳統模擬中有一個很重要的假設是樣本是獨立的(independent samples),這一點在貝葉斯統計尤其是高緯度的模型中很難做到。所以MCMC的目的就是運用蒙特卡洛模擬出一個馬可鏈(Markov chain)。
  • 蒙特卡洛方法到底有什麼用?
    蒙特卡洛方法並沒有什麼高深的理論支撐,如果一定要說有理論也就只有概率論或統計學中的大數定律了。蒙特卡洛的基本原理簡單描述是先大量模擬,然後計算一個事件發生的次數,再通過這個發生次數除以總模擬次數,得到想要的結果。比如投3個骰子,計算3個骰子同時是6的概率,可以模擬投N次(隨機樣本數),統計同時是6出現的次數C,然後C除以N即是計算結果。
  • 蒙特卡洛模擬法計算VaR的場景生成技術
    上述計算是不穩定的,這體現在兩個方面:當增加一個新的風險因子(持倉),上述分解需要全部重算,效率較低;當增加一個新的風險因子(持倉)時,即使使用同樣的隨機數,上面的計算結果將截然不同,比如同一個持倉在不同組合裡面計算的VaR將不一樣。
  • 蒙特卡洛梯度估計方法(MCGE)簡述
    其中,對於函數期望類目標問題,最常見的是基於蒙特卡洛採樣的方法。背景知識要了解基於蒙特卡洛採樣的梯度估計方法,首先先了解蒙特卡洛採樣方法和隨機優化方法。MCS 是一種經典的求解積分方法,公式(1)中的問題通常可以用 MCS 近似求解如下:
  • 蒙特卡洛模擬方法
    花費兩天的時間去幫老師研究課題,完成那一刻瞬間感覺自己學到的數學知識很有用。
  • 蒙特卡洛模擬方法及應用案例
    是把概率現象作為研究對象的數值模擬方法。是按抽樣調查法求取統計值來推定未知特性量的計算方法。蒙特卡羅法作為一種計算方法,是由美國數學家烏拉姆與美籍匈牙利數學家馮·諾伊曼在20世紀40年代中葉,為研製核武器的需要而首先提出來的。蒙特卡羅是摩納哥的著名賭城,該法為表明其隨機抽樣的本質而命名,故適用於對離散系統進行計算仿真試驗。
  • NOX夜神:程序化廣告迎來「知識型投放」爆發期
    沒錯,上述場景就是NOX夜神團隊「知識型投放」的應用情境。對於傳統程序化廣告投放而言,當Rebecca在搜索戶外裝備時,很可能會收到一堆同級別同等價位梯度的精品戶外裝備推薦。而對於更加精準的「知識型投放」而言,解鎖出的信息就不僅僅是這些了。在NOX夜神團隊的「知識型投放」系統中,當Rebecca搜索戶外裝備時,投放系統依據習得知識判斷出Rebecca的最終需求,並最終達成精準投放。
  • 什麼是蒙特卡洛模擬?
    戰爭結束後,Ulam在從腦部手術中恢復過來,通過玩無數的紙牌遊戲來娛樂自己。他開始有興趣繪製每個遊戲的結果,以觀察他們的分布並確定獲勝的概率。在與John Von Neumann(就是大名鼎鼎的馮.諾依曼)分享他的想法之後,兩人合作開發了蒙特卡洛模擬。蒙特卡洛模擬用於模擬一個隨機過程中不同結果可能出現的概率,而這一隨機過程由於其中蘊含的隨機變量的幹擾而變得不易預測。
  • 人工智慧輕鬆學 | AI算法連載04:數學基礎之蒙特卡洛方法與MCMC採樣
    一、前言在人工智慧AI如火如荼的大潮下,越來越多的工程師們意識到算法是AI的核心。而面對落地的應用,不懂算法的AI產品經理將是空談,不僅無法與工程師溝通,更無法深刻理解應用的性能與方式。
  • 蒙特卡羅方法在靈敏度分析中的應用及其優勢
    通常,敏感性分析研究數學模型中不同的不確定性來源如何影響模型的整體不確定性。 例如,假設我們要基於其輸入電平(靈敏度)來分析D類放大器的性能。在這種情況下,我們可以檢查每次調整輸入電平時發生的輸出更改。最簡單的形式包括敏感性分析。
  • 蒙特卡洛模擬(Python)深入教程
    蒙特卡洛模擬使我們能夠看到決策的所有可能結果,並評估風險影響,從而在不確定的情況下更好地做出決策。在本文中,我們將通過五個不同的例子來理解蒙特卡羅模擬方法。資源: Google Colab Implementation | GitHub Repository應用領域:金融項目管理能量
  • 詳解蒙特卡洛方法:這些數學你搞懂了嗎?
    該系列文章現已介紹了賭博機問題、馬爾可夫決策過程和蒙特卡洛方法。本文是對其中蒙特卡洛方法文章的編譯。相比於動態編程,蒙特卡洛方法會以一種全新的方式看待問題。其提出的問題是:我需要從環境中獲取多少樣本才能將好策略與差策略區分開?這時候,我們需要重新引入「回報(return)」的概念,這是指長期運行的期望增益:
  • 蒙特卡洛模擬(Monte Carlo Simulation)
    蒙特卡洛是一個非常著名的賭城,因為賭博的本質是算概率,所以蒙特卡洛模擬是以概率為基礎的一種方法,它利用計算機反覆模擬實驗完成問題的求解。在大數定理的保證下,利用事件發生的「頻率」作為事件發生的「概率」的近似值。我們可以設計一個隨機試驗,使一個時間的概率與某未知數有關,然後多次重複實驗,用頻率的近似值表示概率,即可求得該未知數的近似值。當然,實驗的次數越多,近似效果越好。
  • 二十世紀最偉大的十大經典算法
    所謂線性規劃,簡單的說,就是給定一組線性(所有變量都是一次冪)約束條件(例如a1*x1+b1*x2+c1*x3>0),求一個給定的目標函數的極值。這麼說似乎也太太太抽象了,但在現實中能派上用場的例子可不罕見——比如對於一個公司而言,其能夠投入生產的人力物力有限(「線性約束條件」),而公司的目標是利潤最大化(「目標函數取最大值」),看,線性規劃並不抽象吧!
  • 【技術園地】如何應用蒙特卡洛模擬法解決「不確定度」計算難題
    長期從事室內空氣和車內空氣中汙染物檢測以及檢測方法的開發。參與了標準方法HJ/T 400-2007 (車內揮發性有機物和醛酮類物質採樣測定方法)的檢測方法編寫和檢測方法驗證。對實驗室體系運行流程非常熟悉,同時積累了豐富的實驗室認可經驗;精通實驗室分析質量控制手段。