public String Output() { List <DateTime> dates = datesAndValuation.Keys.ToList(); List <double> values = datesAndValuation.Values.ToList(); String output = "<stock benchID=\"" + benchId + '\"' + '\n' + "benchmark=\"" + benchmark + '\"' + '\n' + "id=\"" + id + '\"' + '\n' + "industry=\"" + industry + '\"' + '\n' + "name=\"" + name + '\"' + '\n' + "sector=\"" + sector + '\"' + '>' + '\n' + "<zone zname=\"" + zone + "\">" + '\n' + "<country cname=\"" + country + "\" />" + '\n' + "</zone>" + '\n' + "<sector sname=\"" + sector + "\" >" + '\n' + "<industry iname=\"" + industry + "\" />" + '\n' + "</sector>" + '\n' + "<prices>"; for (int i = 0; i < datesAndValuation.Count(); i++) { double mm4 = -1, mm12 = -1, mm24 = -1; avg4M.TryGetValue(dates.ElementAt(i), out mm4); avg1Y.TryGetValue(dates.ElementAt(i), out mm12); avg2Y.TryGetValue(dates.ElementAt(i), out mm24); string d = dates.ElementAt(i).ToString().Substring(0, 10); output += "<obs relativePerf= \"" + Math.Round(relativePerf.ElementAt(i), 2) + "\" mm24 =" + (((int)mm24 != 0) ? "\"" + Math.Round(mm24, 2) : "\"") + "\" mm12 = \"" + (((int)mm12 != 0) ? Math.Round(mm12, 2) + "\"" : "\""); output += " mm4 = \"" + (((int)mm4 != 0) ? Math.Round(mm4, 2) + "\"" : "\"") + " priceBench=\"" + Math.Round(index.ValueAt(i), 2) + "\" price = \"" + Math.Round(values.ElementAt(i), 2) + "\""; output += " date=\"" + d + "\" />"; output += '\n'; } output += "</prices>" + '\n' + "<indicators> " + '\n'; output += "<indicator" + ((alpha3M != VALUE_IF_ERROR) ? " alpha=\"" + Math.Round(alpha3M, 2) + "\"" : "") + ((beta3M != VALUE_IF_ERROR) ? " beta=\"" + Math.Round(beta3M, 2) + "\"" : "") + " perf=\"" + Math.Round(perf3M, 2) + "\" period =\"3M\" />"; output += "<indicator" + ((alpha6M != VALUE_IF_ERROR) ? " alpha=\"" + Math.Round(alpha6M, 2) + "\"" : "") + ((beta6M != VALUE_IF_ERROR) ? " beta=\"" + Math.Round(beta6M, 2) + "\"" : "") + " perf=\"" + Math.Round(perf6M, 2) + "\" period =\"6M\" />"; output += "<indicator" + ((alpha1Y != VALUE_IF_ERROR) ? " alpha=\"" + Math.Round(alpha1Y, 2) + "\"" : "") + ((beta1Y != VALUE_IF_ERROR) ? " beta=\"" + Math.Round(beta1Y, 2) + "\"" : "") + " perf=\"" + Math.Round(perf1Y, 2) + "\" period =\"1Y\" />"; output += "<indicator" + ((alpha3Y != VALUE_IF_ERROR) ? " alpha=\"" + Math.Round(alpha3Y, 2) + "\"" : "") + ((beta3Y != VALUE_IF_ERROR) ? " beta=\"" + Math.Round(beta3Y, 2) + "\"" : "") + " perf=\"" + Math.Round(perf3Y, 2) + "\" period =\"3Y\" />"; output += "<indicator" + ((alpha5Y != VALUE_IF_ERROR) ? " alpha=\"" + Math.Round(alpha5Y, 2) + "\"" : "") + ((beta5Y != VALUE_IF_ERROR) ? " beta=\"" + Math.Round(beta5Y, 2) + "\"" : "") + " perf=\"" + Math.Round(perf5Y, 2) + "\" period =\"5Y\" />"; output += "<indicator" + ((alpha != VALUE_IF_ERROR) ? " alpha=\"" + Math.Round(alpha, 2) + "\"" : "") + ((beta != VALUE_IF_ERROR) ? " beta=\"" + Math.Round(beta, 2) + "\"" : "") + " perf=\"" + Math.Round(perfAT, 2) + "\" period =\"All-Time\" />"; output += "<volat>" + '\n' + "<vol Vol_weekly = \"" + Math.Round(volatility, 2) + "\" />" + "<vol Vol_annual = \"" + Math.Round(annualVolatility, 2) + "\" />" + '\n' + "</volat>" + '\n' + "</indicators>" + '\n' + "<trackingError te= \"" + Math.Round(trackingError, 2) + "\" />" + '\n' + "<informationRatio ir= \"" + Math.Round(informationRatio, 2) + "\" />" + '\n' + "</stock>" + '\n'; return(output); }