public Volatility Randomrize(Volatility volatility) { var next = Random.Next(maxValue: 3); int sign; switch ((PriceMoveTrend)next) { case PriceMoveTrend.Down: sign = -1; break; case PriceMoveTrend.Flat: sign = 0; break; case PriceMoveTrend.Up: sign = 1; break; default: throw new ArgumentOutOfRangeException(); } return(new Volatility(volatility.Value * sign)); }
public Volatility Randomrize(Volatility volatility) { var buffer = new double[_largeNumber]; Parallel.For(0, _largeNumber, x => { buffer[x] = _volatilityProducer(_volatilitySeed).Value; }); return(new Volatility(buffer.Sum() / _largeNumber)); }
public MiniPricer(Price initialPrice, Volatility volatility, IProvideJoursFeries joursFeriesProvider, IRandomizeVolatility priceMoveTrendProvider, Basket basket) { _initialPrice = initialPrice; _volatility = volatility; _joursFeriesProvider = joursFeriesProvider; _priceMoveTrendProvider = priceMoveTrendProvider; _basket = basket; }
public MiniPricer(Price initialPrice, Volatility volatility, IProvideJoursFeries joursFeriesProvider, IRandomizeVolatility priceMoveTrendProvider) : this(initialPrice, volatility, joursFeriesProvider, priceMoveTrendProvider, new EmptyBasket()) { }
public MonteCarloVolatilityRandomizer(int largeNumber, Volatility volatilitySeed, Func <Volatility, Volatility> volatilityProducer) { _largeNumber = largeNumber; _volatilitySeed = volatilitySeed; _volatilityProducer = volatilityProducer; }