Each index value and primary data for generating the index value are stored in a block of a blockchain. The primary data is received from a set of data sources, each associated with one or more index components of the index. Based on the received primary data, the index value is generated. A cryptographic hash value is generated based on the received primary data, the generated index value, and a previous hash value corresponding to a previous time period. The generated index value, the received primary data, and the generated cryptographic hash value are stored in a new block of the blockchain.