QQQ. Days of the month, close to open.

Profit/loss (%) calculated for each day of the month for the period from 3/10/1999 till 11/28/2011: go long on close, exit on open next day.

day1999200020012002200320042005200620072008200920102011Total
13.445.614.59-0.841.100.412.05-0.01-1.84-0.550.305.200.5219.96
2-0.898.55-0.67-1.394.701.70-0.180.180.953.72-2.903.67-1.1216.28
38.497.11-8.62-3.955.040.890.64-0.970.62-1.083.161.170.4812.93
42.85-0.53-0.99-0.51-1.130.611.171.52-0.24-2.394.52-1.47-2.361.05
54.08-9.477.980.04-2.301.58-0.710.13-0.92-2.88-0.870.76-0.13-2.68
6-0.223.09-1.942.781.91-2.671.96-0.201.53-4.720.96-0.68-0.930.84
73.137.31-5.22-0.183.610.570.87-0.67-2.091.24-1.111.483.0411.97
8-0.527.860.274.04-1.64-0.230.19-0.800.661.522.350.81-3.5711.00
93.21-0.48-2.76-4.463.11-0.240.322.60-1.740.882.464.03-1.485.43
101.55-3.112.124.07-2.85-0.47-0.21-0.55-1.18-1.301.685.39-1.733.42
115.352.186.642.181.730.321.20-1.511.22-3.800.77-5.180.7511.87
12-1.305.38-4.01-2.02-0.44-0.91-0.43-0.131.28-1.94-0.92-3.260.16-8.55
131.43-0.224.05-3.672.483.01-0.33-0.032.255.26-0.672.061.4917.09
140.356.88-2.630.972.19-1.471.441.260.614.04-0.900.881.3014.90
15-0.64-3.922.383.295.50-0.410.583.210.43-4.68-1.281.59-2.183.83
164.322.58-8.88-7.302.162.16-0.421.60-0.330.564.30-1.24-2.42-2.91
171.34-3.08-6.1313.72-5.431.581.07-3.152.43-6.64-5.122.920.88-5.62
18-0.81-1.546.32-6.072.89-0.96-0.380.300.366.482.501.74-4.096.76
192.532.137.58-6.030.042.141.150.570.287.750.73-1.87-1.1115.89
201.24-4.29-6.68-0.60-0.690.78-1.311.692.95-1.11-2.21-3.031.91-11.35
21-0.06-3.64-6.33-0.373.472.632.73-1.361.061.171.472.793.657.22
221.443.112.66-5.47-0.66-0.75-1.02-1.510.61-7.41-2.55-0.25-2.09-13.86
234.86-0.18-1.25-2.500.880.530.460.342.64-1.984.82-1.75-3.713.20
24-0.033.285.07-5.49-3.841.400.350.11-0.24-3.330.800.821.03-0.08
252.252.77-1.940.30-0.910.231.041.791.084.81-0.48-1.54-1.268.11
262.282.792.610.141.05-0.891.490.743.30-6.330.510.390.748.78
274.390.942.164.01-2.251.06-0.460.32-1.54-2.28-6.392.014.236.21
282.96-1.93-0.072.241.850.321.13-0.470.443.762.940.843.0517.09
291.892.45-0.021.151.172.360.691.391.89-2.900.160.931.5212.67
304.63-3.94-1.13-2.743.38-0.49-0.450.13-0.172.971.74-1.90-0.881.15
313.562.642.850.29-2.100.281.570.552.01-3.240.21-0.930.668.39


Query used:
--1
select [day], [1999], [2000], [2001], [2002], [2003], [2004], [2005], [2006],[2007], [2008], [2009], [2010], [2011], [2012] Total into #t
from 
	(	select cast((t.o- t_1.c)/t_1.c * 100 as decimal(10,2))  pl, DATEPART(d, t.d) [day], YEAR(t.d) y 
		from qqq t
		join qqq t_1 on t_1.id = t.id -1
		) p
pivot
(
sum(pl)
for y in ([1999], [2000], [2001], [2002], [2003], [2004], [2005], [2006],[2007], [2008], [2009], [2010], [2011],[2012])
) r	
order by [day]

--2
update t
set t.Total = p.pl
from #t t
join  (
	select
      datepart(d, t.d) [day], 
      cast(sum((t.o- t_1.c)/t_1.c * 100) as decimal(10,2)) 'PL'  
      from qqq t
      join qqq t_1 on t_1.id = t.id -1
      group by   datepart(d, t.d)
      ) p on T.[day] = p.[day]

--3
DECLARE @HeaderList varchar(max)
SELECT @HeaderList = COALESCE(@HeaderList + '', '') +    name 
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id
select '' + @HeaderList + ''


--4
DECLARE @SelectList varchar(max)
SELECT @SelectList = COALESCE(@SelectList + '+''''+', '') +    'CAST([' + name + '] AS varchar(50))'
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id
--select '' + @SelectList + ''
declare @sql varchar(max)

select @sql = 'select ''''+' + @SelectList + '+'''' from #t'

exec (@sql)



3 and 4 can be replaced with:

DECLARE @HeaderList varchar(max), @head varchar(1000)
SELECT @HeaderList = COALESCE(@HeaderList + '', '') +    name 
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id
select @head = '' + @HeaderList + ''

DECLARE @SelectList varchar(max)
SELECT @SelectList = COALESCE(@SelectList + '+''''+', '') +    'CAST([' + name + '] AS varchar(50))'
from tempdb.sys.columns where object_id = object_id('tempdb..#t') order by column_id

declare @sql varchar(max)
select @sql = 'select ''' + @head + ''' union all select ''''+' + @SelectList + '+'''' from #t'
exec (@sql)



theCrunchR | © 2011