1
+ import { up_size , down_size , call_buy_payoff , put_buy_payoff , get_rnp } from "wasm-lib" ;
1
2
import { BrowserRouter as Router , Route , Routes , useNavigate , useLocation } from 'react-router-dom' ; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
2
3
import { faArrowsToEye } from '@fortawesome/free-solid-svg-icons' ;
3
4
import React , { useEffect , useState , useRef } from 'react' ;
@@ -11,16 +12,6 @@ function round(value, decimals) {
11
12
return Number ( Math . round ( value + 'e' + decimals ) + 'e-' + decimals ) ;
12
13
}
13
14
14
- const upSize = ( stdDev , deltaT ) => { return Math . exp ( ( stdDev * 0.01 ) * Math . sqrt ( deltaT ) ) } ;
15
-
16
- const downSize = ( stdDev , deltaT ) => { return 1.0 / ( Math . exp ( ( stdDev * 0.01 ) * Math . sqrt ( deltaT ) ) ) } ;
17
-
18
- const callBuyPayoff = ( curPrice , strikePrice ) => { return Math . max ( curPrice - strikePrice , 0 ) } ;
19
-
20
- const putBuyPayoff = ( curPrice , strikePrice ) => { return Math . max ( strikePrice - curPrice , 0 ) } ;
21
-
22
- const getRNP = ( rfr , deltaT , downMove , upMove ) => { return ( Math . exp ( rfr * deltaT ) - downMove ) / ( upMove - downMove ) } ;
23
-
24
15
let rfr = 0.0375 ;
25
16
let totalTime = 20 ;
26
17
@@ -129,8 +120,8 @@ function Dashboard({
129
120
const [ steps , setSteps ] = useState ( 1 ) ;
130
121
const [ deltaT , setDeltaT ] = useState ( steps / steps ) ;
131
122
const [ centerGraphTooltip , setCenterGraphTooltip ] = useState ( false ) ;
132
- const [ upMove , setUpMove ] = useState ( ( ) => upSize ( stdDev , deltaT ) ) ;
133
- const [ downMove , setDownMove ] = useState ( ( ) => downSize ( stdDev , deltaT ) ) ;
123
+ const [ upMove , setUpMove ] = useState ( ( ) => up_size ( stdDev , deltaT ) ) ;
124
+ const [ downMove , setDownMove ] = useState ( ( ) => down_size ( stdDev , deltaT ) ) ;
134
125
const [ riskNeutralProbability , setRiskNeutralProbability ] = useState ( 0 ) ;
135
126
const [ resetCount , setResetCount ] = useState ( 0 ) ;
136
127
const echartRef = useRef ( null ) ;
@@ -153,7 +144,7 @@ function Dashboard({
153
144
154
145
155
146
useEffect ( ( ) => {
156
- let RNP = getRNP ( rfr , deltaT , downMove , upMove )
147
+ let RNP = get_rnp ( rfr , deltaT , downMove , upMove )
157
148
setRiskNeutralProbability ( round ( RNP , 4 ) ) ;
158
149
} , [ downMove , upMove , deltaT ] )
159
150
@@ -168,22 +159,22 @@ function Dashboard({
168
159
// Just need to figure out if we want a fixed time till expiration or just deltaT always = 1 year vs 1 month, weigh options later
169
160
170
161
// Size of up/down moves (functions return a %, stdDev whole number)
171
- let newUpMove = upSize ( stdDev , newDeltaT ) ;
172
- let newDownMove = downSize ( stdDev , newDeltaT ) ;
162
+ let newUpMove = up_size ( stdDev , newDeltaT ) ;
163
+ let newDownMove = down_size ( stdDev , newDeltaT ) ;
173
164
setUpMove ( newUpMove ) ;
174
165
setDownMove ( newDownMove ) ;
175
166
176
- let RNP = getRNP ( rfr , deltaT , downMove , upMove )
167
+ let RNP = get_rnp ( rfr , deltaT , downMove , upMove )
177
168
setRiskNeutralProbability ( round ( RNP , 4 ) ) ;
178
169
}
179
170
180
171
const createGraphData = ( deltaT , curSteps , price , id = 0 , parentId = null , optionType ) => {
181
172
let payoff ;
182
173
if ( optionType === "call" ) {
183
- payoff = callBuyPayoff ( price , strikePrice ) ;
174
+ payoff = call_buy_payoff ( price , strikePrice ) ;
184
175
}
185
176
else if ( optionType === "put" ) {
186
- payoff = putBuyPayoff ( price , strikePrice ) ;
177
+ payoff = put_buy_payoff ( price , strikePrice ) ;
187
178
}
188
179
189
180
let x = ( steps - curSteps ) * 100 * steps ;
0 commit comments