Each person has been ranked into four groups by each
of Rajas, Jeff and me.
In this ranking, we'll make rank 1 be the best for each of us.
One way to come to consensus is to add up the ranks each of us assigned.
So, a sum of  3 would mean that each of us assigned rank 1 to the person.
That is the best.

Dilip, 3
Ramanpreet, 3
Urvashi, 3
Tanay, 4
Rohit, 5
Heramb, 5
Vinod, 6
Sweta, 7
Pranita, 8
Alind, 8
Abhay, 8
Hari-Om, 8
Sandhya, 9
Swati, 9
Neha, 9
Meena, 10
Naina, 11
Prateek, 11
Showvik, 12
Rachit, 12

=========
Dear Jeff and Sandeep,

This begins with final grouped rankings and then continues
with the individual homeworks and project evaluations.
Other important data points will be Jeff's evaluations of the 
individual project group dynamics.

Warm Regards,
Dennis


Final grouped rankings from Dennis.

High:
Dilip, Ramanpreet, Urvashi

High on project, some trouble on homeworks:
Heramb
Sweta, Hari-Om
Vinod, Meena
Tanay, Rohit

Middle: project mostly ok, some trouble on homeworks

Neha, Naina
Abhay, Sanhya
Prateek, Pranita

Need more practice: trouble on project and on homeworks.

Swati, Showvik
Rachit, Alind


========

Detailed comments regarding Homework 1:

dilip: homework 1, all correct

abhay: home1_f has , ' instead of ,'. home1_3 not quite correct.
home1_3 correct second time.

