Esempio n. 1
0
        public void CheckZeroVolForward(AssetMarket assetMkt)
        {
            var zcCurve = assetMkt.RiskFreeDiscount;
            var market  = new Market(new[] { zcCurve }, new[] { assetMkt });

            var zeroVol           = new MapRawDatas <DateOrDuration, double>(new[] { new DateOrDuration(assetMkt.RefDate) }, new[] { 0.0 });
            var blackScholesDesc  = new BlackScholesModelDescription(assetMkt.Asset.Name, zeroVol, true);
            var mcConfig          = new MonteCarloConfig(1, RandomGenerators.GaussianSobol(SobolDirection.Kuo3));
            var blackScholesModel = ModelFactory.Instance.Build(blackScholesDesc, market);

            var fwdDates = new[] { Duration.Month, 6 * Duration.Month, Duration.Year, 2 * Duration.Year, 5 * Duration.Year }
            .Map(d => assetMkt.RefDate + d);

            IProduct    fwdLeg      = ForwardLeg(fwdDates);
            PriceResult priceResult = (PriceResult)McPricer.WithDetails(mcConfig).Price(fwdLeg, blackScholesModel, market);

            double[] fwds = priceResult.Details.Map(kv => kv.Item3.Value);

            var assetFwdCurve = assetMkt.Forward();

            double[] refFwds = fwdDates.Map(d => assetFwdCurve.Fwd(d) * zcCurve.Zc(d));

            foreach (var i  in Enumerable.Range(0, fwdDates.Length))
            {
                var err = Math.Abs(fwds[i] / refFwds[i] - 1.0);
                Assert.LessOrEqual(err, 20.0 * DoubleUtils.MachineEpsilon);
            }
        }
        public void Test()
        {
            var market = Market();

            const double lambda   = 0.01;
            var          sigma    = new StepFunction(new[] { 0.0, 1.0, 2.0 }, new[] { 0.007, 0.004, 0.0065 }, 0.0);
            var          hw1      = new Hw1Model(TimeMeasure.Act365(market.RefDate), Currency.Eur, lambda, sigma);
            var          mcConfig = new MonteCarloConfig(20000,
                                                         RandomGenerators.GaussianSobol(SobolDirection.JoeKuoD5));

            var mcPricer = McPricer.WithDetails(mcConfig);

            var fixedLeg      = FixedLeg(market.RefDate);
            var mcPriceResult = (PriceResult)mcPricer.Price(fixedLeg, hw1, market);

            var mcCoupons  = mcPriceResult.Details.Map(p => p.Item3.Value);
            var refCoupons = mcPriceResult.Details.Map(pi => market.DiscountCurve(pi.Item2.Financing).Zc(pi.Item2.Date));

            var errAbs = Math.Abs(mcCoupons.Sum() - refCoupons.Sum());

            Assert.LessOrEqual(errAbs, 7.0e-5);

            var errRel = Math.Abs(mcCoupons.Sum() / refCoupons.Sum() - 1.0);

            Assert.LessOrEqual(errRel, 8.0e-6);
        }
        public void Should_Generate_Random_64_Bit_Number()
        {
            var rg          = new RandomGenerators();
            var number64Bit = rg.GenerateRandom64BitNumberFromByteLength(32);

            Assert.IsTrue(number64Bit > 0);
            Assert.IsTrue(number64Bit.ToString().Length < 20);
        }
        public void Should_Generate_Random_32_Bit_Number()
        {
            var rg          = new RandomGenerators();
            var number32Bit = rg.GenerateRandom32BitNumberFromByteLength(16);

            Assert.IsTrue(number32Bit > 0);
            Assert.IsTrue(number32Bit.ToString().Length < 11);
        }
        public void Should_Generate_256Bit_Hexadecimal_String()
        {
            var rg  = new RandomGenerators();
            var str = rg.Generate256BitKey();

            Assert.IsNotNull(str);
            Assert.IsTrue(str.Length == 64);
        }
        public void Should_Generate_Random_Bytes()
        {
            var rg             = new RandomGenerators();
            var bytesContainer = new byte[32];

            rg.GenerateRandomBytes(bytesContainer);

            Assert.IsTrue(bytesContainer.Length == 32);
        }
        public void Should_Generate_Random_Hexadecimal_String_From_Byte_Array_Length()
        {
            var       rg         = new RandomGenerators();
            const int byteLength = 4;
            var       hexString  = rg.GenerateHexKeyFromByteLength(byteLength);

            Assert.IsNotNull(hexString);
            Assert.IsTrue(hexString.Length == byteLength * 2);
        }
