本文整理汇总了C#中ConstructGen.Clone方法的典型用法代码示例。如果您正苦于以下问题:C# ConstructGen.Clone方法的具体用法?C# ConstructGen.Clone怎么用?C# ConstructGen.Clone使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConstructGen
的用法示例。
在下文中一共展示了ConstructGen.Clone方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoIt_DailyWeights
public static ReturnsFromWeightsResult DoIt_DailyWeights(ConstructGen<double> dailyWts_, DateTime? maxPnlDate_=null)
{
var wts = (ConstructGen<double>)dailyWts_.Clone();
var indexPrices = Singleton<ComIndexPrices>.Instance.GetData(DataConstants.DATA_START, DateTime.Today, false);
var indexReturns = indexPrices.ToReturns().GetSubValues(dailyWts_.Dates.First(),DateTime.Today);
var coms = Singleton<ComIDs>.Instance.ToArray();
var spotPnl = new ConstructGen<double>(wts.ColumnHeadings) {Name = wts.Name};
var dollImpWts = new ConstructGen<double>(wts.ColumnHeadings);
double[] currentWts = Utils.GetArrayOfValue(0d, wts.ArrayLength);
for (int i = 0; i < indexReturns.Dates.Count; ++i)
{
var date = indexReturns.Dates[i];
if (maxPnlDate_.HasValue && date > maxPnlDate_.Value)
break;
var todayIndexReturns = indexReturns.GetValues(date);
var todayStratReturns=new double[wts.ArrayLength];
for (int j = 0; j < todayStratReturns.Length; ++j)
{
// set today's strat returns
todayStratReturns[j] = currentWts[j]*todayIndexReturns[j];
// dollar impact weights
currentWts[j] *= (1d + todayStratReturns[j]);
}
spotPnl.SetValues(date, todayStratReturns);
// if the weights have change at the end of today, update currentWts so they affect tomorrows pnl
if (wts.Dates.Contains(indexReturns.Dates[i]))
currentWts = wts.GetValues(indexReturns.Dates[i]);
dollImpWts.SetValues(date, (double[]) currentWts.Clone());
}
return new ReturnsFromWeightsResult(dailyWts_.Name)
{
SpotPnl = spotPnl,
OriginalWts = dailyWts_,
DailyDollarImpactedWeights = dollImpWts,
SpotsUsed = indexPrices.GetSubValues(dailyWts_.Dates.First(),DateTime.Today)
};
}