Beispiel #1
0
        public async Task CorrelationIdStaysTheSameAfterBloodyAsyncCalls()
        {
            var id = Correlation.GetId();
            await Task.Delay(100);

            var id2 = Correlation.GetId(setIfNotThere: false);

            Assert.Equal(id, id2);
        }
        public void TestCleanup()
        {
            ICallContext context = CallContextManagerInstance.CallContextOverride;

            ICallContext existingContext = context.ExistingCallContext();

            Correlation.CorrelationEnd();
            context.EndCallContext();
        }
Beispiel #3
0
        public void Correlation_constructor_test()
        {
            Correlation correlation = new Correlation(strategyHeader, date, value);

            Assert.AreEqual(strategyHeader, correlation.Strategy);
            Assert.AreEqual(strategyHeader.Id, correlation.StrategyId);
            Assert.AreEqual(date, correlation.DateTime);
            Assert.AreEqual(value, correlation.Value);
        }
        public void SpearmanCorrelationTest()
        {
            var dataA = _data["lottery"].Data.Take(200);
            var dataB = _data["lew"].Data.Take(200);

            var corr = Correlation.Spearman(dataA, dataB);

            AssertHelpers.AlmostEqual(-0.0382856977898528, corr, 14);
        }
Beispiel #5
0
        public void CorrelationStart_WithNullData_ShouldStartNewCorrelation()
        {
            Correlation = new Correlation(new MemoryCorrelationHandler(), CallContextManagerInstance, MachineInformation);
            Correlation.CorrelationStart(null);

            Assert.NotNull(Correlation.CurrentCorrelation);

            CallContextManagerInstance.CallContextOverride.EndCallContext();
        }
Beispiel #6
0
        /// <summary>
        /// End a request
        /// </summary>
        private void EndRequest()
        {
            ICallContext context = CallContextManagerInstance.CallContextOverride;

            ICallContext existingContext = context.ExistingCallContext();

            Correlation.CorrelationEnd();
            context.EndCallContext();
        }
        public void PearsonCorrelationTest()
        {
            var dataA = _data["lottery"].Data.Take(200);
            var dataB = _data["lew"].Data.Take(200);

            var corr = Correlation.Pearson(dataA, dataB);

            AssertHelpers.AlmostEqual(-0.029470861580726, corr, 14);
        }
