Beispiel #1
0
        public void FinishAndProcess()
        {
            try
            {
                var priceData = new DenseMatrix(symbols.Length, numTicks);

                for (int j = 0; j < symbols.Length; j++)
                {
                    SortedList <DateTime, Tick> d = mktData[j].data.Data;
                    for (int k = 0; k < d.Count; k++)
                    {
                        priceData[j, k] = d.Values[k].BidClose;
                    }
                }

                for (int i = 0; i < symbols.Length; i++)
                {
                    for (int j = 0; j < symbols.Length; j++)
                    {
                        double[] pDatai = priceData.Row(i).ToArray();
                        double[] pDataj = priceData.Row(j).ToArray();

                        switch (cType)
                        {
                        case CovarianceType.LogReturn:
                        {
                            pDatai = priceData.Row(i).ToArray().LogRateOfReturn();
                            pDataj = priceData.Row(j).ToArray().LogRateOfReturn();
                            break;
                        }

                        case CovarianceType.RawReturn:
                        {
                            pDatai = priceData.Row(i).ToArray().RawRateOfReturn();
                            pDataj = priceData.Row(j).ToArray().RawRateOfReturn();
                            break;
                        }
                        }
                        correlation[i, j] = StatisticsExtension.Correlation(pDatai, pDataj);
                        covariance[i, j]  = StatisticsExtension.Covariance((DenseVector)priceData.Row(i),
                                                                           (DenseVector)priceData.Row(j));
                    }
                }

                Visualize.GenerateHeatMatrix(symbols, correlation, "C:\\Users\\Ethan\\Work\\QuantSysdata.html");
                Console.WriteLine("Finished Generating Correlation Matrix.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Beispiel #2
0
        public double HandleNextTick(double d)
        {
            double value = double.NaN;

            X.Enqueue(d);

            if (X.Count.Equals(X.Capacity))
            {
                double cov = StatisticsExtension.Covariance(new DenseVector(X.ToArray()), Y);
                value = cov / (X.ToArray().Variance() * Y.Variance());
            }

            indicatorData.Enqueue(value);
            return(value);
        }