Recently Tradingview gave us limited options stuff but unfortunately their API makes this very difficult, technically speaking, there should theoretically be a way to get options data from request.quandlor get local real estate data for say, a REIT and then do fun calculations but that data lacks documentation or doesn't work.
Pine Script®
//@version=5
indicator("Combined Macro & Financial Indicator", overlay=false)
// Define constants for index values
ZILLOW_PRICE_INDEX = 1
US_GDP_INDEX = 1
SOYBEAN_FORECAST_INDEX = 1
PRODUCER_LONGS_INDEX = 8
PRODUCER_SHORTS_INDEX = 9
SWAP_LONGS_INDEX = 10
SWAP_SHORTS_INDEX = 11
INFLATION_INDEX = 1
ES1_CLOSE_INDEX = 4
ES1_OPTIONS_INDEX = 1 // Placeholder index for options data
// Zillow Real Estate Data: Median Listing Price
// Source: Zillow database on Nasdaq Data Link
zillow_price = request.quandl("ZILLOW/M00039_MRP", index=ZILLOW_PRICE_INDEX, ignore_invalid_symbol=true)
// World Bank Data: US GDP
// Source: World Bank database on Nasdaq Data Link
world_bank_gdp = request.quandl("WWDI/USA_NY_GDP_MKTP_CN", index=US_GDP_INDEX, ignore_invalid_symbol=true)
// WASDE: Soybean Forecast
// Source: World Agricultural Supply and Demand Estimates (WASDE) on Nasdaq Data Link
wasde_soybean = request.quandl("WASDE/SOYBEAN", index=SOYBEAN_FORECAST_INDEX, ignore_invalid_symbol=true)
// CFTC: Net Positions (e.g., Gold Futures)
// Source: Commodity Futures Trading Commission (CFTC) reports on Nasdaq Data Link
producer_merchant_processor_user_longs = request.quandl("CFTC/088691_F_ALL", index=PRODUCER_LONGS_INDEX, ignore_invalid_symbol=true)
producer_merchant_processor_user_shorts = request.quandl("CFTC/088691_F_ALL", index=PRODUCER_SHORTS_INDEX, ignore_invalid_symbol=true)
swap_dealer_longs = request.quandl("CFTC/088691_F_ALL", index=SWAP_LONGS_INDEX, ignore_invalid_symbol=true)
swap_dealer_shorts = request.quandl("CFTC/088691_F_ALL", index=SWAP_SHORTS_INDEX, ignore_invalid_symbol=true)
// IMF: US Inflation Data
// Source: International Monetary Fund (IMF) data on Nasdaq Data Link
imf_inflation = request.quandl("ODA/USA_PCPIPCH", index=INFLATION_INDEX, ignore_invalid_symbol=true)
// ES1! Data: S&P 500 E-mini Futures Close Price
// Source: S&P 500 E-mini Futures on TradingView (ES1!)
es1_close = request.security("ES1!", "D", close)
// ES1! Options Data: Placeholder for S&P 500 E-mini Futures options data
// Source: Options data on Nasdaq Data Link (if available)
es1_options = request.quandl("CBOE/ES_OPTIONS", index=ES1_OPTIONS_INDEX, ignore_invalid_symbol=true) // Replace "CBOE/ES_OPTIONS" with correct dataset code if available
// Create a table to display the data
table_id = table.new(position.top_right, 10, 2, border_width=1)
// Set table headers
header_bg_color = color.blue
header_text_color = color.white
table.cell(table_id, 0, 0, "Indicator", text_color=header_text_color, bgcolor=header_bg_color)
table.cell(table_id, 0, 1, "Value", text_color=header_text_color, bgcolor=header_bg_color)
// Set table rows
default_text_color = color.black
table.cell(table_id, 1, 0, "Zillow Median Listing Price", text_color=default_text_color)
table.cell(table_id, 1, 1, na(zillow_price) ? "N/A" : str.tostring(zillow_price), text_color=default_text_color)
table.cell(table_id, 2, 0, "World Bank US GDP", text_color=default_text_color)
table.cell(table_id, 2, 1, na(world_bank_gdp) ? "N/A" : str.tostring(world_bank_gdp), text_color=default_text_color)
table.cell(table_id, 3, 0, "WASDE Soybean Forecast", text_color=default_text_color)
table.cell(table_id, 3, 1, na(wasde_soybean) ? "N/A" : str.tostring(wasde_soybean), text_color=default_text_color)
table.cell(table_id, 4, 0, "Producer Merchant Longs", text_color=default_text_color)
table.cell(table_id, 4, 1, na(producer_merchant_processor_user_longs) ? "N/A" : str.tostring(producer_merchant_processor_user_longs), text_color=default_text_color)
table.cell(table_id, 5, 0, "Producer Merchant Shorts", text_color=default_text_color)
table.cell(table_id, 5, 1, na(producer_merchant_processor_user_shorts) ? "N/A" : str.tostring(producer_merchant_processor_user_shorts), text_color=default_text_color)
table.cell(table_id, 6, 0, "Swap Dealer Longs", text_color=default_text_color)
table.cell(table_id, 6, 1, na(swap_dealer_longs) ? "N/A" : str.tostring(swap_dealer_longs), text_color=default_text_color)
table.cell(table_id, 7, 0, "Swap Dealer Shorts", text_color=default_text_color)
table.cell(table_id, 7, 1, na(swap_dealer_shorts) ? "N/A" : str.tostring(swap_dealer_shorts), text_color=default_text_color)
table.cell(table_id, 8, 0, "S&P 500 E-mini Futures Close Price", text_color=default_text_color)
table.cell(table_id, 8, 1, na(es1_close) ? "N/A" : str.tostring(es1_close), text_color=default_text_color)
table.cell(table_id, 9, 0, "S&P 500 E-mini Futures Options Data", text_color=default_text_color)
table.cell(table_id, 9, 1, na(es1_options) ? "N/A" : str.tostring(es1_options), text_color=default_text_color)
// Set the y-axis scale and style for better readability
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)
// Background color for the chart
bgcolor(color.new(color.gray, 90)) // Background color to help distinguish the indicator plots
// Possible Sources and Explanation of Codes
// Zillow: Provides real estate data (e.g., median listing prices) using code "ZILLOW/M00039_MRP"
// World Bank: Uses "WWDI/USA_NY_GDP_MKTP_CN" to get the US GDP
// WASDE: Uses "WASDE/SOYBEAN" to get the forecast data for soybeans
// CFTC: Uses "CFTC/088691_F_ALL" for the Commodity Futures Trading Commission reports (e.g., Gold Futures)
// IMF: Uses "ODA/USA_PCPIPCH" to get US inflation data
// ES1!: Uses "ES1!" for the S&P 500 E-mini Futures close price
// Options Data: Placeholder code "CBOE/ES_OPTIONS" for options data, replace with actual dataset if available
// Notes on NaN Values
// If values are returned as NaN, this could indicate that the data is either not available or the dataset has updated, requiring a different code or index.
// Consider checking the data availability on the Nasdaq Data Link website to verify the dataset codes and indices.
// Max Number of Requests
// Pine Script limits external requests like `request.quandl()` to avoid overwhelming servers. Consider limiting the number of requests or combining data where possible to optimize the use of requests.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.
Disclaimer
The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.