股票量化交易軟件:針對(duì)交易的組合數(shù)學(xué)和概率論3---第一個(gè)數(shù)學(xué)模型
在上一篇文章中,我得到了分形的第一個(gè)公式。 如此即可假設(shè)所有重要的分形相關(guān)值都可以用數(shù)學(xué)模型來(lái)描述。 模擬并非旨在描述這類值,而在于它有助于收集第一批數(shù)據(jù),從而可對(duì)此類結(jié)構(gòu)進(jìn)行更深入的分析。?赫茲量化股票期貨交易軟件在本文中,我決定特別要注意描述第一個(gè)數(shù)學(xué)模型的整個(gè)開(kāi)發(fā)過(guò)程,直至得到可應(yīng)用于不同 EA 的數(shù)學(xué)模型。
新思路
在上一篇文章中研究對(duì)稱分形時(shí),我們得到了一個(gè)通用公式,可計(jì)算價(jià)格在特定走廊內(nèi)移動(dòng)的平均步階數(shù),該步階數(shù)由相同的較小對(duì)稱走廊的數(shù)量決定。 這個(gè)公式如下:
S = K^2?- 新走廊的平均步階數(shù),基于步階是另一條走廊的事實(shí)
P = K * P0? -->?K?= P/P0 - 已知走廊比未知走廊大多少倍
P - 平均步階數(shù)未知的走廊寬度(步階數(shù)是原走廊大小的一半)
P0 - 已知走廊的寬度
為了能夠描述非對(duì)稱走廊,我們需要重新定義一些前面提到的概念,令它們更容易理解。 它們當(dāng)中最重要的是?K。?赫茲量化股票期貨交易軟件?該值實(shí)際上反映了價(jià)格在新走廊中的步階數(shù),前提是這些步階單邊向上或向下。 對(duì)于對(duì)稱走廊,無(wú)論我們正在研究(跨越)哪個(gè)邊界(上邊界亦或下邊界),步階數(shù)均對(duì)等。 這是因?yàn)樯线吔绾拖逻吔缰皇菃?wèn)題的鏡像。 至于不對(duì)稱,經(jīng)上一篇的代碼驗(yàn)證,我們得出在那種情況下平均步階數(shù)確定如下:
S = n * m?- 走廊有一半不對(duì)稱的平均步階數(shù)
n - 適合走廊上半部分的步階數(shù)
m - 適合走廊下半部分的步階數(shù)
因此,對(duì)于對(duì)稱走廊,我們有 “m = n”。 然后,基于以上:
S?= n * n = m * m = m * n = n^2 = m^2 =?K^2
K = n = m
這意味著第一個(gè)導(dǎo)出公式只是前一個(gè)公式的特例,因此不再需要 K。
這個(gè)函數(shù)的一個(gè)有趣的特點(diǎn)是 S(a*k, b*k) = S(a,b) * S(k,k),這很容易證明:
S(n*k ,m*b) = m*k*n*b = n*m * k*b
S(n ,m) * S(k ,b) = n*m * k*b
這個(gè)屬性非常有趣。 通過(guò)額外的反射,它可以提供描述整個(gè)分形的所有必要公式的推導(dǎo)。?赫茲量化股票期貨交易軟件?這個(gè)屬性反映了任意分形的一個(gè)非常重要的屬性:嵌套的能力。 In other words, any finite fractal of great complexity can be represented as two or more simpler fractals which serve as steps in each other. This property will be used to generalize the formula for more complex cases.
Before proceeding with the fractals, let me remind you that the above defined formulas only work if p=0.5. As soon as the market or fractal parameters begin to deviate from a random walk, this formula begins to change very interestingly, namely:
Ss[n,m,p] – a more general formula for the average number of steps (in any direction)
S(n ,m)??= Ss[n,m,0,5] – formula for a random walk is a special case of the general formula
平均步階數(shù)的一般公式
換言之,任何具有極大復(fù)雜性的有限分形都可由兩個(gè)或多個(gè)更簡(jiǎn)單的分形來(lái)表示,它們相互作為步階。 如果我們?nèi)パ芯颗c前一個(gè)相關(guān)的任意單個(gè)分形嵌套層,則無(wú)需考慮在特定步階中發(fā)生了哪些步階。?赫茲量化股票期貨交易軟件?故此,主要上升和下降步階發(fā)生的頻率比率,與相對(duì)應(yīng)的前一層情況準(zhǔn)確相同。?赫茲量化股票期貨交易軟件?換言之,跨越對(duì)應(yīng)嵌套層的邊界,即是下一個(gè)嵌套層的上升或下降。 但是也知道,當(dāng)前嵌套層的步階出現(xiàn)頻率比率并不會(huì)依賴于當(dāng)前層的配置。 這意味著分形嵌套原理可經(jīng)由任何概率 “p” 觀察到。 這意味著當(dāng) “p” 值發(fā)生變化時(shí),公式也應(yīng)該發(fā)生變化,但它應(yīng)該以某種方式保留其嵌套屬性。 一個(gè)簡(jiǎn)單的經(jīng)驗(yàn)可以幫助我們確定通用公式。?赫茲量化股票期貨交易軟件?我們知道概率 p 有一個(gè)隨機(jī)游走點(diǎn),和零與一兩個(gè)極值點(diǎn)。 我們來(lái)看看函數(shù)在這三個(gè)點(diǎn)上會(huì)取什么值。 所以,我們得到以下信息:
?Ss[n,m,1] = Sn[n] = n
Ss[n,m,0] = Sm[m] = m
?Ss[n,m,0.5] = Sn[n] * Sm[m] = m*n
?Sn[n,p] – 單一方向到上邊界的步階數(shù)
Sn[m,p] – 單一方向到下邊界的步階數(shù)
在第一種情況下,我們沒(méi)有向下步階 — 所有鏈都遵循相同的路線。 第二種情況相反,所有步階都向下,沒(méi)有向上步階。?赫茲量化股票期貨交易軟件?若為極端值,其中一個(gè)因子從公式中完全消失。 如果您將其提升為零,則有可能。 任何數(shù)的零次方都等于 1。 此外,梯度具有以下形式的不變性:
A^X * B^X = (A*B)^X
如果我們用平均步階代替數(shù)字,分形嵌套原則仍將保留。 此外,這將表明冪不取決于 n 和 m。 得到的平均步階數(shù)的通用公式如下:
Ss[m,n,p] = ( Sn[n] ^ Pn[p] ) * ( S[m] ^ Pm[p] ) = (n ^ Pn[p] ) * ( m ^ Pm[p] )
分形嵌套原理可以示意如下:
編輯搜圖
該圖顯示了四種狀態(tài),它們象征著可以相互表達(dá)的不同分形。 從一種狀態(tài)到另一種狀態(tài)的轉(zhuǎn)換可以經(jīng)由任何鏈條進(jìn)行。?赫茲量化股票期貨交易軟件?任意選擇的鏈顯示在右側(cè)。 下方示意該鏈可以具有任意長(zhǎng)度和復(fù)雜度,并且您可以無(wú)限次迭代相同狀態(tài)。 這意味著分形中平均步階數(shù)的公式可以表示為產(chǎn)品鏈,代表分形嵌套層。
構(gòu)建冪函數(shù)的原型
進(jìn)一步的思路來(lái)自分形嵌套屬性,以及來(lái)自等冪函數(shù)相對(duì)于基底的不變性。 所有這些數(shù)學(xué)原理將有助于推導(dǎo)出更深層次描述分形的公式。 故此,我們另外得到兩個(gè)函數(shù),其形式我們尚不知道:
?赫茲量化股票期貨交易軟件
Pn[p] – 上邊界乘數(shù)的冪
Pm[p] – 下邊界乘數(shù)的冪
我們知道以下幾點(diǎn):
Pn[0.5] = 1 , Pn[1] = 1 , Pn[0] = 0
Pm[0.5] = 1 , Pm[1] = 1 , Pm[0] = 0
通過(guò)分析冪函數(shù),可以構(gòu)建適當(dāng)?shù)暮瘮?shù)原型。 我選擇了以下原型:
Pn[p] = 1 , if p >= 0.5
Pn[p] = ( (1 – p)/0.5 ) ^ K
Pm[p] = 1 , if p <= 0.5
Pm[p] = ( p/0.5 ) ^ K
K 是調(diào)節(jié)函數(shù)平坦度的冪
以多項(xiàng)式的形式表示 “2” 和 “4” 會(huì)更準(zhǔn)確,可以準(zhǔn)確地描述給定冪的平滑過(guò)渡,但我認(rèn)為在此這是多余的。 如果您想定義更精確的多項(xiàng)式,這里是原型:
?赫茲量化股票期貨交易軟件
Pn[p] = C1 * ( (1 – p)/0.5 ) ^ K1 + C2 * ( (1 – p)/0.5 ) ^ K2 … + … + CN * ( (1 – p)/0.5 ) *KN
Pm[p] = C1 * ( p/0.5 ) ^ K1 + C2 * ( p/0.5 ) ^ K2 … + … + CN * ( p/0.5 ) ^ KN
С1 + С2 + … + … СN = 1是相關(guān)冪的權(quán)重
KN 是對(duì)應(yīng)項(xiàng)的冪
我選擇的多項(xiàng)式是只有一項(xiàng)的一般多項(xiàng)式的最簡(jiǎn)單版本。 所有聲明的原則都可針對(duì)任意分?jǐn)?shù) “n, m” 進(jìn)行驗(yàn)證。
我創(chuàng)建了以下程序來(lái)驗(yàn)證上述假設(shè):
編輯搜圖
從程序結(jié)果中可以看出,一切都正常運(yùn)行。 為了確定,只需比較兩個(gè)數(shù)字。 如果它們相等,則確定嵌套原理和使用分?jǐn)?shù)n?和m?的能力。
?赫茲量化股票期貨交易軟件
從原型受限族接收最佳函數(shù)的一般規(guī)劃案
現(xiàn)在我們需要判定我們將如何搜索原型所需的系數(shù)。 我已選擇了最簡(jiǎn)單的搜索類型 — 在期望范圍內(nèi)生成隨機(jī)數(shù)。 方法規(guī)劃如下:
編輯搜圖
若要它適用于任何函數(shù)原型,則我們需要找到真實(shí)數(shù)據(jù)與數(shù)學(xué)模型最佳匹配的系數(shù)。 相同的規(guī)劃以后會(huì)有效,因?yàn)樵谖恼碌哪┪?,我們將?yīng)用相同的方法來(lái)處理另一個(gè)原型。
?赫茲量化股票期貨交易軟件
深入分析
現(xiàn)在我們更深入地分析這個(gè)公式的結(jié)構(gòu)。 公式的結(jié)果是價(jià)格在跨越邊界其一之前的平均步階數(shù)。 向上和向下的步階則認(rèn)定是相等的,但這種相等實(shí)際上只有在隨機(jī)游走的情況下才有可能。 對(duì)于非對(duì)稱分形的完整講述,有必要額外判定給定值的實(shí)際組成。 從邏輯上講,任何類型的平均步階數(shù)都取決于跨越上邊界時(shí)的平均步階數(shù)和跨越下邊界時(shí)的平均步階數(shù)。 我們來(lái)找出上邊界跨越點(diǎn)的相關(guān)值:
?赫茲量化股票期貨交易軟件
SP[U,ud] = S[U,u] * P[U] + S[U,d] * P[U] = (S[U,u] + S[U,d]) * P[U] = S[U] * P[U]
S[U] – 如果步階鏈?zhǔn)紫鹊竭_(dá)上邊界,則為步階的平均數(shù)
S[U,u] – 如果步階鏈?zhǔn)紫鹊竭_(dá)上邊界,則為平均向上步階數(shù)
S[U,d] – 假設(shè)步階鏈?zhǔn)紫鹊竭_(dá)上邊界的平均步階數(shù)
P[U] – 價(jià)格首先跨越上邊界的概率
SP[U,ud] – 跨越上邊界的平均可能步階數(shù)
下邊界的公式類似:
SP[D,ud] = S[D,u] * P[D] + S[D,d] * P[D] = (S[D,u] + S[D,d]) * P[D] = S[D] * P[D]
S[D] – 如果步階鏈?zhǔn)紫鹊竭_(dá)下邊界,則為任何步階的平均數(shù)
S[D,u] – 如果步階鏈?zhǔn)紫鹊竭_(dá)下邊界,則為平均向上的步階數(shù)
S[D,d] – 假設(shè)步階鏈?zhǔn)紫鹊竭_(dá)下邊界的平均步階數(shù)
P[D] – 價(jià)格首先跨越下邊界的概率
SP[D,ud] – 跨越下邊界的平均可能步階數(shù)
很明顯:
S = SP[U,ud] + SP[D,ud]
終極情況,我們最終能夠獲得和使用的所有數(shù)值,均取決于五個(gè)基礎(chǔ)值:
S[U,u] = SP[U,u]/P[U] – 如果步階鏈?zhǔn)紫鹊竭_(dá)上邊界,則為平均向上步階數(shù)
S[U,d] = SP[U,d]/P[U] – 假設(shè)步階鏈?zhǔn)紫鹊竭_(dá)上邊界的平均步階數(shù)
S[D,u] = SP[D,u]/P[D] – 如果步階鏈?zhǔn)紫鹊竭_(dá)下邊界,則為平均向上的步階數(shù)
S[D,d] = SP[D,d]/P[D] – 假設(shè)步階鏈?zhǔn)紫鹊竭_(dá)下邊界的平均步階數(shù)
P[U] – 價(jià)格首先跨越上邊界的概率
我們將根據(jù)不同輸入?yún)?shù)的分形運(yùn)算結(jié)果搜索這些值的公式。 在上一篇文章中,我為分形輸出選擇了以下值:
?赫茲量化股票期貨交易軟件
SP[U,u] – 如果步階鏈?zhǔn)紫鹊竭_(dá)上邊界,則平均向上步階數(shù)
SP[U,d] – 假設(shè)步階鏈?zhǔn)紫鹊竭_(dá)上邊界的平均步階數(shù)
SP[D,u] – 如果步階鏈?zhǔn)紫鹊竭_(dá)下邊界,則平均向上的步階數(shù)
SP[D,d] – 假設(shè)步階鏈?zhǔn)紫鹊竭_(dá)下邊界的平均步階數(shù)
P[U] – 價(jià)格首先跨越上邊界的概率
P[D] – 價(jià)格首先跨越下邊界的概率
S = SP – 任何步階的平均數(shù)
這是一組可由基礎(chǔ)值來(lái)表示的單獨(dú)元素:
SP[U]
S[U,ud] = S[U,u] + S[U,d]
S[D,ud] = S[D,u] + S[D,d]
P[D] = 1 – P[U]
S = SP[U,ud] + SP[D,ud]
在處理分形數(shù)學(xué)時(shí),我進(jìn)行了廣泛的分析,目標(biāo)是在一個(gè)緊湊的圖表中簡(jiǎn)要顯示。 該圖例展示的是搜索數(shù)學(xué)模型過(guò)程的結(jié)果:
編輯搜圖
數(shù)據(jù)集合和結(jié)論
針對(duì)分形計(jì)算結(jié)果的更詳細(xì)研究結(jié)果,我注意到最初在構(gòu)建通用分形概念時(shí)確定的六個(gè)值是數(shù)學(xué)相關(guān)的。 最初,我在進(jìn)行對(duì)稱邊界測(cè)試時(shí),試圖判定這些值之間的依賴關(guān)系。 我取得了一些成果。 我針對(duì)十種不同的情況做了計(jì)算,結(jié)果證明這已經(jīng)足夠了:
測(cè)試索引
走廊上半部分的步階 (n)
走廊下半部分的步階 (n)
( m )
初始步階的概率
?
( p )
上邊界的平均可能向上步階數(shù)
( SP[U,u]??)
上邊界的平均可能向下步階數(shù)
( SP[U,d]??)
下邊界的平均可能向上步階數(shù)
( SP[D,u]??)
下邊界的平均可能向下步階數(shù)
( SP[D,d]??)
上邊界的任何步階的平均可能數(shù)
( SP[U,ud]??)
下邊界的任何步階的平均可能數(shù)
( SP[D,ud]??)
1
1
1
0.5
0.5
0
0.0
0.5
0.5
0.5
2
2
2
0.5
1.5
0.5
0.5
1.5
2.0
2.0
3
3
3
0.5
3.0
1.5
3.0
1.5
4.5
4.5
4
1
2
0.5
0.888888
0.2222222
0.111111
0.777777
1.11111111
0.8888888
5
2
3
0.5
2.2
1.0
0.8
2.0
3.2
2.8
6
1
2
0.6
1.038781
0.249307
0.066481
0.487534
1.288088
0.554016
7
2
3
0.6
2.811405
1.191072
0.338217
0.906713
4.0024777
1.244931
8
2
3
1.0
2.0
0.0
0.0
0.0
2.0
0.0
9
1
3
0.5
1.25
0.5
0.25
1
1.75
1.25
10
1
4
0.5
1.6
0.8
0.4
1.2
2.4
1.6
?
下面我將示意一個(gè)表格,其中包含未顯示在分形日志中的計(jì)算值。 我們需要它們來(lái)評(píng)估數(shù)值之間的依賴關(guān)系:
測(cè)試索引
走廊上半部分的步階 (n)
走廊下半部分的步階 (n)
( m )
跨越上邊界概率
( P(U) )
跨越下邊界概率
( P(D) )
跨越上邊界時(shí)任何步階的平均數(shù)
(S[U,ud]) = SP[U,ud]/P[U]
跨越下邊界時(shí)任何步階的平均數(shù)
(S[D,ud]) = SP[D,ud]/P[D]
上邊界的平均上升步階數(shù)
( S[U,u]??) = SP[U,u]/P[U]
上邊界的平均上降步階數(shù)
( S[U,d]??) = SP[U,d]/P[U]
下邊界的平均上升步階數(shù)
( S[D,u]??) = SP[D,u]/(P[D])
下邊界的平均?
下降步階數(shù)
( S[D,d]??) = SP[D,d]/(P[D])
平均步階數(shù)
?
( S )
1
1
1
0.5
0.5
1.0
1.0
1.0
0.0
0.0
1.0
1
2
2
2
0.5
0.5
4.0
4.0
3.0
1
1
3
4
3
3
3
0.5
0.5
9.0
9.0
6
3
3
6
9
4
1
2
0.66666
0.3333333
1.6666666
2.6666666
1.3333333
0.33333333
0.33333333
2.33333333
2
5
2
3
0.6
0.4
5.3333333
7
3.6666666
1.66666666
2
5
6
6
1
2
0.789473
0.210526
1.631579
2.631579
1.315790
0.315789
0.315789
2.315789
1.842104
7
2
3
0.810166
0.189498
4.940318
6.569626
3.470159
1.470157
1.784805
4.784
5.2474087
8
2
3
1.0
0.0
2.0
0.0
2.0
0.0
0.0
0.0
2.0
9
1
3
0.75
0.25
2.3333333
5
1.6666666
0.6666666
1
4
3
10
1
4
0.8
0.2
3.0
8.0
2
1
2
6
4
?
從該表格中,您可以找到計(jì)算所有四個(gè)未知值(由所有其它值組成)所需的前兩個(gè)方程。 為了得到公式,請(qǐng)注意列 S[U,u]、S[U,d]、S[D,u]、S[D,d]。 非常有趣的是,該列中的數(shù)字在 S[U,u], S[U,d] 列和 S[D,u], S[D,d] 列中具有成對(duì)相同的小數(shù)部分。 此外,您還可以看到 S[U,u] > S[U,d] 及 S[D,d] > S[D,u]。 如果我們成對(duì)地減去這些值并與 m、n 進(jìn)行比較,那么結(jié)果是這個(gè)差值正好等于到上邊界或下邊界的相應(yīng)步階數(shù):
S[U,u] – S[U,d] = n
S[D,d] – S[D,u] = m
由此,我們得到兩個(gè)非常重要的值,它們將有助于判定基礎(chǔ)值。 兩個(gè)方程還不夠。 但我們可以得到另外兩個(gè)方程,這將允許基于略微不同的邏輯來(lái)判定相同的值。 如果我們針對(duì)分形進(jìn)行無(wú)限長(zhǎng)時(shí)間的實(shí)驗(yàn),那么上升和下降步階的出現(xiàn)頻率的比率與相應(yīng)的概率成正比。
若要得到這些比率,我們可做如下假設(shè):
Lim[N0 -- > +infinity] (N0[U]/N0) = p
Lim[N0 -- > +infinity] (N0[D]/N0) = 1-p
Lim[N0 -- > +infinity] (N0[U]/N) = S[UD,u]
Lim[N0 -- > +infinity] (N0[D]/N) = S[UD,d]
Lim[N0 -- > +infinity] (N0/N) = S
N0 – 與初始步階相關(guān)的基礎(chǔ)實(shí)驗(yàn)的數(shù)量(組成一個(gè)復(fù)雜的實(shí)驗(yàn))
N – 由簡(jiǎn)單實(shí)驗(yàn)組成的復(fù)雜實(shí)驗(yàn)的數(shù)量
?赫茲量化股票期貨交易軟件
如果我們將乘數(shù) N0/N0 = 1 引入到 “3” 和 “4” 當(dāng)中,并在里面正確排列分?jǐn)?shù),那么我們得到以下結(jié)果:
Lim[N0 -- > +infinity] (N0[U]/N) = Lim[N0 -- > +infinity] (N0[U]/N0 * N0/N) = Lim[N0 -- > +infinity] (N0[U]/N0)??* Lim[N0 -- > +infinity] (N0/N) =??p*S??= S[UD,u]
Lim[N0 -- > +infinity] (N0[D]/N) = Lim[N0 -- > +infinity] (N0[D]/N0 * N0/N) = Lim[N0 -- > +infinity] (N0[D]/N0)??* Lim[N0 -- > +infinity] (N0/N) = (p-1)*S??= S[UD,d]
如果這些極限中的每一個(gè)都是有限數(shù),則乘積極限可以表示為極限的乘積。 我們的極限符合此條件。 這就是這些公式是如何推導(dǎo)出來(lái)的。 這些公式如下:
S[UD,u] = S*p
S[UD,d] = S*(1-p)
最好用基礎(chǔ)值來(lái)表達(dá)這些值 — 這提供了兩個(gè)缺失的方程來(lái)判定我們所需的一切:
S[U,u] * P[U] + S[D,u] * ( 1 – P[U] ) = S*p
S[U,d] * P[U] + S[D,d] * ( 1 – P[U] ) = S*(1-p)
結(jié)果就是,四個(gè)方程有五個(gè)未知值。 第五個(gè)未知數(shù)是形成完整組的概率之一(到達(dá)邊界之一的概率)。 為了能夠找到所有五個(gè)未知數(shù),我們需要第五個(gè)方程,因?yàn)榉匠探M只有在方程數(shù)等于未知數(shù)時(shí)才能有唯一解。 第五個(gè)方程式可以直觀地得到,因?yàn)槲覀冎浪窍蛏虾拖蛳虏诫A之間的差值。 理想情況下,它就是極限:
Lim[Nt[U] -- > +infinity] ((N0[U] - N0[D])/(Nt[U] - Nt[D]) = 1
Nt[U] =??– 基準(zhǔn)步階的理想數(shù)量,利用基準(zhǔn)向上步階的概率計(jì)算
Nt[D] – 理想的基準(zhǔn)步階數(shù),利用基準(zhǔn)向下步階的概率計(jì)算
N0[U] – 向上的實(shí)際基準(zhǔn)步階數(shù)
N0[D] – 向下的實(shí)際基準(zhǔn)步階數(shù)
在利用跨越邊界概率時(shí),我們能夠發(fā)現(xiàn)類似極限:
Lim[Nb[U] -- > +infinity] ((N0[U] - N0[D])/(Nb[U] - Nb[D]) = 1
Nb[U] – 基準(zhǔn)步階的理想數(shù)量,利用跨越上邊界的概率計(jì)算
Nb[D] – 基準(zhǔn)步階的理想數(shù)量,利用跨越下邊界的概率計(jì)算
N0[U] – 向上的實(shí)際基準(zhǔn)步階數(shù)
N0[D] – 向下的實(shí)際基準(zhǔn)步階數(shù)
利用這兩個(gè)極限,我們可以組成一個(gè)更復(fù)雜的極限,例如它們的和、差或商。 我會(huì)選擇商,這將減少以下表達(dá)式,并完全消除 N0 [U] - N0 [D] 的極限。 通過(guò)將這兩個(gè)極限相除并轉(zhuǎn)換方程,我們得到以下結(jié)果:
P[U] * n – (1 - P[U]) * m = p * S - (1 - p) *S
這就是第五個(gè)方程,從中我們可以找到跨越邊界的概率。 結(jié)果就是,我們得到了一個(gè)由五個(gè)方程組成的系統(tǒng)。 它看起來(lái)像這樣:
?赫茲量化股票期貨交易軟件
S[U,u] – S[U,d] = n
S[D,d] – S[D,u] = m
S[U,u] * P[U] + S[D,u] * ( 1 – P[U] ) = S*p
S[U,d] * P[U] + S[D,d] * ( 1 – P[U] ) = S*(1-p)
P[U] * n – (1 - P[U]) * m = p * S - (1 - p) *S = 2*p*S - S
含有四個(gè)未知數(shù)的初始方程組也提供相同的結(jié)果方程。該系統(tǒng)可通過(guò)經(jīng)典方式依次排除變量求解:
-->??S[U,u] = n + S[U,d] –?排除?“S[U,u]”
-->??S[D,d] = m + S[D,u] –?排除?“S[D,d]”
(n + S[U,d]) * P[U] + S[D,u] * ( 1 – P[U] ) = S*p – 將所有內(nèi)容替換為等式 3
S[U,d] * P[U] + (m + S[D,u]) * ( 1 – P[U] ) = S*(1-p) – 將所有內(nèi)容替換為等式 4
經(jīng)過(guò)這些變換后,我們只需要從方程 4 里減去方程 3,就可以得到與直觀相同的方程。 不幸的是,這個(gè)方程組不允許我們求得剩下的四個(gè)值。 我希望這個(gè)系統(tǒng)能工作,但它并未如愿。 為了理解原因,我不得不用分形數(shù)據(jù)分析表格。 這令我能夠?yàn)檫@四個(gè)量值之一創(chuàng)建一個(gè)公式。 運(yùn)用這個(gè)額外的公式,我們可以找到所有其余的值。 因此,該系統(tǒng)被證明是有用的。
計(jì)算整個(gè)數(shù)學(xué)模型的算法
首先,我們定義逆方程及其使用順序,從而在知道 S[U,u] 的情況下找到所有其它方程。 我采用這個(gè)值是因?yàn)槲以O(shè)法找到了計(jì)算它的相關(guān)公式。 有了這個(gè)值,我們可以運(yùn)用第一個(gè)方程立即找到 S[U,d]:
S[U,d] = S[U,u] – n
然后,將這兩個(gè)值代入方程 3 和 4,并找到其余的值 S[D,u] 和 S[D,d]。 S[D,u] 可從第三個(gè)方程即刻計(jì)算:
S[D,u] = ( S*p – S[U,u] * P[U] ) / ( 1 – P[U] )
現(xiàn)在,我們只需要找到最后一個(gè)未知值的公式。 將得到的 S[U,d] 表達(dá)式代入第四個(gè)方程:
S[D,d] = ( S*(1-p) - S[U,d] * P[U]) / ( 1 – P[U] ) =??( S*(1-p) - ( S[U,u] – n ) * P[U] ) / ( 1 – P[U] )
唯一缺失的元素是 P[U] 值,它可以通過(guò)求解第五個(gè)方程輕松獲得。 我們?nèi)绱藖?lái)做:
P[U] * n – (1 - P[U]) * m = 2*p*S – S
--> P[U] * (n + m)??=???2 * p * S – S + m
--> P[U] = ( 2 * p * S – S + m ) / (n + m)
這里的已知值如下:
n – 到上邊界的步階數(shù)
m – 到下邊界的步階數(shù)
p – 初始向上步階的概率
S[U,u] – 如果跨越上邊界,則平均上升步階數(shù)
P[U] – 跨越上邊界的概率
值 4 可如此計(jì)算:
S[U,u] = Ss[m,n,p] = (n ^ Pn[p] ) * ( m ^ Pm[p] )
Pn[p] = 1 , if p >= 0.5
Pn[p] = ( (1 – p)/0.5 ) ^ K
Pm[p] = 1 , if p <= 0.5
Pm[p] = ( p/0.5 ) ^ K
K 是調(diào)節(jié)函數(shù)平坦度的冪
稍后我們將在一個(gè)單獨(dú)的程序中計(jì)算平坦度系數(shù)。 現(xiàn)在我們需要判定最重要的值。 通過(guò)分析表中的值 S[U,u],我設(shè)法推導(dǎo)出計(jì)算對(duì)稱邊界兩個(gè)值的公式:
S[U,u] = Summ[ i = 0, n] ( i ) ; if n == m
S[U,d] = Summ[ i = 0, n] ( i-1 ) ; if n == m
問(wèn)題是這些公式僅適用于 p = 0.5 和對(duì)稱邊界。 應(yīng)擴(kuò)大公式的概念,從而涵蓋不對(duì)稱邊界。 之后,我們可以將其推廣到不同的 p 值。 在我們進(jìn)行泛化之前,請(qǐng)注意表格中的測(cè)試結(jié)果僅適用于 “m > n”。 如果 “m < n”,公式能針對(duì) “S[D,d], S[D,u]” 操作。 在這種情況下,有必要?jiǎng)?chuàng)建算法的鏡像模擬,來(lái)查找所有其它未知值。
類似地,我們定義逆方程以及它們?cè)?S[D,d] 情況下的使用順序。 再次,運(yùn)用第二個(gè)方程找到值 S[D,u]:
S[D,u] = S[D,d] – m
之后,這兩個(gè)值都可以代入方程 3 和 4,從而找到 S[U,u] 和 S[U,d]。 S[D,u] 可以從第四個(gè)方程即刻計(jì)算:
S[U,d] = ( S*(1-p) - S[D,d] * ( 1 – P[U] ) ) / P[U]
現(xiàn)在,我們只需要找到最后一個(gè)未知值的公式。 將得到的 S[U,d] 表達(dá)式代入第三個(gè)方程:
S[U,u] = ( S*p – ( S[D,d] – m ) * ( 1 – P[U] ) ) / P[U]
結(jié)果就是,我們得到了所有必需數(shù)據(jù),從而在 “n != m” 的情況下推廣公式 S[U,u], S[D,d]。 分析表格數(shù)據(jù)后得到以下數(shù)據(jù):
m > n, p = 0,5
S[U,u] = Summ[ i = 0 … n] ( i ) + (m-1)/3
對(duì)于相反的情況:
m < n, p = 0,5
S[D,d] = Summ[ i = 0 … m] ( i ) + (n-1)/3
對(duì)于具有對(duì)稱邊界的標(biāo)準(zhǔn)情況,計(jì)算更簡(jiǎn)單:
m = n, p = 0,5
S[U,u] = Summ[ i = 0 … n] ( i )
S[D,d] = Summ[ i = 0 … m] ( i )
獲得終極方程的原型
現(xiàn)在我們來(lái)定義一個(gè)已修改函數(shù)的原型,它將描述所有可能的 p 值的 S[U,u], S[D,d]。 為了構(gòu)建一個(gè)基準(zhǔn)工作原型,我們需要 p 軸上的三個(gè)點(diǎn),和一些關(guān)于整體結(jié)構(gòu)的假設(shè)。 我相信考慮兩種類型的通用函數(shù)就足夠了:
Sp[U,u] = S[U,u] ^ K(p)
Sp[D,d] = S[D,d] ^ K(q)
q?= 1-p
第一種類型可以是一個(gè)真實(shí)的工作原型,或某個(gè)標(biāo)記,表明該結(jié)構(gòu)不同,且需另一種邏輯。 它證明,冪函數(shù)能夠?qū)⑺袛?shù)據(jù)整合在一起。 當(dāng)然,會(huì)有更復(fù)雜的原型,也許更準(zhǔn)確,但我認(rèn)為我們的解決方案已相當(dāng)足夠了。 最重要的是理解邏輯。 然而,若您想微調(diào)模型,則可以根據(jù)文章中提供的數(shù)據(jù)進(jìn)行。 我已創(chuàng)建了一個(gè)測(cè)試程序:
編輯搜圖
該程序檢查兩個(gè)原型,S(n,m,p) 和 S[U,u](n,m,p)。 S[D,d](n,m,p) 不需要檢查,因?yàn)檫@個(gè)函數(shù)被鏡像到 S[U,u](n,m,p),因此 S[D,d](n, m,p) = S[U,u](m,n,p-1)。 該圖例示意已找到的原型在效率方面的比較。 每個(gè)原型都在公式中采用相同數(shù)量的權(quán)重和冪系數(shù)的隨機(jī)組合進(jìn)行測(cè)試。 更簡(jiǎn)單的原型在搜索周期數(shù)相同的情況下顯示出更優(yōu)美的結(jié)果。 如有必要,可以進(jìn)行額外的計(jì)算,以了解更復(fù)雜原型的功能有哪些。
檢查后,我們需要定義嵌套函數(shù) “K(p)”、“K(q)” 的內(nèi)部結(jié)構(gòu)。 其內(nèi)部結(jié)構(gòu)必須在點(diǎn) p=0、p=0.5、p=1、q=0、q=0.5、q=1 處提供強(qiáng)制重合。 我們知道這些點(diǎn)中的函數(shù)值,如此可更輕松地選擇所需的原型:
p = 0.5 ; Sp[U,u] = S[U,u] --> K(0.5) = 1 ,
p = 1.0 ; Sp[U,u] = n = S[U,u]^(Log[S[U,u]-->n]) --> K(1.0) = Log[S[U,u]-->n]
p = 0.0 ; Sp[U,u] = 0 = S[U,u]^(-infinity) --> K(0.0) = -infinity
q = 0.5 ; Sp[D,d] = S[D,d] --> K(0.5) = 1 ,
q = 1.0 ; Sp[D,d]??= n = S[D,d]^(Log[S[U,u]-->m]) --> K(1.0) = Log[S[D,d]-->m]
q = 0.0 ; Sp[D,d] = 0 = S[D,d]^(-infinity) --> K(0.0) = -infinity
第一個(gè)和第四個(gè)表達(dá)式表明在隨機(jī)游走點(diǎn)的冪應(yīng)該等于 1。 第二個(gè)和第五個(gè)表達(dá)式表明冪應(yīng)該是這樣的,當(dāng)把一個(gè)值增加時(shí),我們得到 “n” 或 “m”,這可以在上面的結(jié)果表格中看到。 第三個(gè)和第六個(gè)表達(dá)式表明冪應(yīng)該趨于負(fù)無(wú)窮至零。 這個(gè)事實(shí)還意味著值 p 和 q 應(yīng)該在原型的分母當(dāng)中,因?yàn)槌粤銓?dǎo)致諸如無(wú)窮大這樣的值。 我們已經(jīng)有為函數(shù)構(gòu)建冪律原型的經(jīng)驗(yàn)。 我們能夠以此為基礎(chǔ)進(jìn)行修改。 深入分析該問(wèn)題后,我得到了這個(gè)原型:
K(p) = 1 + D * Summ(N) (Kn[0] *??| (( p – 0.5 )/(0.5*p)) | ^ A[0]??+ Kn[1] * | (( p – 0.5 )/(0.5*p)) | ^ A[1] + …. + Kn[N] * | (( p – 0.5 )/(0.5*p)) | ^ A[N])
Kn[0] + Kn[1] + …. Kn[N] = Log[S[U,u]-->n] – 1
D = (( p – 0.5 )/(0.5*p)) / | (( p – 0.5 )/(0.5*p)) |
K(q) = 1 + C * Summ(N) (Km[0] * (( q – 0.5 )/(0.5*q)) ^ B[0]??+ Km[1] * (( q – 0.5 )/(0.5*q)) ^ B[1] + …. + Km[N] * (( q – 0.5 )/(0.5*q)) ^ B[N])
Km[0] + Km[1] + …. Km[N] = Log[S[D,d]-->m] – 1
C = (( q – 0.5 )/(0.5*q)) / | (( q – 0.5 )/(0.5*q)) |
Kn, Km – 相應(yīng)項(xiàng)的權(quán)重
A, B - 項(xiàng)式的敏感度
函數(shù)看起來(lái)很復(fù)雜,但它卻基于簡(jiǎn)單的邏輯。 如果 “p=0.5, q=0.5”,累加符號(hào)之下的所有內(nèi)容都變?yōu)榱?,只剩?1,故而提供條件 “1”、“4”。 如果 “p=1, q=1”,然后累計(jì)和中的相關(guān)分?jǐn)?shù),被提升為冪,變成 1:|(( p – 0.5 )/(0.5*p)) |。 這些項(xiàng)用模數(shù)符號(hào)書(shū)寫(xiě),從而在求冪時(shí)排除函數(shù)的復(fù)數(shù)值。 取而代之,相關(guān)符號(hào)是作為附加因素提供的。 冪不再影響這些項(xiàng),整個(gè)累加和變成 Log[S[U,u]-->n] – 1, Log[S[D,D]-->m] - 1。 通過(guò)將此數(shù)字與 1 相加,我們得到函數(shù)所需的值:Log[S[U,u]-->n], Log[S[D,d]-->m]。
插值多項(xiàng)式是根據(jù)類似的邏輯構(gòu)造的,其中一個(gè)例子是眾所周知的拉格朗日多項(xiàng)式。 我們的多項(xiàng)式設(shè)計(jì)用于特定任務(wù),為其所用而存在。 它的優(yōu)點(diǎn)是對(duì)任務(wù)的完全適應(yīng)性。 為了從這組曲線中發(fā)現(xiàn)所需的函數(shù),我們只需要找到兩個(gè)數(shù)字?jǐn)?shù)組。
數(shù)學(xué)模型實(shí)現(xiàn)與測(cè)試
利用找到的表達(dá)式,我們可以輕松實(shí)現(xiàn)必要的函數(shù)來(lái)計(jì)算任何分形。 我們只需要一個(gè)結(jié)構(gòu),其可作為容納主函數(shù)所返回全部數(shù)據(jù)的容器。 其它函數(shù)都是輔助。 我們只需要最后一個(gè)函數(shù):
struct MathModel1//structure for the first mathematical model?? {
?? double S;//the average number of any steps?? double pU;//the probability that the price will first reach the upper border?? double pD;//the probability that the price will first reach the lower border?? double SUu;//the average number of steps up if the price first reaches the upper border?? double SUd;//the average number of steps down if the price first reaches the upper border?? double SDu;//the average number of steps up if the price first reaches the lower border?? double SDd;//the average number of steps down if the price first reaches the lower border??
?? double SPUu;//the average probable number of steps up if the price first reaches the upper border?? double SPUd;//the average probable number of steps down if the price first reaches the upper border?? double SPDu;//the average probable number of steps up if the price first reaches the lower border?? double SPDd;//the average probable number of steps down if the price first reaches the lower border??
?? double SPUud;//the average probable number of steps in any direction if the price first reaches the upper border?? double SPDud;//the average probable number of steps in any direction if the price first reaches the lower border??
?? double SUDu;//the average number of steps up when reaching any of the borders?? double SUDd;//the average number of steps down when reaching any of the borders?? };double Ss(int n, int m,double p, double K)//prototype of the function of the average number of steps in any direction when reaching any border?? {
?? if (p>=0.5) return n*MathPow(m,MathPow((1-p)/0.5,K));
?? else return MathPow(n,MathPow(p/0.5,K))*m;
?? }double Log(double a, double b)//logarithm function for any base?? {
?? if (MathLog(a) != 0) return MathLog(b)/MathLog(a);
?? else return 0.0;
?? }double SUu(int n,int m)//average number of steps up to the upper border if p=0.5?? {
?? double rez=0.0;
?? if (m>n)
??????{
??????for (int i=0;i<=n;i++) rez+=double(i);
??????rez+=(m-1)/3.0;
??????}
?? if (m==n) for (int i=0;i<=n;i++) rez+=double(i);
?? return rez;
?? }
??
double SDd(int n,int m)//average number of steps down to the lower border if p=0.5?? {
?? double rez=0.0;
?? if (n>m)
??????{
??????for (int i=0;i<=m;i++) rez+=double(i);
??????rez+=(n-1)/3.0;
??????}??
?? if (m==n) for (int i=0;i<=m;i++) rez+=double(i);
?? return rez;
?? }??
double KpnEasy(int n,int m, double p,double A)//power prototype for steps up m>=n?? {
?? double D;
?? if ( p-0.5 != 0 ) D=(p-0.5)/MathAbs(p-0.5);
?? else D=1.0;
?? return 1.0 + D*(Log(SUu(n,m),n) - 1)*MathPow(((p-0.5)/(0.5*p)),A);
?? }double KpmEasy(int n,int m,double p,double A)//power prototype for steps down m<n?? {
?? double D;
?? if ( 0.5-p != 0 ) D=(0.5-p)/MathAbs(0.5-p);
?? else D=1.0;
?? return 1.0 + D*(Log(SDd(n,m),m) - 1)*MathPow(((0.5-p)/(0.5*(1.0-p))),A);
?? }
??
double SUuS(int n,int m,double p, double A)//full prototype for average steps up m>=n?? {
?? return MathPow(SUu(n,m),KpnEasy(n,m,p,A));
?? }
??
double SDdS(int n,int m,double p, double A)//full prototype for average steps down ?n>m?? {
?? return MathPow(SDd(n,m),KpmEasy(n,m,p,A));
?? }??????
??
MathModel1 CalculateMathModel(int n, int m, double p,double K=0.582897,double A=2.189246)//calculating the entire mathematical model?? {
?? MathModel1 Mt;
?? if ( m >= n )
??????{
??????Mt.S=Ss(n,m,p,K);
??????Mt.pU=(2*p*Mt.S-Mt.S+m)/(n+m);
??????Mt.pD=1.0-Mt.pU;
??????Mt.SUu=SUuS(n,m,p,A);
??????Mt.SUd=Mt.SUu-n;
??????if (1.0-Mt.pU != 0.0) Mt.SDu=(Mt.S*p-Mt.SUu*Mt.pU)/(1.0-Mt.pU);
??????else Mt.SDu=0.0;
??????if (1.0-Mt.pU != 0.0) Mt.SDd=(Mt.S*(1.0-p)-Mt.SUd*Mt.pU)/(1.0-Mt.pU);
??????else Mt.SDd=0.0;
??????}
?? else??????{
??????Mt.S=Ss(n,m,p,K);
??????Mt.pU=(2*p*Mt.S-Mt.S+m)/(n+m);
??????Mt.pD=1.0-Mt.pU;
??????Mt.SDd=SDdS(n,m,p,A);
??????Mt.SDu=Mt.SDd-m;
??????if (Mt.pU != 0.0) Mt.SUd=(Mt.S*(1.0-p)-Mt.SDd*(1.0-Mt.pU))/Mt.pU;
??????else Mt.SUd=0.0;
??????if (Mt.pU != 0.0) Mt.SUu=(Mt.S*p-Mt.SDu*(1.0-Mt.pU))/Mt.pU;
??????else Mt.SUu=0.0;??????
??????}
??
?? Mt.SPUu=Mt.SUu*Mt.pU;
?? Mt.SPUd=Mt.SUd*Mt.pU;
?? Mt.SPDu=Mt.SDu*Mt.pD;
?? Mt.SPDd=Mt.SDd*Mt.pD;
??
?? Mt.SPUud=Mt.SPUu+Mt.SPUd;
?? Mt.SPDud=Mt.SPDu+Mt.SPDd;
??
?? Mt.SUDu=Mt.SPUu+Mt.SPDu;
?? Mt.SUDd=Mt.SPUd+Mt.SPDd;
??
?? return Mt;