Пример #1
0
        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));
        }
Пример #3
0
 public MiniPricer(Price initialPrice, Volatility volatility, IProvideJoursFeries joursFeriesProvider,
                   IRandomizeVolatility priceMoveTrendProvider, Basket basket)
 {
     _initialPrice           = initialPrice;
     _volatility             = volatility;
     _joursFeriesProvider    = joursFeriesProvider;
     _priceMoveTrendProvider = priceMoveTrendProvider;
     _basket = basket;
 }
Пример #4
0
 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;
 }