Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Key error when iterating through context.portfolio.positions

Hi everyone,

A little bit of a newbie question here but I hope someone takes the time help. I'm trying to build my first algorithm but I seem to be having a runtime key error when iterating over my StopPrice dictionary using context.portfolio.positions keys... not sure why as when i print the keys they are identical!

The issue seems to be in line 108...

4 responses

Not sure but I do know that for some of the built in code a key error is raised when it should be an attribute error.

does context.BuyProtection exist?

Okay thanks for the hint, not sure what attribute error I'm creating with the code.
context.BuyProtection does exist its on line 29, do you think it has something to do with me using a global variable initialized in the initialize function? i thought that was the way it was supposed to be done...

Still stumped!

Hi Nadirsh,

The problem is that at some point, the weight for KEY is being set to 0, and so it's being popped from context.StopLoss. This happens before the position is closed out so when the algo gets to before_trading_start the next day, it raises a KeyError when it tries to get the stop loss for it. I think you should just be able to add a check to make sure that p is in context.StopLoss on line 108.

FYI, I was able to determine this by using the built-in debugger and stepping through the code one line at a time while checking different variables. Try it out!

Disclaimer

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 Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian 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.

James,
Thanks for the help. I couldn't figure out how to run the debugger as it was showing a run-time error but I will look into it more before posting!
Thanks again,
Nadirsh.