Beispiel #8
0
    // Executed when a new order has been created
    public PendingOrder RiskManagement(PendingOrder pendingOrder, AgentState state)
    {
        //Check if we have enough data
        if (!Agent.Bars[Agent.Security, (int)BarInterval.Day, -15].IsValid)
        {
            return(null);
        }
        //Check if we can calculate the correlation
        else if (!corr.ContainsKey(Agent.Security))
        {
            return(null);
        }

        //Calculate correlation for each symbol
        var basevalues = new List <double>();

        for (int i = 0; i < 15; i++)
        {
            basevalues.Add((double)Agent.Bars[Agent.Security, (int)BarInterval.Day, i].Close);
        }

        //Get all symbol data
        foreach (var symbol in corr.Keys.ToArray())
        {
            var values = new List <double>();
            for (int i = 0; i < 15; i++)
            {
                values.Add((double)Agent.Bars[symbol, (int)BarInterval.Day, i].Close);
            }

            //calculate correlation coeff
            corr[symbol] = Correlation.Pearson(basevalues.ToArray(), values.ToArray());
        }

        //Get item with the highest corr
        var max = corr
                  .Where(x => x.Key != pendingOrder.Order.Security)
                  .Max(n => n.Value);
        var security = corr
                       .Where(x => x.Value == max).FirstOrDefault().Key;

        //Remove old position
        if (lastsecurity != security && !Agent.Positions[security].IsFlat)
        {
            SubmitOrder(CreateOrder(lastsecurity.Name, Direction.Flat, Agent.Positions[security].FlatQuantity));
        }

        //Return our current order
        lastsecurity = security;
        decimal quantity = pendingOrder.Order.Quantity * (arbitrage / 100M);

        quantity  = quantity > 0.01M ? quantity : 0.01M;
        quantity += Math.Abs(Agent.Positions[security].FlatQuantity);

        return(CreateOrder(security.Name, pendingOrder.Order.Direction == Direction.Long ? Direction.Short : Direction.Long, quantity, 0, 0));
    }
    public void checkCorrelation(Evidence e2)
    {
        isCorrelating = false;

        if (e2 == null)
        {
            Debug.Log("Check Correlation WARNING: argument 'Evidence e2' is null!");
            return;
        }
        Debug.Log("Concluding a correlation with " + e2.id);

        Evidence e1 = correlationPiece1;

        if (e1.id == e2.id)
        {
            GameObject.Find("DialogueName").GetComponent <Text>().text    = "Correlation cancelled";
            GameObject.Find("DialogueContent").GetComponent <Text>().text = "";
            Debug.Log("Cancelling correlation");
            return;
        }

        bool isValidCorrelation = false;
        // check if the static variable correlationPiece1 correlates with e2
        // then repsond appropriately

        Correlation foundC = null;

        foreach (Correlation c in XMLRead.staticXMLR.validCorrelations)
        {
            if ((c.evidence0 == e1.id && c.evidence1 == e2.id) || (c.evidence0 == e2.id && c.evidence1 == e1.id))
            {
                isValidCorrelation = true;
                foundC             = c;
                break;
            }
        }

        Debug.Log("Valid correlation?" + (isValidCorrelation ? "Yes" : "No"));
        GameObject.Find("DialogueName").GetComponent <Text>().text    = isValidCorrelation ? "Correlation successful" : "Incorrect correlation";
        GameObject.Find("DialogueContent").GetComponent <Text>().text = "";

        if (isValidCorrelation)
        {
            // uIManager.changeFactionValue("police", 10);
            // uIManager.changeFactionValue("mob", 10);
            uIManager.changeFactionValue("stress", 10);

            GameData.AddID(foundC.id);
        }
        else
        {
            // uIManager.changeFactionValue("police", -10);
            // uIManager.changeFactionValue("mob", -10)
            uIManager.changeFactionValue("stress", -25);
        }
    }
Beispiel #10
0
 public void Correlate()
 {
     if (SelectedSignalCorrelate1 != null && SelectedSignalCorrelate1.HasData() && SelectedSignalCorrelate2 != null && SelectedSignalCorrelate2.HasData())
     {
         SampledSignal signal = new SampledSignal();
         signal.PointsY = Correlation.ComputeSignal(SelectedSignalCorrelate1.PointsY, SelectedSignalCorrelate2.PointsY);
         signal.Name    = $"({SelectedSignalCorrelate1.Name})C({SelectedSignalCorrelate2.Name})";
         SignalCreator.AddSignal(signal);
     }
 }
Beispiel #11
0
        public void PearsonCorrelationConsistentWithCovariance()
        {
            var dataA = _data["lottery"].Data.Take(200).ToArray();
            var dataB = _data["lew"].Data.Take(200).ToArray();

            var direct     = Correlation.Pearson(dataA, dataB);
            var covariance = dataA.Covariance(dataB) / (dataA.StandardDeviation() * dataB.StandardDeviation());

            AssertHelpers.AlmostEqual(covariance, direct, 14);
        }
Beispiel #12
0
        public static double GetCorrelationBetween(TimeSeries ts1, TimeSeries ts2)
        {
            DateTime[] commonDomain = ts1.GetCommonDates(ts2)
                                      .OrderBy(date => date)
                                      .ToArray();
            IEnumerable <double> x = commonDomain.Select(date => ts1[date]);
            IEnumerable <double> y = commonDomain.Select(date => ts2[date]);

            return(Correlation.Pearson(x, y));
        }
        private static double LogReturnsCorrelation(ReadOnlySpan <double> priceSims1Start, ReadOnlySpan <double> priceSims1End,
                                                    ReadOnlySpan <double> priceSims2Start, ReadOnlySpan <double> priceSims2End)
        {
            Vector <double> logChanges1 = LogChange(priceSims1Start, priceSims1End);
            Vector <double> logChanges2 = LogChange(priceSims2Start, priceSims2End);

            double correlation = Correlation.Pearson(logChanges1, logChanges2);

            return(correlation);
        }
