tx · BVzM1SfJ1wAeqv6vYHS7zMKZCFmzuK3hZhxCMv9CdKjp

3MvQVj21fwPXbyXsrVDV2Sf639TcWTsaxmC:  -0.09000000 Waves

2020.01.10 20:23 [848179] smart account 3MvQVj21fwPXbyXsrVDV2Sf639TcWTsaxmC > SELF 0.00000000 Waves

{ "type": 13, "id": "BVzM1SfJ1wAeqv6vYHS7zMKZCFmzuK3hZhxCMv9CdKjp", "fee": 9000000, "feeAssetId": null, "timestamp": 1578677008616, "version": 1, "sender": "3MvQVj21fwPXbyXsrVDV2Sf639TcWTsaxmC", "senderPublicKey": "GfU9G8BJcrUfL2H2QthDHbeLHThimafNuKPuDQm9wbzr", "proofs": [ "5MzJ9zXA8dQFs63xf43dXUNi4ZDznBS4w5s34p8s1VmXkP28jrjEhoU9m1gvcypwiTR6fUWJzaWs5mzngBet9WH" ], "script": "base64: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", "chainId": 84, "height": 848179, "spentComplexity": 0 } View: original | compacted Prev: GbGXhbErYH3w1rE5fusFHMgdDQPPVGQ17sticyZjuFW9 Next: none Diff:
OldNewDifferences
1717 }
1818
1919
20-func coxRossRubinsteinCall (T,S,K,r,sigma) = {
21- let n = 4
22- let deltaT = fraction(T, FACTOR, (365 * n))
23- let sqrtDeltaT = pow(deltaT, FACTORDECIMALS, 5, 1, FACTORDECIMALS, HALFUP)
24- let up = pow(E, FACTORDECIMALS, fraction(sigma, sqrtDeltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
25- let down = fraction(1, (FACTOR * FACTOR), up)
26- let df = pow(E, FACTORDECIMALS, fraction(-(r), deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
27- let pUp = fraction((pow(E, FACTORDECIMALS, fraction(r, deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP) - down), FACTOR, (up - down))
28- let pDown = (FACTOR - pUp)
29- let projectedPrices = calculateProjectedPrices(S, up, down)
20+func calculateInnerPrices (projectedPrices,K) = {
3021 let firstInnerPrice = if ((projectedPrices[0] > (K * FACTOR)))
3122 then (projectedPrices[0] - (K * FACTOR))
3223 else 0
4233 let fifthInnerPrice = if ((projectedPrices[4] > (K * FACTOR)))
4334 then (projectedPrices[4] - K)
4435 else 0
45- let firstLevelFirstValue = fraction((fraction(firstInnerPrice, pUp, FACTOR) + fraction(secondInnerPrice, pDown, FACTOR)), df, FACTOR)
46- let firstLevelSecondValue = fraction((fraction(secondInnerPrice, pUp, FACTOR) + fraction(thirdInnerPrice, pDown, FACTOR)), df, FACTOR)
47- let firstLevelThirdValue = fraction((fraction(thirdInnerPrice, pUp, FACTOR) + fraction(fourthInnerPrice, pDown, FACTOR)), df, FACTOR)
48- let firstLevelFourthValue = fraction((fraction(fourthInnerPrice, pUp, FACTOR) + fraction(fifthInnerPrice, pDown, FACTOR)), df, FACTOR)
49- let secondLevelFirstValue = fraction((fraction(firstLevelFirstValue, pUp, FACTOR) + fraction(firstLevelSecondValue, pDown, FACTOR)), df, FACTOR)
50- let secondLevelSecondValue = fraction((fraction(firstLevelSecondValue, pUp, FACTOR) + fraction(firstLevelThirdValue, pDown, FACTOR)), df, FACTOR)
51- let secondLevelThirdValue = fraction((fraction(firstLevelThirdValue, pUp, FACTOR) + fraction(firstLevelFourthValue, pDown, FACTOR)), df, FACTOR)
52- let thirdLevelFirstValue = fraction((fraction(secondLevelFirstValue, pUp, FACTOR) + fraction(secondLevelSecondValue, pDown, FACTOR)), df, FACTOR)
53- let thirdLevelSecondValue = fraction((fraction(secondLevelSecondValue, pUp, FACTOR) + fraction(secondLevelThirdValue, pDown, FACTOR)), df, FACTOR)
54- let fourthLevel = fraction((fraction(thirdLevelFirstValue, pUp, FACTOR) + fraction(thirdLevelSecondValue, pDown, FACTOR)), df, FACTOR)
55- fourthLevel
36+[firstInnerPrice, secondInnerPrice, thirdInnerPrice, fourthInnerPrice, fifthInnerPrice]
37+ }
38+
39+
40+func calculatFirstLevel (innerPrices,pUp,pDown,df) = {
41+ let firstValue = fraction((fraction(innerPrices[0], pUp, FACTOR) + fraction(innerPrices[1], pDown, FACTOR)), df, FACTOR)
42+ let secondValue = fraction((fraction(innerPrices[1], pUp, FACTOR) + fraction(innerPrices[2], pDown, FACTOR)), df, FACTOR)
43+ let thirdValue = fraction((fraction(innerPrices[2], pUp, FACTOR) + fraction(innerPrices[3], pDown, FACTOR)), df, FACTOR)
44+ let fourthValue = fraction((fraction(innerPrices[3], pUp, FACTOR) + fraction(innerPrices[4], pDown, FACTOR)), df, FACTOR)
45+[firstValue, secondValue, thirdValue, fourthValue]
46+ }
47+
48+
49+func calculateSecondLevel (firstLevel,pUp,pDown,df) = {
50+ let firstValue = fraction((fraction(firstLevel[0], pUp, FACTOR) + fraction(firstLevel[1], pDown, FACTOR)), df, FACTOR)
51+ let secondValue = fraction((fraction(firstLevel[1], pUp, FACTOR) + fraction(firstLevel[2], pDown, FACTOR)), df, FACTOR)
52+ let thirdValue = fraction((fraction(firstLevel[2], pUp, FACTOR) + fraction(firstLevel[3], pDown, FACTOR)), df, FACTOR)
53+[firstValue, secondValue, thirdValue]
54+ }
55+
56+
57+func calculateThirdLevel (secondLevel,pUp,pDown,df) = {
58+ let firstValue = fraction((fraction(secondLevel[0], pUp, FACTOR) + fraction(secondLevel[1], pDown, FACTOR)), df, FACTOR)
59+ let secondValue = fraction((fraction(secondLevel[1], pUp, FACTOR) + fraction(secondLevel[2], pDown, FACTOR)), df, FACTOR)
60+[firstValue, secondValue]
61+ }
62+
63+
64+func coxRossRubinsteinCall (T,S,K,r,sigma) = {
65+ let n = 4
66+ let deltaT = fraction(T, FACTOR, (365 * n))
67+ let sqrtDeltaT = pow(deltaT, FACTORDECIMALS, 5, 1, FACTORDECIMALS, HALFUP)
68+ let up = pow(E, FACTORDECIMALS, fraction(sigma, sqrtDeltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
69+ let down = fraction(1, (FACTOR * FACTOR), up)
70+ let df = pow(E, FACTORDECIMALS, fraction(-(r), deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
71+ let pUp = fraction((pow(E, FACTORDECIMALS, fraction(r, deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP) - down), FACTOR, (up - down))
72+ let pDown = (FACTOR - pUp)
73+ let projectedPrices = calculateProjectedPrices(S, up, down)
74+ let innerPrices = calculateInnerPrices(projectedPrices, K)
75+ let firstLevel = calculatFirstLevel(innerPrices, pUp, pDown, df)
76+ let secondLevel = calculateSecondLevel(firstLevel, pUp, pDown, df)
77+ let thirdLevel = calculateThirdLevel(secondLevel, pUp, pDown, df)
78+ fraction((fraction(thirdLevel[0], pUp, FACTOR) + fraction(thirdLevel[1], pDown, FACTOR)), df, FACTOR)
5679 }
5780
5881
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let FACTOR = 1000000
55
66 let FACTORDECIMALS = 6
77
88 let E = 2718282
99
1010 func calculateProjectedPrices (S,up,down) = {
1111 let firstProjectedPrice = fraction(((S * pow(up, FACTORDECIMALS, 4, 0, FACTORDECIMALS, HALFUP)) * pow(down, FACTORDECIMALS, 0, 0, FACTORDECIMALS, HALFUP)), 1, FACTOR)
1212 let secondProjectedPrice = fraction(((S * pow(up, FACTORDECIMALS, 3, 0, FACTORDECIMALS, HALFUP)) * pow(down, FACTORDECIMALS, 1, 0, FACTORDECIMALS, HALFUP)), 1, FACTOR)
1313 let thirdProjectedPrice = fraction(((S * pow(up, FACTORDECIMALS, 2, 0, FACTORDECIMALS, HALFUP)) * pow(down, FACTORDECIMALS, 2, 0, FACTORDECIMALS, HALFUP)), 1, FACTOR)
1414 let fourthProjectedPrice = fraction(((S * pow(up, FACTORDECIMALS, 1, 0, FACTORDECIMALS, HALFUP)) * pow(down, FACTORDECIMALS, 3, 0, FACTORDECIMALS, HALFUP)), 1, FACTOR)
1515 let fifthProjectedPrice = fraction(((S * pow(up, FACTORDECIMALS, 0, 0, FACTORDECIMALS, HALFUP)) * pow(down, FACTORDECIMALS, 4, 0, FACTORDECIMALS, HALFUP)), 1, FACTOR)
1616 [firstProjectedPrice, secondProjectedPrice, thirdProjectedPrice, fourthProjectedPrice, fifthProjectedPrice]
1717 }
1818
1919
20-func coxRossRubinsteinCall (T,S,K,r,sigma) = {
21- let n = 4
22- let deltaT = fraction(T, FACTOR, (365 * n))
23- let sqrtDeltaT = pow(deltaT, FACTORDECIMALS, 5, 1, FACTORDECIMALS, HALFUP)
24- let up = pow(E, FACTORDECIMALS, fraction(sigma, sqrtDeltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
25- let down = fraction(1, (FACTOR * FACTOR), up)
26- let df = pow(E, FACTORDECIMALS, fraction(-(r), deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
27- let pUp = fraction((pow(E, FACTORDECIMALS, fraction(r, deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP) - down), FACTOR, (up - down))
28- let pDown = (FACTOR - pUp)
29- let projectedPrices = calculateProjectedPrices(S, up, down)
20+func calculateInnerPrices (projectedPrices,K) = {
3021 let firstInnerPrice = if ((projectedPrices[0] > (K * FACTOR)))
3122 then (projectedPrices[0] - (K * FACTOR))
3223 else 0
3324 let secondInnerPrice = if ((projectedPrices[1] > (K * FACTOR)))
3425 then (projectedPrices[1] - (K * FACTOR))
3526 else 0
3627 let thirdInnerPrice = if ((projectedPrices[2] > (K * FACTOR)))
3728 then (projectedPrices[2] - (K * FACTOR))
3829 else 0
3930 let fourthInnerPrice = if ((projectedPrices[3] > (K * FACTOR)))
4031 then (projectedPrices[3] - K)
4132 else 0
4233 let fifthInnerPrice = if ((projectedPrices[4] > (K * FACTOR)))
4334 then (projectedPrices[4] - K)
4435 else 0
45- let firstLevelFirstValue = fraction((fraction(firstInnerPrice, pUp, FACTOR) + fraction(secondInnerPrice, pDown, FACTOR)), df, FACTOR)
46- let firstLevelSecondValue = fraction((fraction(secondInnerPrice, pUp, FACTOR) + fraction(thirdInnerPrice, pDown, FACTOR)), df, FACTOR)
47- let firstLevelThirdValue = fraction((fraction(thirdInnerPrice, pUp, FACTOR) + fraction(fourthInnerPrice, pDown, FACTOR)), df, FACTOR)
48- let firstLevelFourthValue = fraction((fraction(fourthInnerPrice, pUp, FACTOR) + fraction(fifthInnerPrice, pDown, FACTOR)), df, FACTOR)
49- let secondLevelFirstValue = fraction((fraction(firstLevelFirstValue, pUp, FACTOR) + fraction(firstLevelSecondValue, pDown, FACTOR)), df, FACTOR)
50- let secondLevelSecondValue = fraction((fraction(firstLevelSecondValue, pUp, FACTOR) + fraction(firstLevelThirdValue, pDown, FACTOR)), df, FACTOR)
51- let secondLevelThirdValue = fraction((fraction(firstLevelThirdValue, pUp, FACTOR) + fraction(firstLevelFourthValue, pDown, FACTOR)), df, FACTOR)
52- let thirdLevelFirstValue = fraction((fraction(secondLevelFirstValue, pUp, FACTOR) + fraction(secondLevelSecondValue, pDown, FACTOR)), df, FACTOR)
53- let thirdLevelSecondValue = fraction((fraction(secondLevelSecondValue, pUp, FACTOR) + fraction(secondLevelThirdValue, pDown, FACTOR)), df, FACTOR)
54- let fourthLevel = fraction((fraction(thirdLevelFirstValue, pUp, FACTOR) + fraction(thirdLevelSecondValue, pDown, FACTOR)), df, FACTOR)
55- fourthLevel
36+[firstInnerPrice, secondInnerPrice, thirdInnerPrice, fourthInnerPrice, fifthInnerPrice]
37+ }
38+
39+
40+func calculatFirstLevel (innerPrices,pUp,pDown,df) = {
41+ let firstValue = fraction((fraction(innerPrices[0], pUp, FACTOR) + fraction(innerPrices[1], pDown, FACTOR)), df, FACTOR)
42+ let secondValue = fraction((fraction(innerPrices[1], pUp, FACTOR) + fraction(innerPrices[2], pDown, FACTOR)), df, FACTOR)
43+ let thirdValue = fraction((fraction(innerPrices[2], pUp, FACTOR) + fraction(innerPrices[3], pDown, FACTOR)), df, FACTOR)
44+ let fourthValue = fraction((fraction(innerPrices[3], pUp, FACTOR) + fraction(innerPrices[4], pDown, FACTOR)), df, FACTOR)
45+[firstValue, secondValue, thirdValue, fourthValue]
46+ }
47+
48+
49+func calculateSecondLevel (firstLevel,pUp,pDown,df) = {
50+ let firstValue = fraction((fraction(firstLevel[0], pUp, FACTOR) + fraction(firstLevel[1], pDown, FACTOR)), df, FACTOR)
51+ let secondValue = fraction((fraction(firstLevel[1], pUp, FACTOR) + fraction(firstLevel[2], pDown, FACTOR)), df, FACTOR)
52+ let thirdValue = fraction((fraction(firstLevel[2], pUp, FACTOR) + fraction(firstLevel[3], pDown, FACTOR)), df, FACTOR)
53+[firstValue, secondValue, thirdValue]
54+ }
55+
56+
57+func calculateThirdLevel (secondLevel,pUp,pDown,df) = {
58+ let firstValue = fraction((fraction(secondLevel[0], pUp, FACTOR) + fraction(secondLevel[1], pDown, FACTOR)), df, FACTOR)
59+ let secondValue = fraction((fraction(secondLevel[1], pUp, FACTOR) + fraction(secondLevel[2], pDown, FACTOR)), df, FACTOR)
60+[firstValue, secondValue]
61+ }
62+
63+
64+func coxRossRubinsteinCall (T,S,K,r,sigma) = {
65+ let n = 4
66+ let deltaT = fraction(T, FACTOR, (365 * n))
67+ let sqrtDeltaT = pow(deltaT, FACTORDECIMALS, 5, 1, FACTORDECIMALS, HALFUP)
68+ let up = pow(E, FACTORDECIMALS, fraction(sigma, sqrtDeltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
69+ let down = fraction(1, (FACTOR * FACTOR), up)
70+ let df = pow(E, FACTORDECIMALS, fraction(-(r), deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP)
71+ let pUp = fraction((pow(E, FACTORDECIMALS, fraction(r, deltaT, 100), FACTORDECIMALS, FACTORDECIMALS, HALFUP) - down), FACTOR, (up - down))
72+ let pDown = (FACTOR - pUp)
73+ let projectedPrices = calculateProjectedPrices(S, up, down)
74+ let innerPrices = calculateInnerPrices(projectedPrices, K)
75+ let firstLevel = calculatFirstLevel(innerPrices, pUp, pDown, df)
76+ let secondLevel = calculateSecondLevel(firstLevel, pUp, pDown, df)
77+ let thirdLevel = calculateThirdLevel(secondLevel, pUp, pDown, df)
78+ fraction((fraction(thirdLevel[0], pUp, FACTOR) + fraction(thirdLevel[1], pDown, FACTOR)), df, FACTOR)
5679 }
5780
5881
5982 @Callable(i)
6083 func calculatCallPrice (T,S,K,r,sigma) = {
6184 let finalValue = coxRossRubinsteinCall(T, S, K, r, sigma)
6285 WriteSet([DataEntry("finalValue", finalValue)])
6386 }
6487
6588

github/deemru/w8io/3ef1775 
49.29 ms