Initial Commit
This commit is contained in:
115
MarketData/MarketDataLib/MarketDataModel/StickerPrice.cs
Executable file
115
MarketData/MarketDataLib/MarketDataModel/StickerPrice.cs
Executable file
@@ -0,0 +1,115 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using MySql.Data.MySqlClient;
|
||||
using MarketData.DataAccess;
|
||||
using MarketData.Numerical;
|
||||
|
||||
namespace MarketData.MarketDataModel
|
||||
{
|
||||
public class StickerPrice
|
||||
{
|
||||
private double marginOfSafety = double.NaN;
|
||||
private double marginOfSafety80Pcnt = double.NaN;
|
||||
private double lowPE = double.NaN;
|
||||
private double trailingPE = double.NaN;
|
||||
private double averageLowTrailing = double.NaN;
|
||||
private double currentStockEstimatePrice = double.NaN;
|
||||
private double priceEstimate10y = double.NaN;
|
||||
private double todaysPriceForRequiredReturn = double.NaN;
|
||||
private double averageBVPSGrowth = double.NaN;
|
||||
private ReturnItems bvpsItems = null;
|
||||
|
||||
// public StickerPrice(String symbol, int growthYears = -1)
|
||||
public StickerPrice(String symbol,double bvpsGrowthOverride)
|
||||
{
|
||||
try
|
||||
{
|
||||
double requiredReturn = 15.00 / 100.00;
|
||||
// TimeSeriesCollection bookValuePerShareCollection = HistoricalDA.GetTimeSeries(symbol, TimeSeriesElement.ElementType.BVPS);
|
||||
Fundamental fundamental = FundamentalDA.GetFundamental(symbol);
|
||||
// bvpsItems = new ReturnItems();
|
||||
// averageBVPSGrowth = Numerics.AverageReturnWithSpline(bookValuePerShareCollection,bvpsItems);
|
||||
averageBVPSGrowth=bvpsGrowthOverride;
|
||||
lowPE = fundamental.EPS * 2.00;
|
||||
trailingPE = fundamental.TrailingPE;
|
||||
averageLowTrailing = (lowPE + trailingPE) / 2.00;
|
||||
currentStockEstimatePrice = fundamental.EPS * averageLowTrailing;
|
||||
priceEstimate10y = currentStockEstimatePrice * Math.Pow((1.00 + averageBVPSGrowth), 10.00);
|
||||
todaysPriceForRequiredReturn = priceEstimate10y / Math.Pow((1.00 + requiredReturn), 10.00);
|
||||
marginOfSafety = todaysPriceForRequiredReturn * .50;
|
||||
marginOfSafety80Pcnt = todaysPriceForRequiredReturn * .80;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
public StickerPrice(String symbol)
|
||||
{
|
||||
try
|
||||
{
|
||||
double requiredReturn = 15.00 / 100.00;
|
||||
TimeSeriesCollection bookValuePerShareCollection = HistoricalDA.GetTimeSeries(symbol, TimeSeriesElement.ElementType.BVPS);
|
||||
Fundamental fundamental = FundamentalDA.GetFundamental(symbol);
|
||||
bvpsItems = new ReturnItems();
|
||||
averageBVPSGrowth = Numerics.AverageReturnWithSpline(bookValuePerShareCollection,bvpsItems);
|
||||
//if (-1 == growthYears) averageGrowth = Numerics.AverageReturn(ref bookValuesPerShareSeries);
|
||||
//else averageGrowth = Numerics.AverageReturnTop(ref bookValuesPerShareSeries, growthYears);
|
||||
lowPE = fundamental.EPS * 2.00;
|
||||
trailingPE = fundamental.TrailingPE;
|
||||
averageLowTrailing = (lowPE + trailingPE) / 2.00;
|
||||
currentStockEstimatePrice = fundamental.EPS * averageLowTrailing;
|
||||
priceEstimate10y = currentStockEstimatePrice * Math.Pow((1.00 + averageBVPSGrowth), 10.00);
|
||||
todaysPriceForRequiredReturn = priceEstimate10y / Math.Pow((1.00 + requiredReturn), 10.00);
|
||||
marginOfSafety = todaysPriceForRequiredReturn * .50;
|
||||
marginOfSafety80Pcnt = todaysPriceForRequiredReturn * .80;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
public ReturnItems BVPSItems
|
||||
{
|
||||
get
|
||||
{
|
||||
return bvpsItems;
|
||||
}
|
||||
}
|
||||
public double AverageBVPSGrowth
|
||||
{
|
||||
get { return averageBVPSGrowth; }
|
||||
}
|
||||
public double MarginOfSafety
|
||||
{
|
||||
get { return marginOfSafety; }
|
||||
}
|
||||
public double MarginOfSafety80Pcnt
|
||||
{
|
||||
get { return marginOfSafety80Pcnt; }
|
||||
}
|
||||
public double LowPE
|
||||
{
|
||||
get { return lowPE; }
|
||||
}
|
||||
public double TrailingPE
|
||||
{
|
||||
get { return trailingPE; }
|
||||
}
|
||||
public double AverageLowTrailing
|
||||
{
|
||||
get { return averageLowTrailing; }
|
||||
}
|
||||
public double CurrentStockEstimatePrice
|
||||
{
|
||||
get { return currentStockEstimatePrice; }
|
||||
}
|
||||
public double PriceEstimate10y
|
||||
{
|
||||
get { return priceEstimate10y; }
|
||||
}
|
||||
public double TodaysPriceForRequiredReturn
|
||||
{
|
||||
get { return todaysPriceForRequiredReturn; }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user