Esempio n. 1
0
        public async Task CalculateFairValue()
        {
            //  var tenYearsBondYield = await DownloadHelper.GetQuote(new string[] { "^TNX" }, QuoteProperty.LastTradePriceOnly, QuoteProperty.ChangeInPercent);
            //  var currentPrice = DownloadHelper.GetQuote(new string[] { ticker }, QuoteProperty.LastTradePriceOnly, QuoteProperty.ChangeInPercent);

            double inflation = await DownloadHelper.GetCpiData(); //todo: get from yahoo quote

            double fixincomeReturnRate = 0.0796;                  //todo: get from yahoo quote
            var    setting             = new YahooCompanyStatisticsSetting("CSCO");
            var    dl = new YahooCompanyStatisticsDownloader(setting);
            //var bag = new ConcurrentBag<CompanyStatisticsData>();
            var results = await dl.BatchDownloadObjectsTaskAsync(setting.GetUrls(tickers)).ConfigureAwait(false);

            //Parallel.ForEach(tickers, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount },
            //    id =>
            //    {
            //        var resp = dl.BatchDownloadObjectsTaskAsync(id);
            //        if (resp.Result.Connection.State == ConnectionState.Success)
            //        {

            //            var item = resp.Result.Result.Item;
            //            bag.Add(item);
            //        }
            //    });
            results.OrderBy(result => { return(result.Item.TradingInfo.TwoHundredDayMovingAverage); });
            //TODO: Add property FairValue and Market Price in CompanyStatisticsData
            foreach (var result in results)
            {
                var ti        = result.Item.TradingInfo;
                var vm        = result.Item.ValuationMeasures;
                var highlight = result.Item.FinancialHighlights;
                var eps       = result.Item.FinancialHighlights.DilutedEPS;

                // var growthRate1 = vm.TrailingPE / vm.ForwardPE;
                var growthRate = highlight.QuarterlyRevenueGrowthPercent;//.QuaterlyEarningsGrowthPercent /100.0;
                //var outStandingShare = vm.MarketCapitalisationInMillion / highlight.RevenuePerShare.

                var fairValue = FairValueEngine.DiscountedCurrentValue(eps, 3, growthRate / 100.0, inflation / 10000.0, fixincomeReturnRate);
                if (eps <= 0 && fairValue <= 0)
                {
                    fairValue = FairValueEngine.FutureValue(highlight.RevenuePerShare, growthRate / 100.0, 1) * 1.5;
                }
                Debug.WriteLine("{0}      FairValue : {1}      forward P/E : {2}       EV/Rev : {3}       Margin: {4}          ShortPercentage : {5}       EPS: {6}      GrowthRate: {7}",
                                result.Item.ID.PadRight(5),
                                fairValue.ToString("C").PadLeft(9),
                                vm.ForwardPE.ToString().PadLeft(8),
                                vm.EnterpriseValueToRevenue.ToString().PadLeft(8),
                                (highlight.ProfitMarginPercent / 100.0).ToString("P").PadLeft(9),
                                (ti.ShortPercentOfFloat / 100.0).ToString("P").PadLeft(8),
                                eps.ToString("C").PadLeft(8),
                                (growthRate / 100.0).ToString("P").PadLeft(8));
            }
        }
Esempio n. 2
0
        public PriceStatisticsAggregate(string ticker, IEnumerable <PriceDataPoint> range)
        {
            var setting = new YahooCompanyStatisticsSetting(ticker);
            var dl      = new YahooCompanyStatisticsDownloader(setting);

            _companyinfo = dl.DownloadObjectTaskAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            _ticker      = ticker;
            _dataPoints  = range.ToList <PriceDataPoint>();//.Select(d => { d.Index = i++; return d; }).
            _partitions  = new List <DataRangePartition>(10);
            _slideWindow = 4;
            Initialize();
        }
Esempio n. 3
0
 public YahooCompanyStatisticsDownloader(YahooCompanyStatisticsSetting setting)
     : base(setting)
 {
 }