Beispiel #14
0
 /// <summary>
 /// Adds correlation header *unless* the passed value is null (allows for easier use when chaining methods calls)
 /// </summary>
 /// <param name="correlation"></param>
 /// <returns></returns>
 public WebRequestBuilder WithCorrelation(Correlation correlation, bool setIfNull = true)
 {
     if (correlation != null || setIfNull)
     {
         _webRequest.Headers[CorrelationKey] = JsonConvert.SerializeObject(correlation, new JsonSerializerSettings {
             ContractResolver = new CamelCasePropertyNamesContractResolver()
         });
     }
     return(this);
 }
Beispiel #15
0
        public async Task CorrelationIdStaysTheSameAfterBloodyAsyncCallsAndPublishEtw()
        {
            var id = Correlation.GetId();
            await Task.Delay(100);

            InstrumentationEventSource.Instance.WriteInstrumentationEvent("blah", "ff", 12, "gfg", id.ToString());
            var id2 = Correlation.GetId(setIfNotThere: false);

            Assert.Equal(id, id2);
        }
Beispiel #16
0
        public void ConstantWeightedPearsonCorrelationTest()
        {
            var dataA   = _data["lottery"].Data.Take(200);
            var dataB   = _data["lew"].Data.Take(200);
            var weights = Generate.Repeat(200, 2.0);

            var corr  = Correlation.Pearson(dataA, dataB);
            var corr2 = Correlation.WeightedPearson(dataA, dataB, weights);

            AssertHelpers.AlmostEqual(corr, corr2, 14);
        }
Beispiel #17
0
        /// <summary>Create a best-fit monic for the given points</summary>
        public static Monic FromLinearRegression(IList <v2> points)
        {
            var corr = new Correlation();

            foreach (var pt in points)
            {
                corr.Add(pt.x, pt.y);
            }

            return(corr.LinearRegression);
        }
        public void validateObviousData()
        {
            var axisX = new double[] { 1, 2, 3, 4, 5 };
            var axisY = new double[] { 2, 4, 9, 16, 25 };
            var correlationByPearsman  = Correlation.Pearson(axisX, axisY);
            var correlationBySpearsman = Correlation.Spearman(axisX, axisY);

            Assert.IsTrue(correlationByPearsman > 0.9, $"Shitty library: pearsman validation failed");
            Assert.IsTrue(correlationBySpearsman > 0.9, $"Shitty library: spearsman validation failed");
            Warn.If(correlationByPearsman <0.9 && correlationByPearsman> 0.8, $"Better, but shitty, pearsman correlation");
            Warn.If(correlationBySpearsman <0.9 && correlationBySpearsman> 0.8, $"Better, but shitty, spearsman correlation");
        }
        /// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        protected override void OnBarUpdate()
        {
            if (CurrentBarArray[0] > 0 && CurrentBarArray[1] > 0 && CurrentBarArray[2] > 0)
            {
                if (BarsInProgress == 0)
                {
                    CloseOfOne.Set(Closes[1][0]);
                    CloseOfTwo.Set(Closes[2][0]);

                    double SumOfOne = 0;
                    int    x        = 0;
                    while (x < CorrelPeriod)
                    {
                        SumOfOne = SumOfOne + CloseOfOne[x];
                        x        = x + 1;
                    }

                    double SumOfTwo = 0;
                    int    y        = 0;
                    while (y < CorrelPeriod)
                    {
                        SumOfTwo = SumOfTwo + CloseOfTwo[y];
                        y        = y + 1;
                    }

                    double SumOfOneSq = 0;
                    int    a          = 0;
                    while (a < CorrelPeriod)
                    {
                        SumOfOneSq = SumOfOneSq + (CloseOfOne[a] * CloseOfOne[a]);
                        a          = a + 1;
                    }

                    double SumOfTwoSq = 0;
                    int    b          = 0;
                    while (b < CorrelPeriod)
                    {
                        SumOfTwoSq = SumOfTwoSq + (CloseOfTwo[b] * CloseOfTwo[b]);
                        b          = b + 1;
                    }

                    double Product = 0;
                    int    z       = 0;
                    while (z < CorrelPeriod)
                    {
                        Product = Product + (CloseOfOne[z] * CloseOfTwo[z]);
                        z       = z + 1;
                    }

                    Correlation.Set(((CorrelPeriod * Product) - (SumOfOne * SumOfTwo)) / Math.Sqrt((((CorrelPeriod * SumOfOneSq) - (SumOfOne * SumOfOne)) * ((CorrelPeriod * SumOfTwoSq) - (SumOfTwo * SumOfTwo)))));
                }
            }
        }
