Back

Resume strategy after termination

Hi all,

I'm working on a strategy and looking to run it locally, however when the process terminates for whatever reason (e.g. brokerage API disconnects, machine restart), I'd like it to resume where it was. There's some discussion about the topic here: 

https://www.quantconnect.com/forum/discussion/5752/resuming-a-strategy-algorithm-already-in-process/p1

But I would need the full order ticket data, e.g. things like the original SubmitRequest on the order. Looks like serializing/saving BrokerageTransactionHandler with its _openOrders and _completeOrders will do. 

 

Anyone looked into this before? I suppose the LocalObjectStore can be used for this, but would be nice to know what to look out for besides just persisting those two concurrent dictionaries

Update Backtest







0

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.


Hey Henno; this is a tough one we're looked at before but don't have a good answer for yet. The state of LEAN is pretty large (500MB-10GB), and the state of just the QC Algorithm object would not be meaningful as it wouldn't include the brokerage data etc.

Additionally, the state of "the world" may have changed since the algorithm was restarted. For example, partial fills might be filled, resulting in an inconsistent state between the two running copies of the algorithm.

We recommend using a more manual start-up process and restoring the state of key indicators or orders explicitly in your alpha model constructors. This way you control the state and can be sure it will work as expected. Restoring this manually can be redone with historical data or using the object store. 

0

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.


Thanks for getting back to me. I'm not too concerned about the indicators, since the warmup takes care of those, however the state of orders (in particular edge cases like partial fills) requires more thought. 

Persisting orders/order tickets to disk caused issues with no default construcutors - naturally there are ways to implement deserialization, or use an alternative custom data model. Also tracking of these orders are done via the internally generated orderId (which resets on restart) instead of the brokerage order id, so that's another point to consider.

Regardless, I was just curious if a solution to this existed and I missed it. The code base, and all the branches, are quite extensive so quite possible.

0

Update Backtest





0

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.


Loading...

This discussion is closed