Changed for MGSH

This commit is contained in:
2025-02-06 16:41:52 -05:00
parent dada5f0cdc
commit 8761acc4c1

View File

@@ -209,6 +209,87 @@ namespace TradeBlotter.UIUtils
return sb.ToString();
}
}
// **********************************************************************************************************************************
// ********************************************************* M G S H Q U A N T U M M O M E N T U M ******************************************************
// **********************************************************************************************************************************
public class MGSHMomentumPositionSumFunctionShares : AggregateFunction<MGSHPositionModel,String>
{
public MGSHMomentumPositionSumFunctionShares()
{
this.AggregationExpression = items => Sum(items);
}
private String Sum(IEnumerable<MGSHPositionModel> source)
{
double sum=(from MGSHPositionModel positionModel in source where Utility.IsEpoch(positionModel.SellDate) select positionModel.Shares).Sum();
return Utility.FormatNumber(sum,3,false);
}
}
public class MGSHMomentumPositionSumFunctionExposure : AggregateFunction<MGSHPositionModel,String>
{
public MGSHMomentumPositionSumFunctionExposure()
{
this.AggregationExpression = items => Sum(items);
}
private String Sum(IEnumerable<MGSHPositionModel> source)
{
double exposure=(from MGSHPositionModel positionModel in source where Utility.IsEpoch(positionModel.SellDate) select positionModel.Exposure).Sum();
return Utility.FormatCurrency(exposure);
}
}
public class MGSHMomentumPositionSumFunctionMarketValue : AggregateFunction<MGSHPositionModel,String>
{
public MGSHMomentumPositionSumFunctionMarketValue()
{
this.AggregationExpression = items => Sum(items);
}
private String Sum(IEnumerable<MGSHPositionModel> source)
{
double marketValue=(from MGSHPositionModel positionModel in source where Utility.IsEpoch(positionModel.SellDate) select positionModel.MarketValue).Sum();
return Utility.FormatCurrency(marketValue);
}
}
public class MGSHMomentumPositionSumFunctionGainLoss : AggregateFunction<MGSHPositionModel,String>
{
public MGSHMomentumPositionSumFunctionGainLoss()
{
this.AggregationExpression = items => Sum(items);
}
private String Sum(IEnumerable<MGSHPositionModel> source)
{
StringBuilder sb=new StringBuilder();
double sum=(from MGSHPositionModel positionModel in source select positionModel.GainLoss).Sum();
sb.Append("Total:").Append(Utility.FormatCurrency(sum)).Append("\n");
sum=(from MGSHPositionModel positionModel in source where Utility.IsEpoch(positionModel.SellDate) select positionModel.GainLoss).Sum();
sb.Append("Active:").Append(Utility.FormatCurrency(sum));
return sb.ToString();
}
}
public class MGSHMomentumPositionSumFunctionGainLossPcnt : AggregateFunction<MGSHPositionModel,String>
{
public MGSHMomentumPositionSumFunctionGainLossPcnt()
{
this.AggregationExpression = items => Sum(items);
}
private String Sum(IEnumerable<MGSHPositionModel> source)
{
StringBuilder sb=new StringBuilder();
double marketValue=0.00;
double exposure=0.00;
double gainLossPcnt=0.00;
double cumulativeReturn=ModelPerformanceAggregator.CalculateCumulativeReturn(source);
sb.Append("Total:").Append(Utility.FormatPercent(cumulativeReturn,2)).Append("\n");
marketValue=(from MGSHPositionModel positionModel in source where Utility.IsEpoch(positionModel.SellDate) select positionModel.MarketValue).Sum();
exposure=(from MGSHPositionModel positionModel in source where Utility.IsEpoch(positionModel.SellDate) select positionModel.Exposure).Sum();
if(0.00!=exposure)gainLossPcnt=(marketValue-exposure)/exposure;
sb.Append("Active:").Append(Utility.FormatPercent(gainLossPcnt,2));
return sb.ToString();
}
}
// **********************************************************************************************************************************
// ********************************************************* C M M O M E N T U M ******************************************************
// **********************************************************************************************************************************