Exemplo n.º 1
0
        private async void DisplayPricingData(string ticker)
        {
            List <double> priceslastyear = new List <double>();
            List <string> dateslastyear  = new List <string>();
            // Creating the connection object
            IAvapiConnection connection = AvapiConnection.Instance;
            IAvapiResponse_TIME_SERIES_MONTHLY_ADJUSTED m_time_series_monthly_adjustedResponse;

            // Set up the connection and pass the API_KEY provided by alphavantage.co
            connection.Connect("7NIMRBR8G8UB7P8C");

            // Get the TIME_SERIES_MONTHLY_ADJUSTED query object
            Int_TIME_SERIES_MONTHLY_ADJUSTED time_series_monthly_adjusted =
                connection.GetQueryObject_TIME_SERIES_MONTHLY_ADJUSTED();

            // Perform the TIME_SERIES_MONTHLY_ADJUSTED request and get the result
            m_time_series_monthly_adjustedResponse = await time_series_monthly_adjusted.QueryPrimitiveAsync(
                ticker);

            var data = m_time_series_monthly_adjustedResponse.Data;

            if (data.Error)
            {
                Console.WriteLine(data.ErrorMessage);
            }
            else
            {
                int counter = 0;
                foreach (var timeseries in data.TimeSeries)
                {
                    //Grab 1 year worth of months data
                    if (counter < 12)
                    {
                        //add raw prices and dates to arrays
                        priceslastyear.Add(double.Parse(timeseries.adjustedclose, CultureInfo.InvariantCulture.NumberFormat));
                        Debug.WriteLine(float.Parse(timeseries.adjustedclose, CultureInfo.InvariantCulture.NumberFormat));
                        Debug.WriteLine(timeseries.DateTime);
                        Microcharts.Entry tempEntry = new Microcharts.Entry(float.Parse(timeseries.adjustedclose, CultureInfo.InvariantCulture.NumberFormat))
                        {
                            Label      = timeseries.DateTime,
                            ValueLabel = timeseries.adjustedclose//Color = investmentList[i].color.ToSKColor()
                        };
                        entries.Add(tempEntry);
                    }
                    counter = counter + 1;
                }
            }
            var chart = new LineChart()
            {
                Entries = entries, LineMode = LineMode.Straight, LineSize = 8, PointSize = 18, LabelTextSize = 25
            };

            this.chartView.Chart = chart;
        }
