Back

Liquidate from static method: hack?

The option backtesting framework is almost finished.
However, in order to simulate reality, I need to automatically Liquidate() options once they are past their maturity. Specifically, the method that takes care of this is defined in a static class, simply to make the front-end code extremely readable and easy to use.

Clearly, the main method of any algorithm extends the QCAlgorithm, which is the only object that can Liquidate() assets.

I've tried everything I could think of but I can't succeed. I really would like to keep my code clean, so how can I achieve this?

For example:

public class MyAlgorithm : QCAlgorithm
{
public override void Initialize()
{
// all initialization code
}
}
public static class RandomClass
{
// how can I make this work:
Liquidate("ticker");
}
Update Backtest






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.



If it has to be a static class, I'm afraid you'll have to pass the algorithm as a parameter to your static method.

public static class RandomClass
{
public static void MyMethod(QCAlgorithm algorithm)
{
algorithm.Liquidate("ticker");
}
}
1

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.


@Stefano Thank you for replying. I've tried that already but it seems that doesn't work (at least no liquidations took place in my few trial runs).

Does it work for you?
0

@Stefano Now that I created a small example, it actually works perfectly. There was probably some logic error in my other code then. Anyway, thank you very much for replying.

Demo:
0


Calling the QCAlgorithm.Liquidate method from an algorithm or from a static method of a static class shouldn't make any difference. Maybe add some debug traces to check what's going on ?

If you can attach a simple project reproducing the problem, it could be useful.
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.


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