コード例 #1
0
 public static IList <StockCompany> GetAllStockCompany()
 {
     using (var db = new InvestmentEntities())
     {
         return(db.StockCompanies.ToList());
     }
 }
コード例 #2
0
 public static IList <RequestLog> GetRequestLog(RequestType requestType)
 {
     using (var db = new InvestmentEntities())
     {
         return(db.RequestLogs.Where(x => x.ProcessedOn == null && x.RequestType == (int)requestType).ToList());
     }
 }
コード例 #3
0
        public AddInvestment()
        {
            InitializeComponent();

            using (InvestmentEntities entities = new InvestmentEntities())
            {
                ddlInvestment.DataSource    = entities.MutualFunds.OrderBy(mf => mf.MutualFundSymbol);
                ddlInvestment.ValueMember   = "MutualFundID";
                ddlInvestment.DisplayMember = "DisplayText";
            }

            CalculateActual();
        }
コード例 #4
0
        public static void AddRequestLog(string reqUrl, string reqBody, string respData, RequestType requestType)
        {
            using (var db = new InvestmentEntities())
            {
                var rLog = db.RequestLogs.Create();
                rLog.RequestType  = (int)requestType;
                rLog.ResponseData = respData;
                rLog.RequestBody  = reqBody;
                rLog.Url          = reqUrl;
                rLog.CreatedOn    = DateTime.UtcNow;

                db.RequestLogs.Add(rLog);

                db.SaveChanges();
            }
        }
コード例 #5
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            using (InvestmentEntities entities = new InvestmentEntities())
            {
                MutualFundTransaction transaction = new MutualFundTransaction();
                transaction.MutualFundID    = Convert.ToInt32(ddlInvestment.SelectedValue);
                transaction.NumberOfShares  = Decimal.Parse(txtNumberOfShares.Text);
                transaction.PricePerShare   = Decimal.Parse(txtPricePerShare.Text);
                transaction.ActualAmount    = Decimal.Parse(txtActualAmount.Text);
                transaction.TransactionDate = DateTime.Parse(txtTransactionDate.Text);
                transaction.Note            = txtNote.Text;

                entities.MutualFundTransactions.AddObject(transaction);
                entities.SaveChanges();
            }

            MessageBox.Show("This transaction has been saved");
        }
コード例 #6
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            using (InvestmentEntities entities = new InvestmentEntities())
            {
                MutualFundReturn mfReturn = new MutualFundReturn();
                mfReturn.MutualFundID             = Convert.ToInt32(ddlInvestment.SelectedValue);
                mfReturn.NumberOfShares           = Decimal.Parse(txtNumberOfShares.Text);
                mfReturn.PricePerShare            = Decimal.Parse(txtPricePerShare.Text);
                mfReturn.Amount                   = Decimal.Parse(txtActualAmount.Text);
                mfReturn.TransactionDate          = DateTime.Parse(txtTransactionDate.Text);
                mfReturn.MutualFundReturnTypeName = ddlReturnType.SelectedValue.ToString();
                mfReturn.Destination              = "Reinvest";

                entities.MutualFundReturns.AddObject(mfReturn);
                entities.SaveChanges();
            }

            MessageBox.Show("This return has been saved");
        }
コード例 #7
0
        public static void UpdateStockCompany(StockCompany updStockComp)
        {
            using (var db = new InvestmentEntities())
            {
                var stockCmp = db.StockCompanies.FirstOrDefault(x => x.TickerCode == updStockComp.TickerCode);

                if (stockCmp == null)
                {
                    return;
                }

                if (updStockComp.LatsUpdatedOn != null)
                {
                    stockCmp.LatsUpdatedOn = updStockComp.LatsUpdatedOn;
                }

                db.Entry <StockCompany>(stockCmp).State = EntityState.Modified;
                db.SaveChanges();
            }
        }
