日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hurst指数以及MF-DFA

發布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hurst指数以及MF-DFA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉:https://uqer.io/home/

https://uqer.io/community/share/564c3bc2f9f06c4446b48393

寫在前面

  • 9月的時候說想把arch包加進去,昨兒發現優礦已經加好了,由于優礦暫時沒有開放歷史高頻接口,我索性就分享一個冷冷的小知識:分形市場假說(FMH),分析中玩的是低頻數據(日線,或者分鐘線)。

  • 所謂分形市場假說,就是人們發現有效市場假說的種種不合理后,提出的一種假說,我曾經有仔細關注過這一塊,因為這個假說真是太「中國特色」了:

  • 它有幾個主要論點:

  • 當市場是由各種投資期限的投資者組成時,市場是穩定的(長期投資者和短期投資者),當投資者單一時,則市場會出流動性問題;   
  • 信息集對基本分析和技術分析來講短期影響比長期影響要大;   
  • 當某一事件的出現使得基礎分析的有效性值得懷疑時,長期投資者或者停止入市操作或者基于短期信息進行買賣;   
  • 價格是短期技術分析和長期基礎分析的綜合反應;   
  • 如果某種證券與經濟周期無關,那么它本身就不存在長期趨勢。此時,交易行為、市場流動性和短期信息將占主導地位。
    • 總之就是一個具有「正反饋、非線性、分形、混沌、耗散」等等很牛逼的概念,深深吸引著曾經學過物理學的我。。。

    關于Hurst指數以及MF-DFA

    • 現在對于分形市場假說的主要方法論就是 Hurst指數,通過MF-DFA(Multifractal detrended fluctuation analysis)來計算, 具體的可以維基百科一下,大體就是當hurst>0.5時時間序列是一個persistent的過程,當hurst>0.5時時間序列是一個anti-persistent的過程,當hurst=0.5時間序列是一個不存在記憶的隨機游走過程。

    • 而在實際計算中,不會以理論值0.5作為標準(一般會略大于0.5)

    寫在最后

    • 這份工作來自于LADISLAV KRISTOUFEK這位教授在12年的工作,論文名叫做RACTAL MARKETS HYPOTHESIS AND THE GLOBAL FINANCIAL CRISIS: SCALING, INVESTMENT HORIZONS AND LIQUIDITY
    • 這位教授后來在13年把這項工作強化了一下(加了點小波的方法),把論文的圖畫得美美噠,竟然發表在了Nature的子刊Scientific Report上。當年我的導師發了一篇SR可是全校通報表揚啊,雖然現在我以前在物理系的導師說今年有4篇SR發表。。
    • 總之,如果誰對這個感興趣,或者想在Nature上水一篇文章,可以研究研究。
    • 這個方法對設計策略有沒有什么用? 好像沒有用哎,所以我發表在「研究」板塊里了哈。不過10年海通有研究員測試過根據這個方法寫的策略,據說alpha還不錯。
    • 算法部分我用的是自己的library庫。
    import numpy as np import pandas as pd from arch import arch_model # GARCH(1,1) from matplotlib import pyplot as plt from datetime import timedelta from CAL.PyCAL import * from lib.Hurst import * inter = 320 #滑動時間窗口 #設置時間 today = Date.todaysDate() beginDate = '20100101' endDate = today.toDateTime().strftime('%Y%m%d') #設置指數類型 indexLabel = '000001' # SSE index #indexLabel = '399006' # CYB index#讀取指數 indexPrice = DataAPI.MktIdxdGet(ticker=indexLabel,beginDate=beginDate,endDate=endDate,field=["tradeDate","closeIndex"],pandas="1") price = np.array(indexPrice.loc[:,'closeIndex'])#計算對數收益 back_price = np.append(price[0],price.copy()) back_price = back_price[:-1] return_price = np.log(price) - np.log(back_price)#計算波動率 from GARCH(1,1) am = arch_model(return_price) res = am.fit() sqt_h = res.conditional_volatility#去除波動性 f = return_price/sqt_h#計算hurst指數,函數來自自定義library hurst = Hurst(f,T=inter,step=1,q=2,Smin=10,Smax=50,Sintr=1)indexPrice['Hurst'] = pd.DataFrame(np.array([0] * len(indexPrice))) indexPrice.loc[inter-1:,'Hurst'] = hurst indexPrice.index = indexPrice['tradeDate'] plt.figure(figsize=(10,6)) plt.subplot(3,1,1) plt.plot(f) plt.subplot(3,1,2) plt.plot(return_price) plt.subplot(3,1,3) plt.plot(sqt_h)

    上面的圖能夠看到garch(1,1)到底做了什么,它主要是對波動率進行了建模,在做分析時消去了這部分的影響。

    plt.figure(1) indexPrice['closeIndex'].tail(len(indexPrice)-inter).plot(figsize=(10,4),color='red',title='SSE Index',linewidth=1) plt.figure(2) indexPrice['Hurst'].tail(len(indexPrice)-inter).plot(figsize=(10,4),color='green',title='Hurst Index',linewidth=1,marker='.')

    • 看出了啥沒?簡單點說,就是hurst越大,越有可能延續之前的趨勢(即動量),若hurst越小,則越有可能違反之前的趨勢(即反轉)。LADISLAV KRISTOUFEK這位教授的想法是通過極大極小值來判斷,當然它分析的是美股啦。
    • 再看看上面的圖,是對上證指數的分析,取的是日線的數據(其實我喜歡用分鐘線,因為A股波動辣么牛逼,日線顆粒度哪里夠啊。。),可以得(meng)出這些結論:
    • 13年中旬hurst出現最小值,說明熊市的跌勢要反轉了,馬上要進入牛市了?!
    • 15年中旬hurst出現最小值,說明牛市的漲勢要反轉了,馬上要進入熊市了?!
    • 算卦完畢。

    ?

    ?

    ?

    看到好多人在克隆這份東西,我索性就把自定義的lib分享出來,僅限學術交流。命名為Hurst并添加到library即可。

    #coding=utf-8import numpy as np from sklearn.linear_model import LinearRegressiondef avgFluctuation(Xseries,q,S):lr = LinearRegression(fit_intercept = True)T = Xseries.shape[0]Ts = int(T/S)qorder = qaFlu = 0Xtime = np.array(range(1,S+1))Xtime.shape = (S,1)for v in range(1,Ts+1):Xstarts = (v-1)*SXends = v*SXtemp = Xseries[Xstarts:Xends]Xtemp.shape = (S,1)lr.fit(Xtime,Xtemp)fitX = map(lr.predict,Xtime)eX = fitX - XtempFlu = np.sum(eX*eX)/SaFlu += (Flu)**(qorder/2)/(2*Ts)for v in range(Ts+1,2*Ts+1):Xstarts = T-(v-Ts)*SXends = T-(v-Ts)*S+SXtemp = Xseries[Xstarts:Xends]Xtemp.shape = (S,1)lr.fit(Xtime,Xtemp)fitX = map(lr.predict,Xtime)eX = fitX - XtempFlu = np.sum(eX*eX)/SaFlu += (Flu)**(qorder/2)/(2*Ts)aFlu = aFlu**(1./qorder)return aFludef MFDFA(Xseries,q,Smin,Smax,Sintr=1):T = Xseries.shape[0]N = (Smax - Smin + 1)/SintraFlus = np.zeros(N)i = 0for S in range(Smin,Smax+1,Sintr):aFlus[i] = avgFluctuation(Xseries,q,S)i += 1logaFlus = np.log(aFlus)logS = np.log(range(Smin,Smax+1,Sintr))lr = LinearRegression(fit_intercept = True)logaFlus.shape = (N,1)logS.shape = (N,1)lr.fit(logS,logaFlus)h = lr.coef_return hdef Hurst(X,T=300,step=1,q=2,Smin=10,Smax=50,Sintr=1):X = np.array(X)nX = X.shape[0]hurst = np.zeros(nX-T+1)for i in range(0,nX-T+1,step):XX = X[i:i+T]Xseries = np.zeros(T)for j in range(T):Xseries[j] = np.sum(XX[0:j+1])hurst[i] = MFDFA(Xseries,q,Smin,Smax,Sintr)return hurst

    ?

    ?

    ?

    由于上面的代碼運行有點問題,下面是我自己改過的代碼:

    def avgFluctuation(Xseries, q, S):lr = LinearRegression(fit_intercept = True)T = Xseries.shape[0]Ts = int(T/S)qorder = qaFlu = 0Xtime = np.array(range(1, S+1))Xtime.shape = (S, 1)for v in range(1, Ts+1):Xstarts = (v-1)*SXends = v*SXtemp = Xseries[Xstarts:Xends]Xtemp.shape = (S, 1)lr.fit(Xtime, Xtemp)fitX = list(map(lr.predict, [Xtime]))eX = fitX - XtempFlu = np.sum(eX*eX) / SaFlu += (Flu)**(qorder/2) / (2*Ts)for v in range(Ts+1,2*Ts+1):Xstarts = T-(v-Ts)*SXends = T-(v-Ts)*S+SXtemp = Xseries[Xstarts:Xends]Xtemp.shape = (S,1)lr.fit(Xtime,Xtemp)fitX = list(map(lr.predict, [Xtime]))eX = fitX - XtempFlu = np.sum(eX*eX) / SaFlu += (Flu)**(qorder/2) / (2*Ts)aFlu = aFlu**(1./qorder)return aFludef MFDFA(Xseries, q, Smin, Smax, Sintr=1):T = Xseries.shape[0]N = int((Smax - Smin + 1) / Sintr)aFlus = np.zeros(N)i = 0for S in range(Smin, Smax+1, Sintr):aFlus[i] = avgFluctuation(Xseries, q, S)i += 1logaFlus = np.log(aFlus)logS = np.log(range(Smin, Smax+1, Sintr))lr = LinearRegression(fit_intercept = True)logaFlus.shape = (N,1)logS.shape = (N,1)lr.fit(logS, logaFlus)h = lr.coef_return hdef Hurst(X, T=300, step=1, q=2, Smin=10, Smax=50, Sintr=1):X = np.array(X)nX = X.shape[0]hurst = np.zeros(nX-T+1)for i in range(0, nX-T+1, step):XX = X[i:i+T]Xseries = np.zeros(T)for j in range(T):Xseries[j] = np.sum(XX[0:j+1])hurst[i] = MFDFA(Xseries, q, Smin, Smax, Sintr)return hurst

    ?

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Hurst指数以及MF-DFA的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: ww欧美| 成人观看| 熟女一区二区三区视频 | 成年人免费在线看 | 日韩在线视频免费看 | 91性高潮久久久久久久 | 美妇湿透娇羞紧窄迎合 | 免费美女视频网站 | 国产丝袜在线视频 | 亚洲毛片一级 | 香蕉钻洞视频 | 日本亚洲在线 | 亚洲最大的av网站 | 91在线免费视频 | 天天综合网在线观看 | 综合久久一区二区 | av中文字幕在线播放 | 猛1被调教成公厕尿便失禁网站 | 欧美中文网 | 精品福利一区 | 28一20岁女人一级 | 欧美一二区 | 偷偷操网站 | 中文在线一区 | 在线亚洲观看 | 91视频成人免费 | 一本色道久久综合无码人妻 | 免费成人福利视频 | 三年大全国语中文版免费播放 | 美女视频黄色在线观看 | 中国亚洲女人69内射少妇 | 亚洲精品视频三区 | 成人av手机在线观看 | 黄色大片网 | 国产中出 | 人妻在客厅被c的呻吟 | 国产又大又黑又粗 | 日韩成人午夜影院 | 日本免费一区二区三区四区五六区 | 亚洲免费视频一区二区 | 日韩久久一区二区三区 | а√在线中文网新版地址在线 | 黄色小视频链接 | 国产午夜av| 本庄优花番号 | 高清无打码 | 人妻精品无码一区二区三区 | 免费的黄色大片 | 黑人一级女人全片 | 男人的天堂视频 | 爽爽窝窝午夜精品一区二区 | www欧美在线 | 性欧美视频 | 欧美日韩高清一区二区 国产亚洲免费看 | 9cao| 麻豆视频黄色 | 亚洲网站在线免费观看 | 欧美激情一区二区视频 | 国产第一页av | 亚洲国产精品毛片 | 久久精品夜色噜噜亚洲a∨ 中文字幕av网 | 久久蜜桃av一区二区天堂 | 中文综合网 | 国产性一乱一性一伧一色 | 久久人体视频 | 操操操日日日 | 日韩黄色影视 | 美女啪啪网址 | av一级网站| 亚洲成人一区在线 | 色婷婷97| 日b在线观看 | 欧美 日韩 国产 成人 在线 | 国产深夜福利在线 | 国产又黄又大又粗的视频 | 午夜一区二区三区免费观看 | 日韩a级一片 | 天天干夜夜艹 | 精品麻豆| 国产大片b站 | 黑人玩弄人妻一区二区绿帽子 | 中文字幕人妻一区 | 噜噜噜精品欧美成人 | 国产美女视频 | 免费毛片视频 | 日韩精品在线视频 | 在线观看av网站 | 99视频在线观看免费 | 成人午夜视频免费在线观看 | 在线观看香蕉视频 | 99精品欧美一区二区三区综合在线 | 潘金莲一级淫片免费放动漫 | 国产aⅴ | 红杏出墙记| 欧洲a级片 | 禁漫天堂黄漫画无遮挡观看 | 91麻豆精品国产91久久久更新时间 | 国产又爽又黄免费视频 | 中文字幕有码在线播放 |