Esempio n. 8
0
        private static MonteCarloConfig BuildMonteCarloConfig(object[,] bag)
        {
            int      nbPaths = bag.ProcessScalarInteger("NbPaths");
            Duration mcStep  = bag.Has("McStep") ? bag.ProcessScalarDateOrDuration("McStep").Duration : null;

            //TODO investigate which generator is the best
            var randomGenerator = RandomGenerators.GaussianSobol(SobolDirection.Kuo3);

            return(new MonteCarloConfig(nbPaths, randomGenerator, mcStep));
        }
        public void HashPassword_Should_Return_Success_And_PasswordHashingData_Object()
        {
            var rg  = new RandomGenerators();
            var phs = new PasswordHashingSvc(rg.Generate512BitKey());

            const string password = "******";
            var          hashed   = phs.HashPassword(password);

            Assert.IsTrue(hashed.IsSuccessful);
            Assert.AreEqual(hashed.Value.HashedPassword.Length, 128);
        }
        public void HashPassword_Should_Return_Different_HashedValues_For_The_Same_Value_Computed_Twice()
        {
            var rg  = new RandomGenerators();
            var phs = new PasswordHashingSvc(rg.Generate512BitKey());

            const string password      = "******";
            var          hashedResult1 = phs.HashPassword(password);
            var          hashedResult2 = phs.HashPassword(password);

            Assert.AreNotEqual(hashedResult1.Value.HashedPassword, hashedResult2.Value.HashedPassword);
        }
Esempio n. 11
0
        public void TestCallBachelier(int dim, SobolDirection direction)
        {
            var gaussianGen = RandomGenerators.GaussianSobol(direction).Build(dim);

            var chrono = new Stopwatch();

            chrono.Start();

            var       atmCalls    = new double[dim];
            var       strikeCall1 = new double[dim];
            var       strikeCall2 = new double[dim];
            var       strikePut1  = new double[dim];
            var       strikePut2  = new double[dim];
            const int nbPaths     = 1000000;

            for (int index = 0; index < nbPaths; index++)
            {
                var sample = gaussianGen.Next();
                for (int i = 0; i < dim; i++)
                {
                    var gaussian = sample[i];
                    atmCalls[i]    += Math.Max(0.0, gaussian);
                    strikeCall1[i] += Math.Max(0.0, gaussian - 1.0);
                    strikeCall2[i] += Math.Max(0.0, gaussian - 2.0);
                    strikePut1[i]  += Math.Max(0.0, -1.0 - gaussian);
                    strikePut2[i]  += Math.Max(0.0, -2.0 - gaussian);
                }
            }
            for (int i = 0; i < dim; i++)
            {
                atmCalls[i]    /= nbPaths;
                strikeCall1[i] /= nbPaths;
                strikeCall2[i] /= nbPaths;
                strikePut1[i]  /= nbPaths;
                strikePut2[i]  /= nbPaths;
            }

            chrono.Stop();
            Console.WriteLine("Elapsed " + chrono.Elapsed);

            var refAtmCalls    = atmCalls.Select(c => BachelierOption.Price(0.0, 0.0, 1.0, 1.0, 1)).ToArray();
            var refStrikeCall1 = atmCalls.Select(c => BachelierOption.Price(0.0, 1.0, 1.0, 1.0, 1)).ToArray();
            var refStrikeCall2 = atmCalls.Select(c => BachelierOption.Price(0.0, 2.0, 1.0, 1.0, 1)).ToArray();
            var refStrikePut1  = atmCalls.Select(c => BachelierOption.Price(0.0, -1.0, 1.0, 1.0, -1)).ToArray();
            var refStrikePut2  = atmCalls.Select(c => BachelierOption.Price(0.0, -2.0, 1.0, 1.0, -1)).ToArray();

            UnitTestUtils.EqualDoubleArray(atmCalls, refAtmCalls, 2.0e-5, true);
            UnitTestUtils.EqualDoubleArray(strikeCall1, refStrikeCall1, 8.0e-5, true);
            UnitTestUtils.EqualDoubleArray(strikeCall2, refStrikeCall2, 6.0e-4, true);
            UnitTestUtils.EqualDoubleArray(strikePut1, refStrikePut1, 8.0e-5, true);
            UnitTestUtils.EqualDoubleArray(strikePut2, refStrikePut2, 6.0e-4, true);
        }
