Esempio n. 1
0
    public void CreateDisplayPortfolioTests(string newPort, string oldPort, string cusipChanged, double change, string cusipNew, string cusipSold)
    {
        var baseDir  = AppContext.BaseDirectory;
        var filePath = Path.Combine(baseDir, @"TestData\");

        var txtStream1 = File.OpenRead(Path.Combine(filePath, newPort));
        var port1      = GuruLoader.ParseSubmissionFile(txtStream1);

        var txtStream2 = File.OpenRead(Path.Combine(filePath, oldPort));
        var port2      = GuruLoader.ParseSubmissionFile(txtStream2);

        var dp = GuruLoader.CreateDisplayPortfolio("name", port1, port2);

        if (cusipChanged != null)
        {
            Assert.True(isSimilar(change, dp.Positions.First(p => p.Cusip == cusipChanged).Change));
        }
        if (cusipNew != null)
        {
            Assert.True(dp.Positions.First(p => p.Cusip == cusipNew).IsNew);
        }
        if (cusipSold != null)
        {
            Assert.True(dp.Positions.First(p => p.Cusip == cusipSold).IsSold);
        }
    }
Esempio n. 2
0
    // Try with the following ciks: 0001553733, 0001568820, 0001484148, 0001112520
    // or go to https://www.sec.gov/edgar/searchedgar/companysearch.html and put the name of the investor you are interested in
    // TODO: clean up cmd line definition and code to manage it.
    public static void Main(string[] args)
    {
        if (args.Count() > 2 || args.Count() == 0)
        {
            Banner();
        }
        if (args.Count() == 2 && (args[1] != "-Hist" && args[1] != "-Hyper"))
        {
            Banner();
        }

        if (args.Count() == 1)
        {
            var result = GuruLoader.FetchDisplayPortfolioAsync(args[0]).Result;
            Console.WriteLine(DisplayPortToString(result));
        }
        else if (args[1] == "-Hist")
        {
            // Printing Portfolio summary at both start and bottom
            var result = GuruLoader.FetchFullPortfolioDataAsync(args[0]).Result;
            Console.WriteLine(DisplayPortToString(result.Portfolio));
            Console.WriteLine(DisplayHistory(result.CompaniesHistory));
        }
        else
        {
            var cw     = LoadCIKWeightFile(args[0]);
            var result = GuruLoader.FetchHyperPortfolioAsync(cw).Result;
            Console.WriteLine(DisplayHyperPortToString(result));
        }
    }
Esempio n. 3
0
    public void ParseHtmFileTests(string fileFullName)
    {
        var htmStream = File.OpenRead(fileFullName);
        var link      = GuruLoader.ParseHtmFile(htmStream);

        Assert.False(String.IsNullOrEmpty(link));
        Assert.Equal(Path.GetExtension(link), ".txt");
    }
Esempio n. 4
0
    public async static Task <HyperPortfolio> FetchHyperPortfolioAsync(IEnumerable <Tuple <string, double> > cikAndWeights)
    {
        var displayPortsTasks = cikAndWeights.Select(cw => FetchDisplayPortfolioAsync(cw.Item1)).ToArray();
        var displayPorts      = await Task.WhenAll(displayPortsTasks);

        var portsAndWeights = displayPorts.Zip(cikAndWeights, (dp, cw) => Tuple.Create(dp, cw.Item2));

        return(GuruLoader.CreateHyperPortfolio(portsAndWeights));
    }
Esempio n. 5
0
    public void ParseRssTextTest(string fileFullName)
    {
        var rssStream = File.OpenRead(fileFullName);
        var res       = GuruLoader.ParseRssText(rssStream);

        Assert.NotNull(res);
        Assert.False(String.IsNullOrEmpty(res.DisplayName));
        Assert.NotEmpty(res.Links);

        Assert.All(res.Links, link => Assert.True(Path.GetExtension(link) == ".htm" ||
                                                  Path.GetExtension(link) == ".html"));
    }
Esempio n. 6
0
    public void ParseSubmissionFileTests(string fileFullName)
    {
        var txtStream = File.OpenRead(fileFullName);
        var port      = GuruLoader.ParseSubmissionFile(txtStream);

        Assert.NotNull(port);
        Assert.True(port.PositionsNumber > 0);
        Assert.True(port.TotalValue > 0);
        Assert.NotEmpty(port.Positions);
        Assert.All(port.Positions, pos => {
            Assert.False(String.IsNullOrEmpty(pos.Cusip));
            Assert.False(String.IsNullOrEmpty(pos.Name));
            Assert.True(pos.Shares > 0);
            Assert.True(pos.Value > 0);
        });
    }