Beispiel #20
0
        public void Correlation_ToString_test()
        {
            Correlation correlation = new Correlation(strategyHeader, date, value);

            CultureInfo ci = CultureInfo.InvariantCulture;

            string expect = String.Format("Correlation: {0}, {1}, {2}", correlation.StrategyId,
                                          correlation.DateTime.ToString(ci),
                                          correlation.Value.ToString("0.0000", ci));

            Assert.AreEqual(expect, correlation.ToString());
        }
Beispiel #21
0
        private Correlation <Vector2>[] getFilteredCorrespondances(Heap assoc)
        {
            int cnew = ((int)(assoc.Count * 100 * F)) / 100;

            Correlation <Vector2>[] ret = new Correlation <Vector2> [cnew];
            for (int i = 0; i < cnew; i++)
            {
                ret[i] = (Correlation <Vector2>)assoc[assoc.Count - i - 1];
            }

            return(ret);
        }
 private void CountCorreletionInSeries()
 {
     for (int i = 0; i < AmountOfElements / 2; i++)
     {
         var coef = CountCorreletion(i);
         Correlation.Add(coef);
         if (CheckCoefOfCorr(i, coef) == 0)
         {
             IsCoefCorrSignificant = false;
         }
     }
 }
Beispiel #23
0
        public void SampleTest()
        {
            //Variances and Means
            double[] Sdv  = new double[2];
            double[] Mean = new double[2];
            for (int i = 0; i < 2; i++)
            {
                Sdv[i]  = RandomVar();
                Mean[i] = 5 * rnd.NextDouble();
            }

            //Cross Variance
            double rho = 1.0 - RandomVar();

            DensityLn <double[]> pdfLn = new DensityLn <double[]>(x => LogDen(x, Sdv, Mean, rho));


            HybridMC Hybrid = new HybridMC(new double[2] {
                0, 0
            }, pdfLn, 10, 0.1, 1000);

            Hybrid.BurnInterval = 0;

            int SampleSize = 10000;

            double[][] Sample     = Hybrid.Sample(SampleSize);
            double[][] NewSamples = ArrangeSamples(SampleSize, Sample);

            double[] Convergence = new double[2];
            double[] SampleMean  = new double[2];
            double[] SampleSdv   = new double[2];


            for (int i = 0; i < 2; i++)
            {
                Convergence[i] = 1 / Math.Sqrt(MCMCDiagnostics.EffectiveSize(Sample, x => x[i]));
                DescriptiveStatistics Stats = new DescriptiveStatistics(NewSamples[i]);
                SampleMean[i] = Stats.Mean;
                SampleSdv[i]  = Stats.StandardDeviation;
            }
            double SampleRho = Correlation.Pearson(NewSamples[0], NewSamples[1]);

            for (int i = 0; i < 2; i++)
            {
                string index = i.ToString();
                Assert.AreEqual(Mean[i], SampleMean[i], 10 * Convergence[i], index + "Mean");
                Assert.AreEqual(SampleSdv[i] * SampleSdv[i], Sdv[i] * Sdv[i], 10 * Convergence[i], index + "Standard Deviation");
            }

            double ConvergenceRho = 1 / Math.Sqrt(MCMCDiagnostics.EffectiveSize(Sample, x => (x[0] - SampleMean[0]) * (x[1] - SampleMean[1])));

            Assert.AreEqual(SampleRho * SampleSdv[0] * SampleSdv[1], rho * Sdv[0] * Sdv[1], 10 * ConvergenceRho, "Rho");
        }
