private DiscountedCashFlow GetNetIncomeDiscountedCashFlow(CompanyValuationStatistics cvs, IncomeStatementCollection incProjections,
                                                                  decimal wacc, decimal terminalGrowth)
        {
            FreeCashFlowCollection fcfs     = _fcfMngr.CalculateFreeCashFlow(cvs.Symbol, cvs.Year, cvs.NoOfYears, incProjections);
            DiscountedCashFlow     dcf      = null;
            BalanceSheet           bs       = BalanceSheetBL.Instance.GetBalanceSheet(cvs.Symbol, cvs.Year);
            CompanyAnnualData      compData = CompanyAnnualDataBL.Instance.GetCompanyAnnual(cvs.Symbol, cvs.Year);

            if (fcfs != null)
            {
                dcf = new DiscountedCashFlow(cvs.Symbol, cvs.Year, fcfs, wacc, terminalGrowth);
                dcf.EnterpriseValue = 0;
                for (int i = 1; i < cvs.NoOfYears + 1; i++)
                {
                    decimal discountTo = (decimal)(Math.Pow((double)dcf.DiscountFactor, i));
                    dcf.EnterpriseValue += (dcf.FreeCashFlows[i - 1].NetIncomeCashFlow * discountTo);
                }

                dcf.EnterpriseValue += (dcf.TerminalValue * (decimal)(Math.Pow((double)dcf.DiscountFactor, dcf.FreeCashFlows.Count)));

                dcf.EquityValue = dcf.EnterpriseValue + bs.Cash - bs.Debt;

                dcf.StockValue = dcf.EquityValue / compData.SharesOutstanding;
            }

            return(dcf);
        }
 public DiscountedCashFlow(string symbol, int year, FreeCashFlowCollection ffcf, decimal wacc, decimal growth)
 {
     this._SYMBOL = symbol;
     this._YEAR = year;
     this._freeCashFlows = ffcf;
     this._WACC = wacc;
     this._terminalGrowth = growth;
 }
 public DiscountedCashFlow(string symbol, int year, FreeCashFlowCollection ffcf, decimal wacc, decimal growth)
 {
     this._SYMBOL         = symbol;
     this._YEAR           = year;
     this._freeCashFlows  = ffcf;
     this._WACC           = wacc;
     this._terminalGrowth = growth;
 }
示例#4
0
        public FreeCashFlowCollection CalculateFreeCashFlow(string symbol, int year, int yrsToProject, IncomeStatementCollection incomeStatementProjection)
        {
            FreeCashFlowCollection fcfs = null;

            MarketParameters mktParms = MarketParametersBL.Instance.GetMarketParameters();

            BalanceSheetProjectionBL bsProjectionBL = new BalanceSheetProjectionBL();

            BalanceSheetCollection bsProjections = bsProjectionBL.ProjectBalanceSheets(symbol, year, yrsToProject, incomeStatementProjection);

            if (incomeStatementProjection != null && bsProjections != null)
            {
                fcfs = new FreeCashFlowCollection();
                for (int i = year + 1; i < year + yrsToProject + 1; i++)
                {
                    IncomeStatement inc      = incomeStatementProjection.Find(i);
                    BalanceSheet    bs       = bsProjections.Find(i);
                    BalanceSheet    lastYrBs = bsProjections.Find(i - 1);

                    if (inc != null && bs != null)
                    {
                        fcfs.Add(new FreeCashFlow(
                                     symbol,
                                     i,
                                     inc.NOP(mktParms.TaxRate),
                                     inc.NetIncome,
                                     (bs.Ppe - lastYrBs.Ppe + inc.Depreciation),
                                     bs.WorkingCapital,
                                     bs.WorkingCapital - lastYrBs.WorkingCapital,
                                     inc.Depreciation,
                                     bs.InvestedCapital
                                     ));
                    }
                }
            }

            return(fcfs);
        }
        public FreeCashFlowCollection CalculateFreeCashFlow(string symbol, int year, int yrsToProject ,IncomeStatementCollection incomeStatementProjection)
        {
            FreeCashFlowCollection fcfs = null;

            MarketParameters mktParms = MarketParametersBL.Instance.GetMarketParameters();

            BalanceSheetProjectionBL bsProjectionBL = new BalanceSheetProjectionBL();

            BalanceSheetCollection bsProjections = bsProjectionBL.ProjectBalanceSheets(symbol, year, yrsToProject, incomeStatementProjection);

            if (incomeStatementProjection != null && bsProjections != null)
            {
                fcfs = new FreeCashFlowCollection();
                for (int i = year + 1; i < year + yrsToProject + 1; i++)
                {
                    IncomeStatement inc = incomeStatementProjection.Find(i);
                    BalanceSheet bs = bsProjections.Find(i);
                    BalanceSheet lastYrBs = bsProjections.Find(i - 1);

                    if (inc != null && bs != null)
                    {
                        fcfs.Add(new FreeCashFlow(
                            symbol,
                            i,
                            inc.NOP(mktParms.TaxRate),
                            inc.NetIncome,
                            (bs.Ppe - lastYrBs.Ppe + inc.Depreciation),
                            bs.WorkingCapital,
                            bs.WorkingCapital -lastYrBs.WorkingCapital,
                            inc.Depreciation,
                            bs.InvestedCapital
                            ));
                    }
                }
            }

            return fcfs;
        }