Dear Community,
We are in the process of upgrading our documentation and want it to be a shining best-in-class example of quantitative documentation. Over the last 6-months, we've been doing research in documentation from other industries and learning how people learn.
I would HUGELY appreciate your design input into the new documentation. Your input now into what 1) annoys you the most, 2) what we're missing, and 3) what you love about the current documentation will ensure the highest quality finish for 2021. If there are features you've come to love to depend on, make sure to let us know so we can carry those into the new documentation.
From our research we've condensed documentation to a few key sections which correlate to how people learn;
- Getting Started; something to get you off the ground in 2min.
- User Guides; understanding the why's behind decisions and deeper write-ups.
- Tutorials; step-by-step guides to achieve a specific goal without details about why.
- API Reference; class, method, and parameter breakdowns with minimal text.
Further, we've broken out the "QuantConnect Experience" into 4+ different "products" which will all need their own documentation.
- Using QuantConnect [website] (only applies at quantconnect.com/*)
- Writing Algorithms (everything under the class QCAlgorithm/*)
- Research (everything under Jupyter/*)
- LEAN (the underlying engine documentation)
For example:
- Using QuantConnect > Getting Started > Launching a backtest.
- Writing Algorithms > User Guides > History > Structure of history data frames
- Research > Tutorials > How to warm up your indicator in research.
- LEAN Engine > API Reference > Class Portfolio.. Properties .. read-only Invested.
We've also learned about style guides and the right way to write and word documentation. It is a pretty complex topic and it's given me a deep respect for technical writers!
Please let us know your thoughts! It is critical to us making the best possible documentation for the community. Please drop your comments in the discussion below or if you want to send them privately you can email me.
===
If you're a QC expert and would like to work with us to write the new documentation please let me know. We'll pay a fair rate and your work will be published open-source. Send me an email with a sample of your work and a link to your QC Account.
Sergio Pera
Hello i am new, it would be nice that when you use search bar in documentation you find the code and examples so you know how to use different functions/lines/code etc, that for a beginner will help a lot.
Vncne
Hi Jared, what I noticed is that a lot of (new) people, me included, often post in the Community asking questions that have been answered numerous times already. I usually do this when, after looking through the documentation, I wasn't able to find a solution. Sometimes searching or googling my questions yields a useful post in the forums, but other times other people have described the problem differently, or worded them differently, so I can't find them but the idea behind them is the same. Maybe if you could somehow incorporate Community posts with accepted answers into common topics in the documentation using the posts' tags to connect the post to the relevant topic? Or some other way. The idea sounds messy in my head, but maybe there's a neat way of doing it.
M Cochran
Things to improve...
- as long as you want to do something fairly simple (one symbol, with one technique, etc.) the documentation is great. However, when different methods start to interact with each other----this is where I at least am at a loss. I would suggest a library of different examples of varying complexity that are clearly indexed by which methods they use and combine. These examples should be listed on the relevant documentation pages. ---this is already the case, but there are too few examples and it's not very clear what is in each example, i.e. its just "name.py"
Good luck
MateHegedus
It'd just be great if the documentation was accurate and upto date....
Stephen Hyer
- More complex uses of the framework namespaces for each different segment. For instance, there is an example for Immediate Exeuction that imports QuantConnect.Orders but other than that one example I wouldn't know that existed or what it did. I've tried using help() and dir() in the ipynotebook research but those descriptions aren't complete either. Some attributes are intuitive but others not as much. I would love to know everything that's at my disposal.
Mark hatlan
Thanks for asking Jared.
The existing documentation is very good for basic elements and functions, such as adding an indicator, OnSchedule, SetHoldings etc.
Since I consider myself a beginner programmer, I feel it is missing consistent strategy examples that I can reuse pieces of easily to construct something new with. For example if a sample strategy uses the newer Alpha Model, and another doesn't, I don't know how to utilize code snippets from the two to combine then into something I want.
Overall, organization of all reference and learning material is really needed.
For example BootCamp is only accessible in the Lab.
The Strategy Library I can only get to by going to the Community and doing a word search, then clicking on a link in the search results or by finding a forum post from someone at QC with a link for it. If I go to the Docs upper navigation link, then the left side navigation on the Docs Home page doesn't have Turotials or Strategy Libary included.
Also there is the GitHub link for example strategies, I think I got a link for that from someone in the forums too.
Overall this requires extra searching effort on the user to find a solution. To sum up, if I go to Docs/Help, I should have access to everything from there in the sub menu in the left nav.
Tate Linzel
1. I only started using Quantconnect in January 2020, so still really new to the platform. I knew a coding in VBA only before coming to use Python here, one thing I have struggled with is finding useful examples of the topics discussed in the documentation. It would be helpful to have backtests included or even just more examples of how certain features are coded. I struggled for a while to figure out how to use .of function (ended up having to post a question in the community, took two days for a response, glad I go one, but big delay for something that was so simple).
2. Search bar (already mentioned above) would be so helpful
3. Q&A section for commonly asked questions with the correct solution posted. If a community post results in a solution (and the originator indicates that a solution has been posted) that filters to your staff to add to the Q&A section. reduces the clutter in the community, saves people time, more efficient site.
Jared Broad
Thank you all for the comments. We'll try our best to incorporate them into the work we're doing now. Thank you Hector Barrio for joining the effort =)
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
Sunil Mishra
I have tried to write algorithms in python. And there are a number of issues that have gotten in the way. Could you consider the following?
- Have a separate python-only section in the documentation. There's a lot about writing algorithms in python that simply would not apply to C#. For instance how to use pandas well, and how to optimize the algorithm's execution time.
- How is backtesting implemented? How is minute resolution work compared to daily resolution? This should be in at least enough detail so that we can figure out what would happen if a limit order was entered for an algorithm running on daily resolution and the target price was reached inter-day. And what would happen if a large order was entered such that it could not be filled given the observed volume for the security for the day.
- Document what happens in the service when an algorithm runs. This would be really useful for those of us that write software for a living and can make use of this information for optimizing algorithm efficiency.
- The API seems to have "accumulated" over time. There's the basic non-algorithm framework based approach. Then there's the algorithm framework based approach. And the two are not well separated, especially in the documentation. There are many aspects of the general algorithm API that don't appear to be available when using the algorithm framework.
- Document the behavior of the different algorithm framework elements.
- I've been using the framework, and quite a bit of the lower level API doesn't seem to be available. I'm not sure why I should be using the algorithm framework. The bootcamp uses the algorithm framework, so it appears you're encouraging us to use it. But so many examples in the documentation don't use the framework. This creates confusion.
I'm glad you're looking into this. I am unsure if I'll be able to write documentation, but I'd be happy to review. Regards,SunilHector Barrio
You are welcome Jared,
I would like to chip in and comment on a topic that I perceive as recurring in the forum: the framework/non-framework approach. It seems to me that the non-framework approach serves to quickly set up a working algorithm from low-level components (the algorithm methods if you will) and the documentation illustrates this; how components work at a detailed level.
The framework approach provides a higher-level API interface that abstracts many of the lower-level components; prevents repetition, allows for global modification of components, and keeps interfaces under control. The difference is very well illustrated by setting up a Rebalance/SetHoldings function combination vs. managing the emission timing for insights inside an alpha model and a portfolio construction model. The latter is much more verbose and complex, both are covered in the documentation.
The documentation shows both levels, low-level components, and high-level 'subsystems' assembled from these components that allow combination, adaptation, and configuration of a final 'product', a framework algorithm. The documentation, in my opinion, explains the components (methods) and the system (the framework) correctly and, apparently, fails to join the concepts properly, fails to "convince" the users to develop in the framework, fails to convince the user to take the extra work of defining additional components of the system today to (potentially) use them tomorrow, to reuse them, to locally modify them, to maintain them...
My personal experience is in systems engineering and the framework approach presented by the Quantconnect team is one of the best applied systems engineering examples I have seen, both OS and CS code. It also improves and benefits the development of the OS code, as development and user interfacing become more aligned. For sure it causes additional up-front work that will needs to be absorbed.
I would recommend users to learn both the parts and the framework and try to develop in-framework from day 1 even if they are not planning to enter the alpha market.
George
Thank you for taking the time to improve the docs.
I would like to see the QC API Reference held to at least the same standard as the Numpy reference. Take a random doc like hermfit. It's presented very well. It has
I do feel the documentation overall is mostly adequate, and I especially like the various tutorials.
Stephen Hyer
It's not necessarily documentation but having some kind of update notice or something when changes are made in the backend would be nice.
Etienne RAINAUT
Hi Jared and team, thanks for willing to improve the docs
1) annoys you the most
As an example with warming up and using indicators with alpha framework, there is multiple example showing different ways of doing it (using .Reset or history calls, consolidation, etc). But I have no clue which one would be the best and why. After searching or asking the forum for hours I can start getting a better idea of what to do.
2) what we're missing
3) what you love about the current documentation
General organization of it, a good overview of the alpha, and how every part of the puzzle fit together.
Daniel Jurnik
Hi Jared,
I really appreciate that you want to improve the QC documentation. I think that the current situation is the biggest weakness of this project.
1) annoys you the most
2) what we're missing
You can be inspired by this site: Getting Started – QuantConnect
3) what you love about the current documentation
Scottfree Analytics LLC
I recommend Read the Docs:
https://readthedocs.org/
We built our documentation for AlphaPy with it.
https://alphapy.readthedocs.io/en/latest/
Arthur Asenheimer
Hi Jared,
I also want to take this opportunity and provide feedback.
1) What annoys you most
2) What is missing
3) What I love about the current documentation
Laurent Crouzet
Hi Jared,
I am not sure that my message will help much, as previous posters already described most of what I thought, and explained the concepts better than I could!
Will just try to add my 2-cents:
1) What annoys you most
It is somewhat difficult to get all the needed information between the Docs (1), Github (2), the Forum (3), the Slack (4) and in email updates (5): my search is done in that order from my experience, but probably that this order depends on each person!
It can be even harder to be sure we know everything that is available when the subject has not been publicly detailled much, as that is currently the case of Future options for instance.
Being able to search for everything at the same place would at time avoid wasting our time and wasting yours, as I am pretty sure that many messages sent to the QC's team could have been answered just by a thorough and efficient search on the same centralized place.
2) What is missing
1. As people noted above, the discrepancy between Framework and Non-Framework, when using it or not... has been a headeache for me: I learnt how to use the Framework model just because at one point it was required to send Alphas. Now, I keep using it when I belive it is worthwhile, but because I am not a computer scientist, I am still far from being sure that I really use it when it should be, or not.
Arthur Asenheimer described very well in his message above what could help us (non CS experts) in being better QC programmers!
https://www.quantconnect.com/docs/algorithm-reference/common-errors2. I would have loved to be able to see all built-in methods and all properties described thoroughly somewhere: sometimes, I had to make some trials to be sure that the properties are the good ones and work as intented.
3. I also think that a much bigger "Common errors" would have been very useful when I began, like this example:
3) What I love about the current documentation
I think that the current documentation is much better than it was just a couple of years ago: you guys worked well, adding much more information, links to tutorials, videos, and so much more!
Keep doing the good work, by improving everything over time as you have done previously!
Menzi
Hi, it would ideal if it was COMPREHENSIVE. Current documentation is a short book, but it should be at least 5-10 times its current size. This will enable us to help ourselves instead of asking questions every other minute. Also, would be ideal if the bootcamps were comprehensive. They are too short and should be at least 4 times their current length. :)
Eg, when trading futures, FuturesChain only can be used in OnData. Fortunately this was mentioned somewhere deep in the forums, but this kind of detail should be in the documentation or the bootcamps.
Adrian Torrie
I love what Quantconnect has become, I've been watching it for many years now, playing around as new features have been released, but typically deterred by the level of context switching involved with the documentation practices. The Algorithm Framework is clean, I love what it is.
Well done taking on redesign of the docs, I appreciate it is a major undertaking, and any improvements will be well received by all I'm sure :)
Etienne RAINAUT
If I can add more context to my previous comment with my use case:
https://www.quantconnect.com/forum/discussion/10015/alpha-model-with-custom-indicator/p1
https://www.quantconnect.com/forum/discussion/9976/custom-indicators-history-in-alpha-framework
https://www.quantconnect.com/forum/discussion/3383/custom-indicator-in-python-algorithm/p1
https://backtest-rookies.com/2019/01/25/quantconnect-create-an-indicator-awesome-oscillator/
I need to spend time analyzing the answers, find which one is still working after lean updates, with the framework, etc
-> Best doc would have been searching for custom indicator, finding a page about it in 1s, going to the alpha version of it, having everything explained with a perfect example that I know 100'% is the most updated and efficent way to do it
Jared Broad
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!