Hi Team,
I am following the FX Business Day Strategy introduction, I logged in with my IBKR account and I can see that I am automatically subscribed to idealpro data but when I run the code below I get a permissioned denied error, what can be the issue? I made sure that the paper account had the real time data subscription shared.
see code below:
To collect data, first start IB Gateway:
from quantrocket.ibg import start_gateways
start_gateways(wait=True)
from quantrocket.ibg import start_gateways
start_gateways(wait=True)
{'ibg1': {'status': 'running'}}
Then collect the securities master record:
from quantrocket.master import collect_ibkr_listings
collect_ibkr_listings(exchanges="IDEALPRO", symbols="EUR.USD")
HTTPError Traceback (most recent call last)
Input In [10], in <cell line: 2>()
1 from quantrocket.master import collect_ibkr_listings
----> 2 collect_ibkr_listings(exchanges="IDEALPRO", symbols="EUR.USD")
File /opt/conda/lib/python3.9/site-packages/quantrocket/master.py:378, in collect_ibkr_listings(exchanges, sec_types, currencies, symbols, universes, sids)
375 params["sids"] = sids
377 response = houston.post("/master/securities/ibkr", params=params)
--> 378 houston.raise_for_status_with_json(response)
379 return response.json()
File /opt/conda/lib/python3.9/site-packages/quantrocket/houston.py:225, in Houston.raise_for_status_with_json(response)
223 e.json_response = {}
224 e.args = e.args + ("please check the logs for more details",)
--> 225 raise e
File /opt/conda/lib/python3.9/site-packages/quantrocket/houston.py:217, in Houston.raise_for_status_with_json(response)
212 """
213 Raises 400/500 error codes, attaching a json response to the
214 exception, if possible.
215 """
216 try:
--> 217 response.raise_for_status()
218 except requests.exceptions.HTTPError as e:
219 try:
File /opt/conda/lib/python3.9/site-packages/requests/models.py:1021, in Response.raise_for_status(self)
1016 http_error_msg = (
1017 f"{self.status_code} Server Error: {reason} for url: {self.url}"
1018 )
1020 if http_error_msg:
-> 1021 raise HTTPError(http_error_msg, response=self)
HTTPError: ('403 Client Error: FORBIDDEN for url: http://houston/master/securities/ibkr?exchanges=IDEALPRO&symbols=EUR.USD', {'status': 'error', 'error': 'An active subscription is required (view license details if this is unexpected, see Usage Guide for help)'})