コード例 #8
0
        public static void AddStockCompany(StockCompany newStockComp)
        {
            using (var db = new InvestmentEntities())
            {
                var isExist = db.StockCompanies.Any(x => x.TickerCode == newStockComp.TickerCode);

                if (!isExist)
                {
                    var newStockCmp = db.StockCompanies.Create();
                    newStockCmp.TickerCode    = newStockComp.TickerCode;
                    newStockCmp.CompanyName   = newStockComp.CompanyName;
                    newStockCmp.Industry      = newStockComp.Industry;
                    newStockCmp.IndustryGroup = newStockComp.IndustryGroup;
                    newStockCmp.CreatedOn     = DateTime.UtcNow;

                    db.StockCompanies.Add(newStockCmp);
                    db.SaveChanges();
                }
            }
        }
コード例 #9
0
        public Form1()
        {
            InitializeComponent();

            using (InvestmentEntities entities = new InvestmentEntities())
            {
                var allInvestments = entities.MutualFundViews.Where(m => m.MutualFundID > 0).ToList();
                var investmentList = allInvestments.Select(i => i.MutualFundSymbol).Distinct().ToList();

                ReturnOnInvestment header = new ReturnOnInvestment("Fund Name", "Description", "Investments", "Dividends", "Current Value", "APY", "Yield L12", "Since");
                flowLayoutPanel1.Controls.Add(header);
                CurrentValue = 0.0M;
                CurrentValue_ForLast12Calc = 0.0M;

                DateTime last12Start = entities.GetLast12StartDate().First().Value;

                //List<Task> taskList = new List<Task>();

                foreach (String investment in investmentList)
                {
                    GetInvestments(allInvestments.Where(f => f.MutualFundSymbol == investment).ToList(), investment, last12Start, entities);
                    //var task = Task.Factory.StartNew(() => GetInvestments(allInvestments, investment));
                    //taskList.Add(task);
                }

                //Task.WaitAll(taskList.ToArray());

                foreach (var control in returns.OrderBy(r => r.FundName))
                {
                    flowLayoutPanel1.Controls.Add(control);
                }

                Investments = allInvestments.Where(i => i.ReturnType == "Investment").Sum(i => i.Amount);
                Gains       = allInvestments.Where(i => i.ReturnType != "Investment").Sum(i => i.Amount);

                ROI = Convert.ToDecimal(Calculations.IRR.solveIRR(allTransactions, Convert.ToDouble(CurrentValue), 1, 1000, DateTime.Now));
                Decimal ROILast12 = Convert.ToDecimal(Calculations.IRR.solveIRR(transactionsLast12, Convert.ToDouble(CurrentValue_ForLast12Calc), 1, 1000, DateTime.Now));

                flowLayoutPanel1.Controls.Add(new ReturnOnInvestment("Totals", "", this.Investments.ToString("c"), this.Gains.ToString("c"), this.CurrentValue.ToString("c"), this.ROI.ToString("p"), ROILast12.ToString("p"), ""));
            }
        }
