Init
This commit is contained in:
836
ViewModels/YieldCurveViewModel.cs
Normal file
836
ViewModels/YieldCurveViewModel.cs
Normal file
@@ -0,0 +1,836 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using MarketData;
|
||||
using MarketData.Utils;
|
||||
using MarketData.MarketDataModel;
|
||||
using MarketData.Generator;
|
||||
using MarketData.DataAccess;
|
||||
using TradeBlotter.DataAccess;
|
||||
using TradeBlotter.Command;
|
||||
using TradeBlotter.Model;
|
||||
using Microsoft.Research.DynamicDataDisplay.DataSources;
|
||||
using MarketData.Generator.TermStructure;
|
||||
using Microsoft.Research.DynamicDataDisplay.PointMarkers;
|
||||
using System.Threading;
|
||||
using MarketData.Numerical;
|
||||
|
||||
namespace TradeBlotter.ViewModels
|
||||
{
|
||||
public class YieldCurveViewModel : WorkspaceViewModel
|
||||
{
|
||||
private enum Tasks { SelectedItem};
|
||||
private Dictionary<Tasks, Semaphore> semaphorePool = new Dictionary<Tasks, Semaphore>();
|
||||
private List<Int32> dayCounts;
|
||||
private List<String> curves;
|
||||
private Int32 selectedDayCount;
|
||||
private String selectedCurve;
|
||||
private YieldCurve yieldCurve;
|
||||
private DMAValues yieldCurveMA5;
|
||||
private DMAValues yieldCurveMA21;
|
||||
private DMAValues yieldCurveMA55;
|
||||
|
||||
private TermStructureInterpolatorByDate termStrucureInterpolatorByDate;
|
||||
private DateTime selectedTermStructureDate;
|
||||
private List<DateTime> termStructureDates;
|
||||
|
||||
private CurveData termStructureTenorCurveData;
|
||||
private CompositeDataSource termStructureTenorPointsDataSource;
|
||||
private CompositeDataSource termStructureDataSource;
|
||||
|
||||
private CurveData termStructureTenorCurveData90;
|
||||
private CompositeDataSource termStructureTenorPointsDataSource90;
|
||||
private CompositeDataSource termStructureDataSource90;
|
||||
|
||||
private CurveData termStructureTenorCurveData180;
|
||||
private CompositeDataSource termStructureTenorPointsDataSource180;
|
||||
private CompositeDataSource termStructureDataSource180;
|
||||
|
||||
private CompositeDataSource yieldCurveCompositeDataSource;
|
||||
private CompositeDataSource ma5CompositeDataSource;
|
||||
private CompositeDataSource ma21CompositeDataSource;
|
||||
private CompositeDataSource ma55CompositeDataSource;
|
||||
|
||||
private double dataSlope=double.NaN; // This is the slope of whatever data is presently being displayed. If TermStructure then it respresents the slope of the most recent curve
|
||||
|
||||
private bool isLegendVisible = true;
|
||||
private bool busyIndicator = false;
|
||||
|
||||
public YieldCurveViewModel()
|
||||
{
|
||||
semaphorePool.Add(Tasks.SelectedItem, new Semaphore(1, 1));
|
||||
base.DisplayName = "YieldCurveView";
|
||||
curves = new List<String>();
|
||||
curves.Add("1-Month");
|
||||
curves.Add("3-Month");
|
||||
curves.Add("6-Month");
|
||||
curves.Add("1-Year");
|
||||
curves.Add("2-Year");
|
||||
curves.Add("3-Year");
|
||||
curves.Add("5-Year");
|
||||
curves.Add("7-Year");
|
||||
curves.Add("10-Year");
|
||||
curves.Add("20-Year");
|
||||
curves.Add("30-Year");
|
||||
curves.Add("Term Structure");
|
||||
dayCounts = new List<Int32>();
|
||||
dayCounts.Add(60);
|
||||
dayCounts.Add(90);
|
||||
dayCounts.Add(180);
|
||||
dayCounts.Add(360);
|
||||
dayCounts.Add(720);
|
||||
dayCounts.Add(1440);
|
||||
dayCounts.Add(3600);
|
||||
termStructureDates=YieldCurveDA.GetYieldCurveDates();
|
||||
PropertyChanged += OnYieldCurveViewModelPropertyChanged;
|
||||
selectedDayCount = dayCounts[1];
|
||||
selectedCurve = curves[curves.Count-1];
|
||||
base.OnPropertyChanged("SelectedDayCount");
|
||||
SelectedTermStructureDate=termStructureDates[0];
|
||||
}
|
||||
public override SaveParameters GetSaveParameters()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
public override void SetSaveParameters(SaveParameters saveParameters)
|
||||
{
|
||||
}
|
||||
public override bool CanPersist()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public bool BusyIndicator
|
||||
{
|
||||
get { return busyIndicator; }
|
||||
set { busyIndicator = value; base.OnPropertyChanged("BusyIndicator"); }
|
||||
}
|
||||
private void OnYieldCurveViewModelPropertyChanged(object sender, PropertyChangedEventArgs eventArgs)
|
||||
{
|
||||
if (eventArgs.PropertyName.Equals("SelectedDayCount") || eventArgs.PropertyName.Equals("SelectedCurve")||eventArgs.PropertyName.Equals("SelectedTermStructureDate"))
|
||||
{
|
||||
BusyIndicator = true;
|
||||
Task workerTask = Task.Factory.StartNew(() =>
|
||||
{
|
||||
if (null == selectedCurve) return;
|
||||
semaphorePool[Tasks.SelectedItem].WaitOne();
|
||||
InitializeDataSource();
|
||||
UpdateProperties();
|
||||
yieldCurve = YieldCurveDA.GetYieldCurve(selectedDayCount * 2);
|
||||
if (selectedCurve.Equals("1-Month"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo1, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo1, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo1, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Mo1);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("3-Month"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo3, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo3, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo3, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Mo3);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("6-Month"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo6, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo6, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Mo6, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Mo6);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("1-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr1, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr1, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr1, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr1);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("2-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr2, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr2, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr2, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr2);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("3-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr3, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr3, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr3, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr3);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("5-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr5, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr5, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr5, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr5);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("7-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr7, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr7, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr7, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr7);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("10-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr10, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr10, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr10, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr10);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("20-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr20, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr20, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr20, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);;
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr20);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if (selectedCurve.Equals("30-Year"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
yieldCurveMA5 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr30, 5);
|
||||
yieldCurveMA21 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr30, 21);
|
||||
yieldCurveMA55 = yieldCurve.GetMovingAverage(YieldCurve.CurveType.Yr30, 55);
|
||||
|
||||
yieldCurveCompositeDataSource=YieldCurveModel.Value(yieldCurveMA5);
|
||||
ma5CompositeDataSource=YieldCurveModel.MA(yieldCurveMA5);
|
||||
ma21CompositeDataSource=YieldCurveModel.MA(yieldCurveMA21);
|
||||
ma55CompositeDataSource=YieldCurveModel.MA(yieldCurveMA55);
|
||||
|
||||
double[] values=yieldCurve.GetYieldCurveDataOrderByDateAscending(YieldCurve.CurveType.Yr30);
|
||||
CalculateSlope(values);
|
||||
}
|
||||
else if(selectedCurve.Equals("Term Structure"))
|
||||
{
|
||||
termStrucureInterpolatorByDate=new TermStructureInterpolatorByDate();
|
||||
|
||||
DateGenerator dateGenerator=new DateGenerator();
|
||||
DateTime termStructureDate90=dateGenerator.GenerateHistoricalDate(selectedTermStructureDate,90);
|
||||
DateTime termStructureDate180=dateGenerator.GenerateHistoricalDate(selectedTermStructureDate,180);
|
||||
|
||||
termStrucureInterpolatorByDate.Add(selectedTermStructureDate,new TermStructureInterpolator(selectedTermStructureDate));
|
||||
termStrucureInterpolatorByDate.Add(termStructureDate90,new TermStructureInterpolator(termStructureDate90));
|
||||
termStrucureInterpolatorByDate.Add(termStructureDate180,new TermStructureInterpolator(termStructureDate180));
|
||||
|
||||
termStructureTenorCurveData=TermStructureModel.GetTenorCurve(termStrucureInterpolatorByDate,selectedTermStructureDate);
|
||||
termStructureDataSource=TermStructureModel.GetInterpolatedRates(termStrucureInterpolatorByDate,selectedTermStructureDate);
|
||||
termStructureTenorPointsDataSource=TermStructureModel.GetTenorRates(termStrucureInterpolatorByDate,selectedTermStructureDate);
|
||||
|
||||
termStructureTenorCurveData90=TermStructureModel.GetTenorCurve(termStrucureInterpolatorByDate,termStructureDate90);
|
||||
termStructureDataSource90=TermStructureModel.GetInterpolatedRates(termStrucureInterpolatorByDate,termStructureDate90);
|
||||
termStructureTenorPointsDataSource90=TermStructureModel.GetTenorRates(termStrucureInterpolatorByDate,termStructureDate90);
|
||||
|
||||
termStructureTenorCurveData180=TermStructureModel.GetTenorCurve(termStrucureInterpolatorByDate,termStructureDate180);
|
||||
termStructureDataSource180=TermStructureModel.GetInterpolatedRates(termStrucureInterpolatorByDate,termStructureDate180);
|
||||
termStructureTenorPointsDataSource180=TermStructureModel.GetTenorRates(termStrucureInterpolatorByDate,termStructureDate180);
|
||||
|
||||
double[] values=(from Tenor tenor in termStructureTenorCurveData.CurveTenors select tenor.ValueNum).ToArray();
|
||||
CalculateSlope(values);
|
||||
|
||||
yieldCurve = null;
|
||||
yieldCurveMA5 = null;
|
||||
yieldCurveMA21 = null;
|
||||
yieldCurveMA55 = null;
|
||||
|
||||
}
|
||||
});
|
||||
workerTask.ContinueWith((continuation) =>
|
||||
{
|
||||
BusyIndicator = false;
|
||||
UpdateProperties();
|
||||
semaphorePool[Tasks.SelectedItem].Release();
|
||||
});
|
||||
}
|
||||
}
|
||||
public void CalculateSlope(double[] observations)
|
||||
{
|
||||
if(observations==null)return;
|
||||
LeastSquaresResultWithR2 leastSquaresResult=LeastSquaresHelper.CalculateLeastSquaresWithR2(observations);
|
||||
dataSlope=leastSquaresResult.Slope;
|
||||
}
|
||||
public void InitializeDataSource()
|
||||
{
|
||||
termStrucureInterpolatorByDate=null;
|
||||
if(null!=yieldCurveCompositeDataSource)yieldCurveCompositeDataSource.Clear();
|
||||
|
||||
if(null!=termStructureTenorPointsDataSource)termStructureTenorPointsDataSource.Clear();
|
||||
if(null!=termStructureDataSource)termStructureDataSource.Clear();
|
||||
|
||||
if(null!=termStructureTenorPointsDataSource90)termStructureTenorPointsDataSource90.Clear();
|
||||
if(null!=termStructureDataSource90)termStructureDataSource90.Clear();
|
||||
|
||||
if(null!=termStructureTenorPointsDataSource180)termStructureTenorPointsDataSource180.Clear();
|
||||
if(null!=termStructureDataSource180)termStructureDataSource180.Clear();
|
||||
|
||||
if(null!=ma5CompositeDataSource)ma5CompositeDataSource.Clear();
|
||||
if(null!=ma21CompositeDataSource)ma21CompositeDataSource.Clear();
|
||||
if(null!=ma55CompositeDataSource)ma55CompositeDataSource.Clear();
|
||||
}
|
||||
private void UpdateProperties()
|
||||
{
|
||||
base.OnPropertyChanged("Values");
|
||||
base.OnPropertyChanged("MA5");
|
||||
base.OnPropertyChanged("MA21");
|
||||
base.OnPropertyChanged("MA55");
|
||||
|
||||
base.OnPropertyChanged("TermStructure");
|
||||
base.OnPropertyChanged("TermStructure90");
|
||||
base.OnPropertyChanged("TermStructure180");
|
||||
|
||||
base.OnPropertyChanged("TermStructureTenors");
|
||||
base.OnPropertyChanged("TermStructureTenors90");
|
||||
base.OnPropertyChanged("TermStructureTenors180");
|
||||
|
||||
base.OnPropertyChanged("TermStructureTenorMarkers");
|
||||
base.OnPropertyChanged("TermStructureTenorMarkers90");
|
||||
base.OnPropertyChanged("TermStructureTenorMarkers180");
|
||||
|
||||
base.OnPropertyChanged("DayCountsEnabled");
|
||||
base.OnPropertyChanged("TermStructureDatesEnabled");
|
||||
|
||||
base.OnPropertyChanged("DataSlope");
|
||||
base.OnPropertyChanged("DataSlopeDescription");
|
||||
|
||||
base.OnPropertyChanged("Title");
|
||||
}
|
||||
// **************************************************** C O M P O S I T E D A T A S O U R C E *************************************************
|
||||
// **********************************************************************************************************************************************
|
||||
public CompositeDataSource Values
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null == selectedCurve||selectedCurve.Equals("Term Structure")) return null;
|
||||
return yieldCurveCompositeDataSource;
|
||||
}
|
||||
}
|
||||
public CompositeDataSource MA5
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null == selectedCurve||selectedCurve.Equals("Term Structure")) return null;
|
||||
return ma5CompositeDataSource;
|
||||
}
|
||||
}
|
||||
public CompositeDataSource MA21
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null == selectedCurve||selectedCurve.Equals("Term Structure")) return null;
|
||||
return ma21CompositeDataSource;
|
||||
}
|
||||
}
|
||||
public CompositeDataSource MA55
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null == selectedCurve||selectedCurve.Equals("Term Structure")) return null;
|
||||
return ma55CompositeDataSource;
|
||||
// return YieldCurveModel.MA(yieldCurveMA55);
|
||||
}
|
||||
}
|
||||
// ****************************************************************************************************************************************************
|
||||
// ****************************************************************** T E R M S T R U C T U R E ****************************************************
|
||||
// ****************************************************************************************************************************************************
|
||||
public CompositeDataSource TermStructure
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureDataSource||!selectedCurve.Equals("Term Structure"))return null;
|
||||
return termStructureDataSource;
|
||||
}
|
||||
}
|
||||
public CompositeDataSource TermStructureTenors
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureTenorPointsDataSource||!selectedCurve.Equals("Term Structure"))return null;
|
||||
return termStructureTenorPointsDataSource;
|
||||
}
|
||||
}
|
||||
public CenteredTextMarker[] TermStructureTenorMarkers
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureDataSource||!selectedCurve.Equals("Term Structure"))return null;
|
||||
List<CenteredTextMarker> centeredTextMarkers=new List<CenteredTextMarker>();
|
||||
if(null==termStructureTenorCurveData)return null;
|
||||
CenteredTextMarker centeredTextMarker=null;
|
||||
StringBuilder sb=null;
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("1D")).Append("(").Append("1D").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("1M")).Append("(").Append("1M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("3M")).Append("(").Append("3M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("6M")).Append("(").Append("6M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("1Y")).Append("(").Append("1Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("2Y")).Append("(").Append("2Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("3Y")).Append("(").Append("3Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("5Y")).Append("(").Append("5Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("7Y")).Append("(").Append("7Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("10Y")).Append("(").Append("10Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("20Y")).Append("(").Append("20Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData.GetTenorValue("30Y")).Append("(").Append("30Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarker.VerticalShift="45";
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
return centeredTextMarkers.ToArray();
|
||||
}
|
||||
}
|
||||
public CompositeDataSource TermStructure90
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureDataSource90||!selectedCurve.Equals("Term Structure"))return null;
|
||||
return termStructureDataSource90;
|
||||
}
|
||||
}
|
||||
public CompositeDataSource TermStructureTenors90
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureTenorPointsDataSource90||!selectedCurve.Equals("Term Structure"))return null;
|
||||
return termStructureTenorPointsDataSource90;
|
||||
}
|
||||
}
|
||||
public CenteredTextMarker[] TermStructureTenorMarkers90
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureDataSource90||!selectedCurve.Equals("Term Structure"))return null;
|
||||
List<CenteredTextMarker> centeredTextMarkers=new List<CenteredTextMarker>();
|
||||
if(null==termStructureTenorCurveData90)return null;
|
||||
CenteredTextMarker centeredTextMarker=null;
|
||||
StringBuilder sb=null;
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("1D")).Append("(").Append("1D").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("1M")).Append("(").Append("1M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("3M")).Append("(").Append("3M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("6M")).Append("(").Append("6M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("1Y")).Append("(").Append("1Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("2Y")).Append("(").Append("2Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("3Y")).Append("(").Append("3Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("5Y")).Append("(").Append("5Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("7Y")).Append("(").Append("7Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("10Y")).Append("(").Append("10Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("20Y")).Append("(").Append("20Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData90.GetTenorValue("30Y")).Append("(").Append("30Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarker.VerticalShift="45";
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
return centeredTextMarkers.ToArray();
|
||||
}
|
||||
}
|
||||
public CompositeDataSource TermStructure180
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureDataSource180||!selectedCurve.Equals("Term Structure"))return null;
|
||||
return termStructureDataSource180;
|
||||
}
|
||||
}
|
||||
public CompositeDataSource TermStructureTenors180
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureTenorPointsDataSource180||!selectedCurve.Equals("Term Structure"))return null;
|
||||
return termStructureTenorPointsDataSource180;
|
||||
}
|
||||
}
|
||||
public CenteredTextMarker[] TermStructureTenorMarkers180
|
||||
{
|
||||
get
|
||||
{
|
||||
if(null==termStrucureInterpolatorByDate||null==termStructureDataSource180||!selectedCurve.Equals("Term Structure"))return null;
|
||||
List<CenteredTextMarker> centeredTextMarkers=new List<CenteredTextMarker>();
|
||||
if(null==termStructureTenorCurveData180)return null;
|
||||
CenteredTextMarker centeredTextMarker=null;
|
||||
StringBuilder sb=null;
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("1D")).Append("(").Append("1D").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("1M")).Append("(").Append("1M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("3M")).Append("(").Append("3M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("6M")).Append("(").Append("6M").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("1Y")).Append("(").Append("1Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("2Y")).Append("(").Append("2Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("3Y")).Append("(").Append("3Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("5Y")).Append("(").Append("5Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("7Y")).Append("(").Append("7Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("10Y")).Append("(").Append("10Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("20Y")).Append("(").Append("20Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
sb=new StringBuilder();
|
||||
centeredTextMarker=new CenteredTextMarker();
|
||||
sb.Append(termStructureTenorCurveData180.GetTenorValue("30Y")).Append("(").Append("30Y").Append(")");
|
||||
centeredTextMarker.Text=sb.ToString();
|
||||
centeredTextMarker.VerticalShift="45";
|
||||
centeredTextMarkers.Add(centeredTextMarker);
|
||||
|
||||
return centeredTextMarkers.ToArray();
|
||||
}
|
||||
}
|
||||
// *********************************************************************************************************************************************************
|
||||
public Boolean CheckBoxLegendVisible
|
||||
{
|
||||
get
|
||||
{
|
||||
return isLegendVisible;
|
||||
}
|
||||
set
|
||||
{
|
||||
isLegendVisible = value;
|
||||
base.OnPropertyChanged("CheckBoxLegendVisible");
|
||||
base.OnPropertyChanged("LegendVisible");
|
||||
}
|
||||
}
|
||||
public String LegendVisible
|
||||
{
|
||||
get
|
||||
{
|
||||
if (isLegendVisible) return "true";
|
||||
return "false";
|
||||
}
|
||||
set
|
||||
{
|
||||
isLegendVisible = Boolean.Parse(value);
|
||||
base.OnPropertyChanged("LegendVisible");
|
||||
}
|
||||
}
|
||||
public override String Title
|
||||
{
|
||||
get
|
||||
{
|
||||
if(selectedCurve.Equals("Term Structure"))
|
||||
{
|
||||
return "Treasury Yield Curve - Interest Rates "+"("+selectedCurve+") Curve Date ("+Utility.DateTimeToStringMMSDDSYYYY(selectedTermStructureDate)+")";
|
||||
}
|
||||
else
|
||||
{
|
||||
if(null==yieldCurve||0==yieldCurve.Count)return "";
|
||||
return "Treasury Yield Curve - Interest Rates "+"("+selectedCurve+") Thru "+Utility.DateTimeToStringMMSDDSYYYY(yieldCurve[0].Date);
|
||||
}
|
||||
}
|
||||
}
|
||||
public bool TermStructureDatesEnabled
|
||||
{
|
||||
get{return selectedCurve.Equals("Term Structure")?true:false;}
|
||||
}
|
||||
|
||||
public Boolean DayCountsEnabled
|
||||
{
|
||||
get{return selectedCurve.Equals("Term Structure")?false:true;}
|
||||
}
|
||||
public DateTime SelectedTermStructureDate
|
||||
{
|
||||
get{return selectedTermStructureDate;}
|
||||
set{selectedTermStructureDate=value;base.OnPropertyChanged("SelectedTermStructureDate");}
|
||||
}
|
||||
public List<DateTime> TermStructureDates
|
||||
{
|
||||
get{return termStructureDates;}
|
||||
}
|
||||
public List<Int32> DayCounts
|
||||
{
|
||||
get { return dayCounts; }
|
||||
}
|
||||
public Int32 SelectedDayCount
|
||||
{
|
||||
get { return selectedDayCount; }
|
||||
set { selectedDayCount = value; base.OnPropertyChanged("SelectedDayCount"); }
|
||||
}
|
||||
public List<String> Curves
|
||||
{
|
||||
get { return curves; }
|
||||
}
|
||||
public String SelectedCurve
|
||||
{
|
||||
get { return selectedCurve; }
|
||||
set { selectedCurve = value; base.OnPropertyChanged("SelectedCurve"); }
|
||||
}
|
||||
public String DataSlope
|
||||
{
|
||||
get
|
||||
{
|
||||
if(dataSlope.Equals(double.NaN))return Utility.FormatNumber(0,3);
|
||||
return Utility.FormatNumber(dataSlope,3);
|
||||
}
|
||||
}
|
||||
// ***********************************************************************************************************************************************************************************
|
||||
// ********************************************************************************* T O O L T I P C A L L O U T S ****************************************************************
|
||||
// ***********************************************************************************************************************************************************************************
|
||||
public String DataSlopeDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
StringBuilder sb=new StringBuilder();
|
||||
if(selectedCurve.Equals("Term Structure"))
|
||||
{
|
||||
sb.Append("Term Structure: A positive slope implies the bond market expects the economy to do well,").Append("\n");
|
||||
sb.Append("and a negative slope implies the bond market expects the economy to do badly.").Append("\n");
|
||||
sb.Append("A negatively sloped – inverted – yield curve implies that investors expect interest").Append("\n");
|
||||
sb.Append(" rates to be lower in the future.");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append("Slope of selected data tenor.");
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user