Beispiel #24
0
    static void Main()
    {
        double [] a = new double [5] {
            1, 2, 3, 4, 5
        };
        double [] b = new double [5] {
            10, 9, 7, 5, 2
        };
        double rho = Correlation.Spearman(a, b);

        Console.WriteLine("Spearman Rho is {0}", rho);
    }
Beispiel #25
0
        public void CurrentCorrelation_WithNoActiveCorrelation_ShouldReturnNull()
        {
            Correlation = new Correlation(new MemoryCorrelationHandler(), CallContextManagerInstance, MachineInformation);
            Correlation.CorrelationStart(new CorrelationData());

            while (CallContextManagerInstance.CallContextHandler(MachineInformation).ExistingCallContext() != null)
            {
                CallContextManagerInstance.CallContextHandler(MachineInformation).EndCallContext();
            }

            Assert.Null(Correlation.CurrentCorrelation);
        }
        private static WorkflowRun CreateWorkflowRun(WorkflowRunTrigger trigger)
        {
            var correlation = new Correlation(BogusGenerator.Random.String().OrNull(BogusGenerator)).OrNull(BogusGenerator);
            var workflowRun = new WorkflowRun(
                name: BogusGenerator.Internet.DomainWord(),
                startTime: BogusGenerator.Date.Recent(),
                status: GenerateStatus(),
                error: BogusGenerator.Random.Bytes(10).OrNull(BogusGenerator),
                correlation: correlation,
                trigger: trigger);

            return(workflowRun);
        }
Beispiel #27
0
        private static double PearsonR(SparseVector Vector_a, SparseVector Vector_b)
        {
            double correlation = Correlation.Pearson(Vector_a, Vector_b);

            if (double.IsNaN(correlation))
            {
                // This means one of the row has 0 standard divation,
                // it does not correlate to anyone
                // so I assign the correlatino to be 0. however, strictly speaking, it should be left NaN
                correlation = 0;
            }
            return(correlation);
        }
Beispiel #28
0
        public static double[] Test2()
        {
            var frame3 = Generators.InpulseSignal(1024, 128, 10);
            var frame2 = Generators.Sin(1024, 4, 1);
            var frame  = Generators.Sin(1024, 64, 1);
            //for (var i = 0; i < frame.Length; i++)
            //{
            //    frame[i] += frame2[i];// + frame3[i];
            //}
            var func = Correlation.AutoCorrelation(TableFunction.TableToFunction(frame, 1, 0, 1024), 1, 0, 1024);

            return(func);
        }
        internal static double MeasureCorrelation(double[] totals, double[] goods)
        {
            if (totals.Length <= 1 || goods.Length <= 1)
            {
                return(0);
            }
            var result = Math.Round(Correlation.Pearson(totals, goods), 3);

            if (double.IsNaN(result))
            {
                return(0);
            }
            return(result);
        }
Beispiel #30
0
        private string GetCorrelation(Session currentSession)
        {
            var frametimes          = currentSession.FrameTimes.Where((x, i) => !_session.AppMissed[i]);
            var displayChangedTimes = currentSession.DisplayTimes.Where((x, i) => !_session.AppMissed[i]);

            if (frametimes.Count() != displayChangedTimes.Count())
            {
                return("NaN");
            }

            var correlation = Correlation.Pearson(frametimes, displayChangedTimes);

            return(Math.Round(correlation * 100, 0).ToString(CultureInfo.InvariantCulture) + "%");
        }