Ejemplo n.º 1
0
        public static void GatherAll(string[] args)
        {
            List <EdgarSearchResult> RESULTS = new List <EdgarSearchResult>();
            bool        Kill = false;
            EdgarSearch es   = EdgarSearch.CreateAsync(args[0], "4", null, EdgarSearchOwnershipFilter.only).Result;

            while (Kill == false)
            {
                Console.WriteLine("Adding...");
                foreach (EdgarSearchResult esr in es.Results)
                {
                    RESULTS.Add(esr);
                }

                //Paging
                Console.Write("Getting next page... ");
                es = es.NextPageAsync().Result;
                if (es.Results.Length == 0)
                {
                    Console.WriteLine("ITS OVER!");
                    Kill = true;
                }
                else
                {
                    Console.WriteLine("Got it");
                }
            }

            Console.WriteLine("Got all of them: " + RESULTS.Count.ToString());
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            EdgarSearch          es   = EdgarSearch.CreateAsync(args[0], "10-K").Result;
            EdgarSearchResult    esr  = es.GetFirstResultOfFilingType("10-K");
            Stream               s    = esr.DownloadXbrlDocumentAsync().Result;
            XbrlInstanceDocument doc  = XbrlInstanceDocument.Create(s);
            FinancialStatement   fs   = doc.CreateFinancialStatement();
            string               json = JsonConvert.SerializeObject(fs);

            Console.WriteLine(json);
        }
        public async Task <FinancialStatement[]> GetFinancialStatementsAsync(string symbol, string filing_type)
        {
            EdgarSearch es = await EdgarSearch.CreateAsync(symbol, filing_type, null, EdgarSearchOwnershipFilter.exclude, EdgarSearchResultsPerPage.Entries40);

            //Get a list of the filings
            List <EdgarSearchResult> Results = new List <EdgarSearchResult>();

            foreach (EdgarSearchResult esr in es.Results)
            {
                if (esr.Filing.Trim().ToLower() == filing_type.Trim().ToLower())
                {
                    Results.Add(esr);
                }
            }

            //Make financial statments for each
            List <FinancialStatement> FinancialStatements = new List <FinancialStatement>();

            foreach (EdgarSearchResult esr in Results)
            {
                try
                {
                    Stream s = await esr.DownloadXbrlDocumentAsync();

                    XbrlInstanceDocument doc = XbrlInstanceDocument.Create(s);
                    FinancialStatement   fs  = doc.CreateFinancialStatement();
                    FinancialStatements.Add(fs);
                }
                catch
                {
                }
            }


            //Arrange from oldest to newest
            List <FinancialStatement> Arranged = new List <FinancialStatement>();

            do
            {
                FinancialStatement Winner = FinancialStatements[0];
                foreach (FinancialStatement fs in FinancialStatements)
                {
                    if (fs.PeriodEnd < Winner.PeriodEnd)
                    {
                        Winner = fs;
                    }
                }
                Arranged.Add(Winner);
                FinancialStatements.Remove(Winner);
            } while (FinancialStatements.Count > 0);


            return(Arranged.ToArray());
        }
Ejemplo n.º 4
0
        public static void FullSp500Test()
        {
            Console.WriteLine("Getting sp500...");
            string[] sp500 = InvestingToolkit.GetEquityGroupAsync(EquityGroup.SP500).Result;

            HttpClient hc = new HttpClient();

            List <string> Failures = new List <string>();
            int           t        = 1;

            foreach (string s in sp500)
            {
                Console.Write("Tring " + s + " (" + t.ToString() + "/" + sp500.Length.ToString() + ")... ");
                try
                {
                    EdgarSearch es = EdgarSearch.CreateAsync(s, "4", null, EdgarSearchOwnershipFilter.only).Result;
                    foreach (EdgarSearchResult esr in es.Results)
                    {
                        if (esr.Filing == "4")
                        {
                            FilingDocument[] docs = esr.GetDocumentFormatFilesAsync().Result;
                            foreach (FilingDocument fd in docs)
                            {
                                if (fd.DocumentName.ToLower().Contains(".xml"))
                                {
                                    //Console.WriteLine("Tryng to get " + fd.Url + " ...");
                                    HttpResponseMessage hrm = hc.GetAsync(fd.Url).Result;
                                    string content          = hrm.Content.ReadAsStringAsync().Result;
                                    StatementOfBeneficialOwnership form4 = StatementOfBeneficialOwnership.ParseXml(content);
                                }
                            }
                        }
                    }
                    Console.WriteLine("Success");
                }
                catch
                {
                    Failures.Add(s);
                    Console.WriteLine("FAILURE!");
                }
                t = t + 1;
            }

            Console.WriteLine("DONE!");
            Console.WriteLine("Failures:");
            foreach (string s in Failures)
            {
                Console.WriteLine(s);
            }
        }
