Files
TradeBlotter/Views/ValueAtRiskView.xaml
2024-02-23 06:58:53 -05:00

102 lines
7.2 KiB
XML

<UserControl x:Class="TradeBlotter.Views.ValueAtRiskView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:TradeBlotter.UIUtils"
xmlns:wpfx="http://schemas.xceed.com/wpf/xaml/toolkit"
>
<UserControl.Resources>
<Style x:Key="TradeItemStyle" TargetType="{x:Type telerik:RadGridView}">
</Style>
</UserControl.Resources>
<wpfx:BusyIndicator Name="BusyBar" IsBusy="{Binding Path=BusyIndicator}" BusyContent="{Binding Path=BusyContent}">
<Grid Background="LightGray">
<DockPanel>
<Grid DockPanel.Dock="Bottom" Margin="0,2,4,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="168" />
<ColumnDefinition Width="153" />
<ColumnDefinition Width="6" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="9*" />
<RowDefinition Height="3" />
<RowDefinition Height="Auto" />
<RowDefinition Height="3" />
<RowDefinition Height="Auto" />
<RowDefinition Height="3" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="1" FontFamily="Arial" Content="{Binding Path=Title}" HorizontalAlignment="Center" FontSize="20"></Label>
<StackPanel Grid.Row="3" HorizontalAlignment="Left" Orientation="Horizontal" VerticalAlignment="Center" Grid.ColumnSpan="2">
<Button Margin="5,0,5,0" Width="65" Content="Add" HorizontalAlignment="Left" Command="{Binding Path=AddCommand}"></Button>
<Button Margin="5,0,5,0" Width="65" Content="Edit" HorizontalAlignment="Left" Command="{Binding Path=EditCommand}"></Button>
<Button Margin="5,0,5,0" Width="65" Content="Remove" HorizontalAlignment="Left" Command="{Binding Path=RemoveCommand}"></Button>
<Button Margin="5,0,5,0" Width="65" Content="Reset" HorizontalAlignment="Left" Command="{Binding Path=ResetCommand}"></Button>
</StackPanel>
<StackPanel Grid.Row="5" HorizontalAlignment="Left" Orientation="Horizontal" VerticalAlignment="Center" Grid.ColumnSpan="6">
<Label VerticalAlignment="Center" Margin="5,0,5,0" Content="VaR:" HorizontalAlignment="Left" />
<TextBlock VerticalAlignment="Center" Margin="5,0,5,0" Text="{Binding Path=ValueAtRisk, ValidatesOnDataErrors=True, StringFormat='{}{0:C}', UpdateSourceTrigger=PropertyChanged}" />
<Label VerticalAlignment="Center" Margin="5,0,5,0" Content="|" />
<Label VerticalAlignment="Center" Margin="5,0,5,0" Content="VaR(%):" HorizontalAlignment="Left" />
<TextBlock VerticalAlignment="Center" Margin="5,0,5,0" Text="{Binding Path=ValueAtRiskPercent, ValidatesOnDataErrors=True, StringFormat='{}{0:P}', UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel Grid.Row="7" HorizontalAlignment="Left" Orientation="Horizontal" VerticalAlignment="Center" Grid.ColumnSpan="5">
<Label Content="Days:" HorizontalAlignment="Left" Target="{Binding ElementName=daysLbl}" ></Label>
<ComboBox ItemsSource="{Binding Path=DayCounts, Mode=OneWay}" SelectedItem="{Binding Path=SelectedDayCount, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{x:Null}" ></ComboBox>
<Label Content="Confidence:" HorizontalAlignment="Left" ></Label>
<ComboBox ItemsSource="{Binding Path=ConfidenceValues, Mode=OneWay}" SelectedItem="{Binding Path=SelectedConfidence, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{x:Null}" ></ComboBox>
<Label Content="%" HorizontalAlignment="Left" ></Label>
<Label Content="AsOf:" HorizontalAlignment="Left" ></Label>
<telerik:RadDatePicker SelectableDateStart="{Binding Path=SelectableDateStart}" SelectableDateEnd="{Binding Path=SelectableDateEnd}" VerticalAlignment="Top" HorizontalAlignment="Left" SelectedDate="{Binding Path=SelectedDate,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
<telerik:RadGridView ItemsSource="{Binding Path=AllHoldings, ValidatesOnDataErrors=True,Mode=TwoWay}" CanUserSelect="True" SelectionMode="Single" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" ItemContainerStyle="{StaticResource TradeItemStyle}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="6" AlternationCount="2" AlternateRowBackground="Bisque" ShowGroupFooters="True" ShowColumnFooters="True" AutoGenerateColumns="False" >
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn IsReadOnly="True" Header="AsOf" DataMemberBinding="{Binding Path=AsOf,StringFormat='{}{0:MM/dd/yyyy}'}" />
<telerik:GridViewDataColumn IsReadOnly="True" Header="Symbol" DataMemberBinding="{Binding Path=Symbol}" />
<telerik:GridViewDataColumn IsReadOnly="False" Header="Shares" DataMemberBinding="{Binding Path=Shares,StringFormat='{}{0:0.000}'}" />
<telerik:GridViewDataColumn IsReadOnly="True" Header="Industry" DataMemberBinding="{Binding Path=Industry}" />
<telerik:GridViewDataColumn IsReadOnly="True" Header="Sector" DataMemberBinding="{Binding Path=Sector}" />
<telerik:GridViewDataColumn IsReadOnly="True" Header="Exposure" DataMemberBinding="{Binding Path=Exposure,StringFormat='{}{0:C}'}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<local:ValueAtRiskModelExposureFunction />
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn IsReadOnly="True" Header="Weight (Exp)" DataMemberBinding="{Binding Path=WeightExp,StringFormat='{}{0:P}'}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<local:ValueAtRiskModelWeightExpFunction />
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn IsReadOnly="True" Header="Market Value" DataMemberBinding="{Binding Path=MarketValue,StringFormat='{}{0:C}'}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<local:ValueAtRiskModelMarketValueFunction />
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn IsReadOnly="True" Header="Weight (MV)" DataMemberBinding="{Binding Path=Weight,StringFormat='{}{0:P}'}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<local:ValueAtRiskModelWeightFunction />
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn IsReadOnly="True" Header="VaR Contribution" DataMemberBinding="{Binding Path=Contribution,StringFormat='{}{0:P}'}" >
<telerik:GridViewDataColumn.AggregateFunctions>
<local:ValueAtRiskModelVaRContributionFunction />
</telerik:GridViewDataColumn.AggregateFunctions>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn IsReadOnly="True" Header="Contribution Date" DataMemberBinding="{Binding Path=ContributionDate,StringFormat='{}{0:MM/dd/yyyy}'}" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
</DockPanel>
</Grid>
</wpfx:BusyIndicator>
</UserControl>