alind/gaurav tripathi: home1_3 (exercise3, small interest rate problem.
  home1_2 -- interface changed; please document
  home1_4 -- all correct
Second attempt didn't work.

hearambi: home1_2 clearly didn't run because function didn't match; home1_3 doesn't parse for underbar ; home1_4.q problems with dos

meena: home1_2 is fine, but home1_3 doesn't look for underbars, so is wrong, home1_4 -- could work if you changed mydays[first] to mydays[frst]. Have to be careful about syntax. Now, everything works.

motwani: home1_2 is fine, but home1_3 doesn't look for underbars, so is wrong. home1_4 is fine.

naina: home1_2 is fine, but home1_3 doesn't look for underbars, so is wrong. You need to look for the amounts and the interests separately. home1_4 is fine
home1_3 works now.

neha: home1_2 should have a comment on top. Also, please try to use more
conventional indenting. For home1_3, you are not looking for underbar.
home1_4 is fine. Ok, the second time around.

prateek: home1_2 and home1_4 are fine. home1_3 (yieldcurve) is basically right,
but you have to divide interests by 100 because they are not percentages.

rachit: home1_2 should be tested more (after you switch from
mean to median). home1_3 -- you need to divide interest by 100. home1_4 is fine

sandhya: unreadable

showvik: home1_2 had a function call to conf but the function was 
called confidence (please make sure to 
run your programs before you send them to me).
home1_4 was fine. home1_3 -- you need to divide interest by 100; then test
on a small example.

sweta: home1_2 was fine. So was home1_4. So was home1_3.

tanay: home1_2 and home1_4 are fine but the calculation of mult is wrong in 
home1_3. Remains wrong the second time. Finally works.

urvashi: home1_2 and home1_4 is fine (remember to put slash, not backslash
for comment). Your computation of multiplier in home1_3 is incorrect. 
Plese think a bit more.
Works on second time around.

hari: median finding finds median but not confidence interval. 
home1_3.q doesn't execute to completion. Please also check how the yieldcurve
is used. If I lend money for i years, I get the interest rate corresponding
to i for every year, so prds is not appropriate. home1_4.q doesn't execute.

swati: home1_2.q is fine. home1_3.q should not use prds. If I lend money for i years, I get the interest rate corresponding
to i for every year, so prds is not appropriate. home1_4.q is fine.
Now all ok.

vinod: home1_2.q doesn't execute partly because out is used before it
is defined. home1_3.q has good logic, but interest has to
be divided by 100 to go from percentage to decimal. Please try
some examples by hand. home1_4 worked as soon as I indented all lines after the function call.

ramanpreet: home1_2 is fine, home1_4 is fine. home1_3 worked after I replaced
/ by %.

pranita: There are dos characters that make home1-2.q not work.
home1-4.q uses ad before defining it.
home1-3.q is fine. I think this person must have borrowed someone
else's solutions.

======================

Comments Regarding Homeworks 2 and 3

dilip: reverse lines good, first char good, 
nim good. 
homework 3s also good, though trade.csv should have been in the
submitted directory.
(lots of people refer to dilip)

neha:
home2 is ok 
home3 is fine except
running vwap is not running.
Should look something like this:
stock| price                          
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909

Actually it was correct the first time.

ramanpreet: home2 very nice. also did a reverse words.
nim is a little strange as the total number of sticks removed
exceeds 20, but basic idea is there.
Four way vwap crashes on trade.csv
Performance well done.
	 Second time: vwap works except that it waits till there
        are four values before it returns a result

sandhya: 
home2: good, but no nim.
home3: I don't see the moving vwap
Performance test good.
	second time around: nim worked
	moving vwap was close

abhay: worked with sandhya
	second time around: same as sandhya

heramb: home2 reverse lines and first char are fine.
No nim.
home3 four way moving vwap just gives me an error.
Lines should be more separated.
Performance fine.

naina:
home2: reverse and first character are fine
nim cannot work because the port requested is not the port in the client.
Please debug.
home3: the performance run is fine, but the moving vwap should
produce something like:
stock| price                          
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909
In fact it worked the first time.


swati:
home2:
first character and reverse are fine.
No nim.
home3:
vwap should be something like
stock| price                          
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909

for performance test, please rerun with bigger data to get a better
empirical sense of what's going on. Otherwise ok.

Second time around: vwap is fine, nim is fine if server port is correct.

sweta:
home2: reverse and first letter are fine.
Nim works though in the wrong directory.
home3: Please check your vwap function. I think it should be
stock| price
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909

For performance, increase the sizes to see if you get a difference
	Second time: vwap is fine.

tanay:
home2:
reverse line is fine.
find first character just finds the words.
nim can't work based on prompts since ports don't work. Please test further
home3: Performance test is fine
vwap should give something like
I just didn't see it.
stock| price
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909
	second time: first character is fine


alind:
home2: reverselines worked fine.
first letter assignment needs more work. You have to work on firstletter
No nim
home3: vwap has the right form (once I figured out to give the number of
days as an argument), but isn't the right calculation.
Basically ok though.
Performance test is nice.
	Second time: nim is fine

showvik: home2: reverselines didn't work, partly because myparse
doesn't return anything. Return a value if it's on the last line or 
if preceded by a colon. Please work with Rohit.
First character is fine.
No nim.

home3: performance test is good.
No 4 way vwap. Please work with a fellow student.

vinod: home2 is fine except for nim
vwap works once i changed amt to amount
performance comparison needs to compare stuff
	Second time: fine.


pranita: home2 is perfect.
home3 is fine except that the four way vwap should have the
same number of values as there are in each stock,
i.e. something like
stock| price
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909

meena: home2 is perfect. Nice close work with Pranita.
Same issue as Pranita.
The four way vwap should have the
same number of values as there are in each stock,
i.e. something like
stock| price
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909
	got it right the second time.

hari-Om:
home2: first character and reverse line are fine (you did something
off spec for the latter, but it shows the understanding I was seeking).
Nim ok
home3: vwap is fine. The newstock variable isn't defined in the performance
test -- newstock should have been newstocks and there should have been
a backquote on rantrade2

rohit motwani: 
home2: reverse and first character are fine.
nim is fine except that the server should have a matching port
to what the client is sending to (and should NOT be 1234).
home3: vwap is fine except that tradesample.csv has amt not amount
as column header. What you are calling row by row is really
column by column. You would want to do individual row by row.

urvashi: home2 is all nice. I think you've understood that material
well.
home3 -- moving vwap is nice.
the performance test didn't run at all.
Did you send me the wrong code?
	works second time

rachit:
home2: nice job on reverse and first letters, but still need nim
home3: performance test is nice, but no four way vwap

prateek:
small note: Please don't use parens in file names. 
home2: reverselines is fine.
first character is fine.
nim is very nice.

home3: Basically fine.
for four way vwap on trade.csv, you should have

stock| price
-----| -------------------------------
bac  | 2.4 2.8  2.8  3.046154 3.411111
ibm  | 1.1 2.6  2.24 3.417647 3.808333
usb  | 3.3 2.55 2.05 3.716667 3.640909

You are missing the association with the stock and the first three values.
Performance comparison is nice.


===========

Comments on Homework 4


dilip: discussion of splaying fine, joins is fine.
(I would have liked you to be more empirical, as opposed to quoting
from the manual, but at least you found the right spots to quote.)
vwap is nice
antibundle is nice but should be 0 > deltas

Hari-om: discussion of joins is fine.
(I would have liked you to be more empirical, as opposed to quoting
from the manual, but at least you found the right spots to quote.)
vwap very nice.
Nice job also on anti-bundle.

Neha:
Nice empirical work on the join types.
For splaying, you were to explore the limitations of what could be done
with splayed talbes as opposed to normal ones.
vwap is nice.
antibundle has a strange 132.5 which comes from the amount in your tmp3
	fine the second time

Prateek:
join work is nice; thanks for being empirical.
Similarly for splay tables; you also hit all the important points.
vwap was nicely done.
antibundle is very nice.

Rohit:
join and splay work was nicely described and you ran some experiments
which was good.
vwap worked nicely though you might have spread out your time
values a bit more in your data generation.
antibundle was very nice.

Urvashi:
Your discussion of join types and splays was nicely empirical and 
hit all the important points.
Trying things out is key.
vwap and antibundle are nicely programmed.

Abhay:
Still need a discussion of the limitations of splaying
Tests on joins are nice.
vwap and antibundle are nicely programmed.

Meena:
Your comparison of joins is empirical -- very good.
You still need an empirical study of the limitations of operations on splay
vwap is nicely programmed.
antibundle works well.
antibundle is nicely programmed.

Pranita:
Your comparison of joins is nicely empirical.
You still need an empirical study of the limitations of operations on splay
vwap near a time point
and antibundle are nicely programmed.

Heramb:
Discussion of joins could have had some more tests, but is otherwise fine.
You still need an empirical study of the limitations of operations on splay
vwap near a time point
and antibundle are nicely programmed.

Ramanpreet:
Nice discussion of splays including examples.
nice empirical approach to comparing join types.
vwap worked nicely (though why did you choose 8 AM as starting point?)
antibundle is nice.

Sandhya:
join types are nicely discussed.
We still need a discussion of splaying and what its limitations are.
vwap works nicely.
antibundle works nicely.

Showvik:
join discussion is nice -- i hope you did some of your own experiments.
nice discussion of splaying
home_3 (vwap) keeps throwing a type error concerning within.
Still need antibundle
	second time is ok

Swati:
Nice job with splay, very empirical (good cooperation with Sweta).
A little less empirical for joins, but clear enough.
vwap might be ok, but you need to call the function gettime.
Please work with another student on this.
Still need antibundle
	Nice job the second time

Sweta:
Good that you cooperated with Swati on the splay work
Nice empirical work on join types.
vwap is fine
antibundle is very nice

Tanay:
Nice empirical work on splay and joins.
vwap is fine
antibundle works well.

Vinod:
Nice empirical work on joins.
You hit all the important points on splay.
vwap is fine
antibundle works well.


============== 

Comments on Thanksgiving Submissions

naina:
Nice empirical work on joins and splaying.
vwap is nice
antibundle is nice.

Alind:
joins are ok except for the typo in the description of ej.
splay table hits all the high points.
vwap and antibundle are nice.
Great. On to the project!

Rachit: Nice explanations for joins and splays.
vwap and antibundle are perfect.
On to the project.


=============

Comments on Projects:

Neha and Neyla -- good understanding of the code.
Good understanding of the techniques of decision tree learning.
Code that they actually built was minimal but fine.
Need to test by showing examples of trades done and
give profit/loss and sharpe ratio.
Code doesn't run and it should (silly things like date instead of Date).
It's as if they didn't try it.
Documentation is good.
Programming is good -- definitely understand ksql.

Sweta and Hari Om -- good understanding of the code.
Good understanding of decision tree learning.
Need to test by showing examples of trades done and
give profit/loss and sharpe ratio.
Code that they actually built was minimal but fine.
Code worked and they showed good understanding of ksql.
Could have used better variable names.

Abhay and Sandhya -- good understanding of sketches.
Code needs to have loops removed, but is otherwise basically ok.
And test is to use affinity propagation for clustering.
Final project: documentation rather sloppy (large number of misspellings
and missing verbs in Instructions).
Code was functional even if limited to a small fixed number of time series
and with lots of idiosyncracies (e.g. the definition
of correlation).
Would have been nice if they had tried real data. 
	

Prateek and Pranita -- good understanding of cointegration.
Coding was only ok.
Final project code could have had better comments, but 
basically did its job.
Need a little more careful q code (e.g. one line was missing a ; and lots
of loops).

Ramanpreet and Urvashi -- excellent understanding of affinity propagation.
code all written by themselves.
Really nice work.
	Both excellent
	Very nice code. Seemed to be a few unnecessary copies,
	but basically really nice code.
	Would have been nice to see a run.

Vinod and Meena -- data warehouse.
Nice use of partitioning.
End of day data from market.
Understood the data model very well.
Will do scale work.
Code is nice.
Doesn't yet scale but clearly understand the database portion of ksql.
High for project

Tanay and Rohit -- understood risk metrics well.
Uses normal distribution.
Might include a notion of portfolio that is independent
of the total generated data.
Code is completely reasonable.
Documentation is good.
High on project. 

Heramb and Dilip -- high performance trading entry and exit.
Should do performance tests.
Reorganize the code for better performance -- pull out 
common functions.
Code is nice.
Instructions are straightforward.
The design is nice though I would think we'd want to have rules
that combine different criteria in interesting ways.
Good idea to order the table. Might have been better to part it.
Excellent project.

Rachit and Alind -- genetic algorithms.
Remarkably unrealistic assumptions.
Very small chromosomes.
More measures.
End of day prices instead of assuming can buy at low
and sell at high.
Coding very loopy.
final project: very inefficient to choose one stock each time through
the function. Should have done a group.
Should use deltas to get differences.
Project satisfactory.

Swati and Showvik -- genetic algorithm
Same strange assumptions.
More measures.
End of day prices instead of assuming can buy at low
and sell at high.
Coding very loopy.
final project: very inefficient to choose one stock each time through
the function. Should have done a group.
Should use deltas to get differences.
The genetic algorithm part is not correct. No mutation.
Crossover is deterministic whereas it should be probabilistic.
No use of coefficients to weight the different strategies.
It looks as if they are just buying and selling based on the first
two days of trading.
Project satisfactory.