Esempio n. 12
0
    public static void Main(string[] args)
    {
        RandomGenerators r = new RandomGenerators(125);

        for (int i = 0; i < 50; i++)
        {
            Console.WriteLine("lcg: " + r.next_LCG());
            Console.WriteLine("bbs: " + r.next_BlumBlumShub());
            Console.WriteLine("mwc: " + r.next_MWC());
            Console.WriteLine("xor: " + r.next_xorshift());
            Console.WriteLine("***********");
        }
    }
        public void ComputePasswordAndSaltBytes_Should_Generate_Sha512_ByteArray()
        {
            var rg  = new RandomGenerators();
            var phs = new PasswordHashingSvc(rg.Generate512BitKey());

            var salt = new byte[32];

            rg.GenerateRandomBytes(salt);
            var rand          = new Random();
            var computeResult = phs.ComputePasswordAndSaltBytes(salt, "my password 1234 #*@", rand.Next(8200, 14000));

            Assert.IsTrue(computeResult.IsSuccessful);
            Assert.AreEqual(computeResult.Value.Length, 64);
        }
 public UsersSeed()
 {
     Moderators = new List<User>();
     Advisers = new List<User>();
     Teachers = new List<User>();
     Students = new List<User>();
     rand = new Random();
     Generator = new UserGameDetailsGenerator();
     RandomGenerator = new RandomGenerators();
     experience = 0;
     level = 0;
     firstName = "";
     lastName = "";
 }
 public static async Task CreateMockAccount()
 {
     try
     {
         var locator    = RandomGenerators.GetRandomString(5);
         var secret     = RandomGenerators.GetRandomString(5);
         var invitation = RandomGenerators.GetRandomString(5);
         _authenticator = await Authenticator.CreateAccountAsync(locator, secret, invitation);
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.Message);
         throw ex;
     }
 }
Esempio n. 16
0
        async Task StartOrJoinSession()
        {
            _activeUser = new User {
                Id = RandomGenerators.GenerateRandomId(), Name = _userName
            };
            var request = new StartJoinSessionRequest {
                SessionId = SessionId, User = _activeUser
            };

            //Call Start Or Join
            var session = await Http.PostJsonAsync <Session>("Session/startOrJoin", request);

            var action = new LoadSessionAction(_activeUser, session);

            Dispatcher.Dispatch(action);

            NavManager.NavigateTo($"/activeSession/{SessionState.Value.Session.Id}");
        }
        public void Should_Generate_Random_Base64_String_From_Byte_Array_Length()
        {
            var       rg           = new RandomGenerators();
            const int byteLength   = 32;
            var       base64String = rg.GenerateBase64KeyFromByteLength(byteLength);
            bool      isBase64;

            byte[] fromBase64String;
            try
            {
                fromBase64String = Convert.FromBase64String(base64String);
                isBase64         = true;
            }
            catch (Exception)
            {
                isBase64         = false;
                fromBase64String = null;
            }

            Assert.IsNotNull(base64String);
            Assert.IsTrue(isBase64);
            Assert.IsNotNull(fromBase64String);
        }
Esempio n. 18
0
 public IParamsView CreateView(RandomGenerators.Params.IRandomNetGenParamMgr mgr)
 {
     return new RandomNetGenParamsCtrl(mgr.ParentId, mgr.Bag as RandomGenerators.Params.IRandomNetGenParamBag);
 }