Navigation

    Quantiacs Community

    • Register
    • Login
    • Search
    • Categories
    • News
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    How to get stocks in SP500 index at a given time

    Support
    2
    2
    28
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      buyers_are_back last edited by buyers_are_back

      The data has more than 500 stocks. I know it includes stocks that used to belong to SP500. For instance for (2026, 2, 24):

      from qnt.data import stocks_load_spx_list
      len(stocks_load_spx_list(min_date='2026-02-24', max_date='2026-02-24'))
      

      gives 842.

      Filtering NaNs gives me 658 stocks, which is still more than 500.

      For a given date, I'd like to exclude the weights for those that are out (no forward-looking involved).

      1 Reply Last reply Reply Quote 0
      • S
        stefanm last edited by

        @buyers_are_back Hi,

        You can use is_liquid field from spx dataset to filter out weights allocated to not members of S&P500 at given point in time:

        from qnt.data import stocks_load_spx_data
        
        spx_data = stocks_load_spx_data(min_date="2006-01-01")
        is_liquid = spx_data.sel(field="is_liquid")
        final_weights = your_weights * is_liquid
        ### weights for given date (weights_spec)
        date = "2026-02-24"
        weights_spec = final_weights.sel(time=date)
        

        The number 842 represents total number of assets that have been members of S&P500 index at some point in time (from given dataset), and 658 shows number of assets that are still active on market (have OHLC prices), but only ~500 are index constituents in that point in time.

        To get the list of index members on certain date, just filter is_liquid field:

        ### liquidity field values for given date
        is_liquid_spec = is_liquid.sel(time=date)
        members_spec = is_liquid_spec.coords["asset"][is_liquid_spec == 1.0].asset.values
        1 Reply Last reply Reply Quote 0
        • First post
          Last post
        Powered by NodeBB | Contributors
        • Documentation
        • About
        • Career
        • My account
        • Privacy policy
        • Terms and Conditions
        • Cookies policy
        Home
        Copyright © 2014 - 2021 Quantiacs LLC.
        Powered by NodeBB | Contributors