コード例 #10
0
        public MutualFundCalculator(String fundName, List <MutualFundView> transactions, Boolean isOpenFund, DateTime last12Start, InvestmentEntities entities)
        {
            FundName = fundName;

            if (ValueToday == null && isOpenFund)
            {
                var mutualFund = entities.MutualFunds.Single(mf => mf.MutualFundSymbol == fundName);

                if (mutualFund.IsGoogleTracked)
                {
                    //http://ichart.yahoo.com/table.csv?s=FSDIX&a=2&b=1&c=2013&d=2&e=1&f=2014&g=d&ignore=.csv a=Month-1, b=day, c=year (d, e, f = m,d,y end date)
                    String      url            = "http://finance.google.com/finance/info?client=ig&q=" + fundName;
                    WebRequest  request        = WebRequest.Create(url);
                    WebResponse response       = request.GetResponse();
                    String      responseString = "";
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader answer = new StreamReader(stream))
                        {
                            responseString = answer.ReadToEnd();
                        }
                    }

                    ValueToday = JSONHelper.Deserialise <GoogleResults>(responseString);
                }
                else
                {
                    GoogleResults r = new GoogleResults();
                    r.l        = mutualFund.LastKnownValue.ToString();
                    ValueToday = r;
                }
            }

            Decimal todaysValue = !isOpenFund?transactions.OrderByDescending(t => t.TransactionDate).First().PricePerShare : Decimal.Parse(ValueToday.l);

            CurrentValue  = todaysValue * transactions.Sum(i => i.NumberOfShares);
            Investments   = transactions.Where(i => i.ReturnType == "Investment").Sum(i => i.Amount);
            Gains         = transactions.Where(i => i.ReturnType != "Investment").Sum(i => i.Amount);
            FirstPurchase = transactions.OrderBy(i => i.TransactionDate).First().TransactionDate;

            Dictionary <DateTime, Double> allTransactions = new Dictionary <DateTime, double>();

            foreach (MutualFundView fund in transactions)
            {
                if (fund.ReturnType == "Investment")
                {
                    allTransactions.Add(fund.TransactionDate, Convert.ToDouble(fund.Amount));
                    if (fund.TransactionDate > last12Start)
                    {
                        TransactionsLast12.Add(fund.TransactionDate, Convert.ToDouble(fund.Amount));
                    }
                }
            }

            try
            {
                ROI = Convert.ToDecimal(Calculations.IRR.solveIRR(allTransactions, Convert.ToDouble(CurrentValue), 1, 1000, DateTime.Now));

                if (allTransactions.Count == TransactionsLast12.Count)
                {
                    ROILast12   = ROI;
                    Last12Valid = true;
                }
                else
                {
                    MutualFundPriceHistory historicalPrice = entities.MutualFundPriceHistories.SingleOrDefault(h => h.MutualFundSymbol == fundName && h.QuoteDate == last12Start);
                    if (historicalPrice != null)
                    {
                        Decimal numberOfSharesYearAgo = transactions.Sum(i => i.NumberOfShares) - transactions.Where(i => i.TransactionDate > last12Start).Sum(i => i.NumberOfShares);
                        TransactionsLast12.Add(last12Start, Convert.ToDouble(numberOfSharesYearAgo * historicalPrice.DayPrice));
                        ROILast12   = Convert.ToDecimal(Calculations.IRR.solveIRR(TransactionsLast12, Convert.ToDouble(CurrentValue), 1, 1000, DateTime.Now));
                        Last12Valid = true;
                    }
                    else
                    {
                        ROILast12   = 0;
                        Last12Valid = false;
                    }
                }
            }
            catch
            {
                //ROI = -1;
                //ROILast12 = -1;
            }
        }
コード例 #11
0
        private void GetInvestments(List <MutualFundView> allInvestments, String investment, DateTime last12Start, InvestmentEntities entities)
        {
            MutualFundCalculator mutualFund = new MutualFundCalculator(investment, allInvestments.Where(i => i.MutualFundSymbol == investment).ToList(), allInvestments.First(i => i.MutualFundSymbol == investment).HasBalance, last12Start, entities);
            String             description  = allInvestments.First(i => i.MutualFundSymbol == investment).MutualFundDescription;
            ReturnOnInvestment control      = new ReturnOnInvestment(investment, description, mutualFund.Investments.ToString("c"), mutualFund.Gains.ToString("c"),
                                                                     mutualFund.CurrentValue.ToString("c"), mutualFund.ROI.ToString("p"), mutualFund.ROILast12_Display, mutualFund.FirstPurchase.ToString("M/d/yyyy"));

            if (allInvestments.First(i => i.MutualFundSymbol == investment).HasBalance)
            {
                returns.Add(control);
            }

            CurrentValue += mutualFund.CurrentValue;
            if (mutualFund.Last12Valid)
            {
                CurrentValue_ForLast12Calc += mutualFund.CurrentValue;
            }

            foreach (MutualFundView fund in allInvestments)
            {
                if (fund.ReturnType == "Investment")
                {
                    allTransactions.Add(fund.TransactionDate.AddSeconds(counter), Convert.ToDouble(fund.Amount));
                    counter++;
                }
            }

            foreach (var key in mutualFund.TransactionsLast12.Keys)
            {
                if (mutualFund.Last12Valid)
                {
                    transactionsLast12.Add(key.AddSeconds(counter), mutualFund.TransactionsLast12[key]);
                    counter++;
                }
            }
        }