Exemplo n.º 2
0
        private async void History5y(object sender, RoutedEventArgs e)
        {
            var values = new ChartValues <DateTimePoint>();
            Int_TIME_SERIES_MONTHLY_ADJUSTED time_series_montly_adjusted = _connection.GetQueryObject_TIME_SERIES_MONTHLY_ADJUSTED();

            try
            {
                IAvapiResponse_TIME_SERIES_MONTHLY_ADJUSTED time_series_weekly_adjustedResponse =
                    await time_series_montly_adjusted.QueryPrimitiveAsync(_args.Symbol);

                var data = time_series_weekly_adjustedResponse.Data;
                if (data.Error)
                {
                    MessageBox.Show("Failed to fetch data", "Error");
                    SeriesCollection[0].Values = Read("\\5y.csv");
                    ResetZoomOnClick(sender, e);
                    return;
                }
                else
                {
                    DateTime offset = new DateTime(DateTime.Today.Year - 5, DateTime.Today.Month, DateTime.Today.Day);
                    DateTime temp;
                    foreach (var timeseries in data.TimeSeries)
                    {
                        temp = DateTime.ParseExact(timeseries.DateTime, "yyyy-MM-dd", CultureInfo.InvariantCulture);
                        if (temp > offset)
                        {
                            values.Add(new DateTimePoint(temp, double.Parse(timeseries.adjustedclose) * _exchangeRate));
                        }
                    }
                    Write("\\5y.csv", values);
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Previse zahteva poslato u kratkom vremene server misli da si spamer! Oladi malo sa kliktanjem.");
                SeriesCollection[0].Values = Read("\\5y.csv");
                ResetZoomOnClick(sender, e);
                return;
            }
            SeriesCollection[0].Values = Read("\\5y.csv");
            //SeriesCollection[0].Values = values;
            ResetZoomOnClick(sender, e);
        }
Exemplo n.º 3
0
        static async Task <Tuple <double, double, List <double> > > SR_FetchPricingDataandExpectedReturn(string ticker)
        {
            //******************************************************************************************
            //The purpose of this function is to do all calculations related to sharperatio that involve pricing data
            // for a single company. This includes STDdev, and expected return. These will be stored in a dictionary
            //******************************************************************************************


            List <double> priceslastyear           = new List <double>();
            List <double> monthlyreturnpercentages = new List <double>();
            // Creating the connection object
            IAvapiConnection connection = AvapiConnection.Instance;
            IAvapiResponse_TIME_SERIES_MONTHLY_ADJUSTED m_time_series_monthly_adjustedResponse;

            // Set up the connection and pass the API_KEY provided by alphavantage.co
            connection.Connect("7NIMRBR8G8UB7P8C");

            // Get the TIME_SERIES_MONTHLY_ADJUSTED query object
            Int_TIME_SERIES_MONTHLY_ADJUSTED time_series_monthly_adjusted =
                connection.GetQueryObject_TIME_SERIES_MONTHLY_ADJUSTED();

            // Perform the TIME_SERIES_MONTHLY_ADJUSTED request and get the result
            m_time_series_monthly_adjustedResponse = await time_series_monthly_adjusted.QueryPrimitiveAsync(
                ticker);

            Console.WriteLine("******** STRUCTURED DATA TIME_SERIES_MONTHLY_ADJUSTED ********");
            var data = m_time_series_monthly_adjustedResponse.Data;

            if (data.Error)
            {
                Console.WriteLine(data.ErrorMessage);
                return(null);
            }
            else
            {
                Console.WriteLine("PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP");
                int counter = 0;
                foreach (var timeseries in data.TimeSeries)
                {
                    //Grab 5 years worth of months data
                    if (counter < 60)
                    {
                        //add raw prices to array
                        priceslastyear.Add(double.Parse(timeseries.adjustedclose, CultureInfo.InvariantCulture.NumberFormat));

                        if (counter > 0)
                        {
                            //take pricing data and calculate percent change between each pair of months
                            //Console.Write(((priceslastyear[counter] / priceslastyear[counter - 1]) - 1) * 100);
                            monthlyreturnpercentages.Add(((priceslastyear[counter] / priceslastyear[counter - 1]) - 1) * 100);
                        }
                        counter = counter + 1;
                    }
                }

                //Setup counter to average pricing data
                double running_average = 0;
                //Calculate STDDev of data
                double std_dev = StdDev(monthlyreturnpercentages, true);

                //Sum all the values in our list
                for (var i = 0; i < monthlyreturnpercentages.Count(); i++)
                {
                    running_average = monthlyreturnpercentages[i] + running_average;
                }

                //Finishing taking average by dividing by the number of entries
                running_average = running_average / monthlyreturnpercentages.Count();

                //Annualize the average (multiply by 12 since monthly)
                running_average = running_average * 12;

                //Add the values to the tuple and print!
                Console.Write(ticker + ", ");
                Console.Write(std_dev + ", ");
                Console.Write(running_average + ", ");

                var pricingdata = Tuple.Create(std_dev, running_average, monthlyreturnpercentages);
                //Return this value
                return(pricingdata);
            }
        }
Exemplo n.º 4
0
        static async Task <double> CalculateSharpeRatioForCompany(string ticker)


        {
            List <double> priceslastyear           = new List <double>();
            List <double> monthlyreturnpercentages = new List <double>();
            // Creating the connection object
            IAvapiConnection connection = AvapiConnection.Instance;
            IAvapiResponse_TIME_SERIES_MONTHLY_ADJUSTED m_time_series_monthly_adjustedResponse;

            // Set up the connection and pass the API_KEY provided by alphavantage.co
            connection.Connect("7NIMRBR8G8UB7P8C");

            // Get the TIME_SERIES_MONTHLY_ADJUSTED query object
            Int_TIME_SERIES_MONTHLY_ADJUSTED time_series_monthly_adjusted =
                connection.GetQueryObject_TIME_SERIES_MONTHLY_ADJUSTED();

            // Perform the TIME_SERIES_MONTHLY_ADJUSTED request and get the result
            m_time_series_monthly_adjustedResponse = await time_series_monthly_adjusted.QueryPrimitiveAsync(
                ticker);

            Console.WriteLine("******** STRUCTURED DATA TIME_SERIES_MONTHLY_ADJUSTED ********");
            var data = m_time_series_monthly_adjustedResponse.Data;

            if (data.Error)
            {
                Console.WriteLine(data.ErrorMessage);
                return(0);
            }
            else
            {
                int counter = 0;
                foreach (var timeseries in data.TimeSeries)
                {
                    //Grab 5 years worth of months data
                    if (counter < 60)
                    {
                        //add raw prices to array
                        priceslastyear.Add(double.Parse(timeseries.adjustedclose, CultureInfo.InvariantCulture.NumberFormat));

                        if (counter > 0)
                        {
                            //take pricing data and calculate percent change between each pair of months
                            //Console.Write(((priceslastyear[counter] / priceslastyear[counter - 1]) - 1) * 100);
                            monthlyreturnpercentages.Add(((priceslastyear[counter] / priceslastyear[counter - 1]) - 1) * 100);
                        }
                        counter = counter + 1;
                    }
                }

                double HistAvgMonthlyReturn = 0;

                for (var i = 0; i < monthlyreturnpercentages.Count; i++)
                {
                    //Console.WriteLine(monthprice);
                    HistAvgMonthlyReturn = HistAvgMonthlyReturn + monthlyreturnpercentages[i];
                }


                //Calculate the average monthly return
                HistAvgMonthlyReturn = HistAvgMonthlyReturn / monthlyreturnpercentages.Count;

                //Console.WriteLine(HistAvgMonthlyReturn);


                //Here we need to calculate the Historical Monthly standard deviation based on the Std dev
                // of the monthlyreturnpercentages
                double Summation = 0;

                for (var i = 0; i < monthlyreturnpercentages.Count; i++)
                {
                    Summation = Summation + Math.Pow(monthlyreturnpercentages[i] - HistAvgMonthlyReturn, 2);
                }
                Summation = Summation / monthlyreturnpercentages.Count;

                double HistAvgMonthlyStdDev = Math.Sqrt(Summation);

                //Annualize our standard deviation
                double AnnualStdDev = HistAvgMonthlyStdDev * Math.Sqrt(12);
                double AnnualReturn = ((Math.Pow((100 + HistAvgMonthlyReturn), 12)) - 100);

                double Riskfreerate = 3;

                //Console.WriteLine(HistAvgMonthlyReturn);
                Console.WriteLine(ticker);
                Console.WriteLine(AnnualReturn);
                //Console.WriteLine(Riskfreerate);
                //Console.WriteLine(AnnualStdDev);

                //Calculate the SharpeRatio for the Company
                double SharpeRatioforCompany = (AnnualReturn - Riskfreerate) / AnnualStdDev;

                //Console.WriteLine(SharpeRatioforCompany);

                return(AnnualReturn);
            }
        }