Ejemplo n.º 5
0
        static void TestAll10Ks()
        {
            do
            {
                Console.WriteLine("Symbol?");
                string symbol = Console.ReadLine();

                EdgarSearch es = EdgarSearch.CreateAsync(symbol, "10-K").Result;

                foreach (EdgarSearchResult esr in es.Results)
                {
                    if (esr.Filing == "10-K")
                    {
                        if (esr.InteractiveDataUrl != null && esr.InteractiveDataUrl != "")
                        {
                            try
                            {
                                Stream s = esr.DownloadXbrlDocumentAsync().Result;
                                XbrlInstanceDocument doc = XbrlInstanceDocument.Create(s);
                                FinancialStatement   fs  = doc.CreateFinancialStatement();
                                string rev = "";
                                if (fs.Revenue.HasValue)
                                {
                                    rev = fs.Revenue.Value.ToString("#,##0");
                                }
                                else
                                {
                                    rev = "?";
                                }
                                Console.WriteLine(fs.PeriodEnd.Value.ToShortDateString() + " - " + rev);
                            }
                            catch
                            {
                                Console.WriteLine("Critical error (filed on " + esr.FilingDate.ToShortDateString());
                            }
                        }
                    }
                }
                Console.WriteLine();
            } while (true);
        }
Ejemplo n.º 6
0
        public async Task <LucaDataPackage[]> GetHistoricalFinancialsAsync(string symbol, string filing, bool force_calculation)
        {
            if (filing.ToLower() != "10-k" && filing.ToLower() != "10-q")
            {
                throw new Exception("Did not recognize filing '" + filing + "'. Use only '10-K' or '10-Q'.");
            }


            EdgarSearch es = await EdgarSearch.CreateAsync(symbol, filing, null);

            //Get a list of dates to pull (right before each 10-? filing date)
            List <DateTime> BeforeDates = new List <DateTime>();

            foreach (EdgarSearchResult esr in es.Results)
            {
                if (esr.Filing == filing)
                {
                    if (esr.InteractiveDataUrl != null & esr.InteractiveDataUrl != "")
                    {
                        BeforeDates.Add(esr.FilingDate.AddDays(5));
                    }
                }
            }

            //Get a filing to call for the api
            string filing_for_api = "";

            if (filing.ToLower() == "10-k")
            {
                filing_for_api = "10k";
            }
            else if (filing.ToLower() == "10-q")
            {
                filing_for_api = "10q";
            }

            //Assemble a list of calls
            HttpClient hc = new HttpClient();

            hc.Timeout = new TimeSpan(0, 10, 0);
            List <Task <HttpResponseMessage> > responses = new List <Task <HttpResponseMessage> >();

            foreach (DateTime dt in BeforeDates)
            {
                string url = "https://projectluca.azurewebsites.net/api/GetFinancials?";
                url = url + "symbol=" + symbol.Trim().ToLower();
                url = url + "&filing=" + filing_for_api.Trim().ToLower();
                url = url + "&before=" + dt.Month.ToString("00") + dt.Day.ToString("00") + dt.Year.ToString("0000");
                url = url + "&forcecalculation=" + force_calculation.ToString();
                responses.Add(hc.GetAsync(url));
            }



            //Call them
            //Console.WriteLine(responses.Count.ToString() + " requests");
            HttpResponseMessage[] resps = await Task.WhenAll(responses);

            //Console.WriteLine(resps.Length.ToString() + " responses");

            //Parse
            List <LucaDataPackage> statements = new List <LucaDataPackage>();

            foreach (HttpResponseMessage hrm in resps)
            {
                if (hrm.StatusCode == HttpStatusCode.OK)
                {
                    string content = await hrm.Content.ReadAsStringAsync();

                    LucaDataPackage fs = JsonConvert.DeserializeObject <LucaDataPackage>(content);
                    statements.Add(fs);
                }
            }

            return(statements.ToArray());
        }