Upgrade from Eikon -> Workspace. Learn about programming differences.

For a deeper look into our Eikon Data API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvote
Accepted
50 0 1 4

"Real Estate" economic Sector in Eikon API

Hello,


I am trying to use the Screener in Eikon API in order to not select the 'Real Estate' Sector on the data:


screen = SCREEN.express.universe('0#.BVSP').conditions(NOT_IN('TR.TRBCEconomicSector', 'Real Estate')).currency('BRL').query


However the call above returns the following error:


[{'code': 234, 'col': 1, 'message': "The 'Estate' is unexpected in formula. A delimiter is probably missing before the lexeme.", 'row': 0}, {'code': 234, 'col': 2, 'message': "The 'Estate' is unexpected in formula. A delimiter is probably missing before the lexeme.", 'row': 0}, {'code': 234, 'col': 3, 'message': "The 'Estate' is unexpected in formula. A delimiter is probably missing before the lexeme.", 'row': 0}, {'code': 234, 'col': 4, 'message': "The 'Estate' is unexpected in formula. A delimiter is probably missing before the lexeme.", 'row': 0}]


The name is according to the Workspace:


1663075647307.png



Could you help me?


Thanks in advance


Regards.

eikon-data-apipythonscreening-apitrbc
1663075647307.png (4.0 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@rafael01

Hi,

Thank you for your participation in the forum.

Is the reply below satisfactory in answering your question?

If yes please click the 'Accept' text next to the reply. This will guide all community members who have a similar question.

Otherwise please post again offering further insight into your question.

Thanks,

AHS

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,


AHS

1 Answer

· Write an Answer
Upvotes
Accepted
79.1k 250 52 74

@rafael01

You need to modify the dataquery.py code in the NOT_IN method.

#not_in function
def NOT_IN(field, *values):
    '''
    Returns true (1) if the specified value (first parameter) is not within the specified list of values (second parameter). 
    This analytic can be useful primarily when using screens that require you to look for instruments that do not fall in a specific industry or sector.
    '''
    if (field is not None) and (len(field)>0) and (values is not None) and (len(values)>0):
        if type(values)==str:
            value_ = 'NOT_IN({},"{}")'.format(field, values)
        else:
            value_ = 'NOT_IN({},"{}")'.format(field, ','.join(values))
    else:
        value_=''    
    return value_ 

1663079000405.png

The screen string contains 'SCREEN(U(IN(0#.BVSP)),NOT_IN(TR.TRBCEconomicSector,"Real Estate"),CURN=BRL)'

1663079061985.png


1663079000405.png (35.0 KiB)
1663079061985.png (12.7 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@Jirapongse , when I substitute 'Real Estate' with 'Financials' my code runs well .


screen = SCREEN.express.universe('0#.BVSP').conditions(NOT_IN('TR.TRBCEconomicSector', 'Financials')).currency('BRL').query

Would you know the reason?





@rafael01

"Real Estate" contains a space character so it must be inside double quotes. Therefore, I modified the NOT_IN method to wrap a string with double quotes.
Thanks a lot

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.