查看解析 》
【参考答案】 Begin BegT:=20210101T; EndT:=20211231T; IndexId:='SH000016'; FactorArr:=array(("大类因子":"盈利因子","因子名称":"净资产收益率(%)ROE","因子公式":"Last12MData(RDate,9900100)","是否去奇异值":1.0,"是否标准化":1.0,"是否参与归因":1.0),("大类因子":"盈利因子","因子名称":"总资产报酬率(%)ROA","因子公式":"Last12MData(RDate,9900105)","是否去奇异值":1.0,"是否标准化":1.0,"是否参与归因":1.0),("大类因子":"成长因子","因子名称":"营业利润增长率(%)","因子公式":"Last12MData(RDate,9900602)","是否去奇异值":1.0,"是否标准化":1.0,"是否参与归因":1.0),("大类因子":"成长因子","因子名称":"利润总额增长率(%)","因子公式":"Last12MData(RDate,9900603)","是否去奇异值":1.0,"是否标准化":1.0,"是否参与归因":1.0)); Obj:=new myFactorAttribution(); //开始日期 Obj.FBegT:=BegT; //截止日期 Obj.FEndT:=EndT; //归因因子库 Obj.FFactorArr:=FactorArr; //回归方式 Obj.FRegType:=0; //是否使用网格计算 Obj.FGridComputing:=false; //网格个数 、 Obj.FGridNo:=5; //普通最小二乘法 obj.FRegType:=0 ; //指定市场(指数)ID Obj.MyIndexId:=IndexId; //归因 Obj.AttributionTest(); return array( '统计-总收益': Obj.GetPSummaryReturn(), '----评价(汇总)----':'-----------', '统计-因子敞口':Obj.GetPFactorExposure(), '统计-因子收益':Obj.GetPFactorReturn(), '统计-因子贡献':Obj.GetPFactorContri(), '统计-残差贡献':Obj.GetPAssetContri(), '----评价(详情)----':'-----------', '详情-总收益': Obj.GetPSummaryReturnDetail(1), '详情-因子敞口':Obj.GetPFactorExposureDetail(), '详情-因子收益':Obj.GetPFactorReturnDetail(1), '详情-因子贡献':Obj.GetPFactorContriDetail(1), '详情-残差贡献':Obj.GetPAssetContriDetail(1), '----回归检验----':'-----------', '回归R方':Obj.GetPRegresSquared(), '回归T值':Obj.GetPRegresTTest(), '回归矩阵':obj.GetRegressionMatrix(EndT), '----因子库----':'-----------', '在线因子': Data, '本地因子': FactorArr, );End;type myFactorAttribution=class(TSFactorAttribution) MyIndexId; function GetPortfolioWeightandReturn(vEndT);override; begin pd:=MarketLastTradeDay(vEndT); GetBkWeightByDate(MyIndexId,pd,t); PData:=select ["代码"], pd as "截止日", ["比例(%)"] as "比例(%)", spec(StockZf4(vEndT),["代码"]) as "涨幅(%)" from t end; return PData; end function GetBenchmarkWeightandReturn(vEndT);override; begin return array(); endend;