Downloadable Grid

Matthew,



Any chance you could implement functionality that would allow us to download the entire Grid, with all of the available columns, into a csv file or spreadsheet to do our own analysis? I’d like to build my own scoring scheme to evaluate systems on Collective2, but it’s difficult with the limitations of the Grid.

I’m not sure. Realistically, what you are asking for is achievable (with a great deal of hassle, and programming work, admittedly) via the C2 Data Services API.



The problem from a technical point of view is the way the Grid was implemented: it’s really a fat javascript client running in your browser, as opposed to something generated server-side. So that means that adding some kind of export functionality would have to be done client-side, or, alternately, the thing would need to be rewritten as a server-side app. I explain this not to obfuscate, but rather to try to explain why your request, though perfectly reasonable, is actually a bit harder to implement than it might sound at first listen.



I can’t promise anything, but let me see what ideas I can come up with, and discuss with Bob, who was the lead programmer behind the Grid.



MK

In the meantime, it only takes about 15 minutes to copy and paste the entire grid (9 pages of 100 rows) from the screen into Excel. I do it in two steps. First copy and paste special as HTML. Then, within Excel, copy and paste special as Values to eliminate the formatting.



LR

For some reason, Excel chokes frequently when I’m pasting the Grid as 100 rows x 50 columns in HTML (Excel 2010, Windows 7, 8GB RAM). It’s also difficult to automate this process. I’ll have to look at the data API and see if I can work this out using my rudimentary scripting skills.

Let’s assume I would like to be able to download the csv files for the top N=100 or so systems to perform my own analysis. All I would need is for someone from C2 to post a text list of the top N systems (ranked by whatever, say, the C2 default metric or sharpe).



So if the grid developer could post a txt:

111000

554770

499887

…NsystemID



a user could, theoretically, just loop an url request that reads those numbers and adds them to:

http://manage.collective2.com/cgi-perl/c2systems.mpl?want=csv&systemid=NsystemID



ps. Hi INTJ, Thank for the nice words. Sanz

Hi Sanz, great to hear from you. I continue to learn a lot from you, even if some of your analysis is a bit too sophisticated for me!



In any case, I agree that there should probably be an easier way to do this. I thought I would take a shot at the C2 data services API, but unfortunately, when I type in the URL from the documentation:



data.collective2.com/cgiperl/xml.mpl?cmd=getsessionid&userlogin=[email]&pw=[data services pw]&clientid=[client]



I get the response:



Well, ain’t this the damnedest thing.

There has been an unexpected software error. Please report this error, and whatever you were trying to do, to this email address: help@collective2.com.

We’ll try to solve the problem as soon as possible.




So it appears we’ll have to wait for Matthew to implement some solution, unless you or another programmer can recommend another course of action to automate this process.



I wish you continued good fortune with your systems and blog.

IntJ-



You’re missing a dash between cgi and perl.



Like this:

cgi-perl



Try and see if you get more joy.

Thanks, Matthew, good call. Now I’m in business. As an added bonus, a bit of nostalgia: my old Youtualfunds show up in my subscribed list.

Ok, I’m finally able to automate the generation of a CSV file off of cmd=getsystemroster (I know, I’m not exactly a professional programmer, here).



However, given that there are over 20,000 system results, I think it would present difficulties for both of us if I hammered your server with cmd=getsystemstats for each system. Therefore, can I propose that you add a few of the major stats to the output of cmd=getsystemroster (CAGR, max DD, Sharpe, profit factor, I think that will be sufficient for most calculations), and then I’ll just make one call to the API and do the rest of the processing myself?



Thanks for your consideration.