Processed, transformed, and validated datasets across FX, Crypto, Gold, Indices, and Bonds — ready to integrate directly into your trading system, SaaS product, or research pipeline.
Every dataset is cleaned, validated, and enriched with indicators before delivery. We ship what quant teams actually need — not raw ticks.
We never ship raw price data. The minimum deliverable is indicator-enriched, QC-verified data. Higher tiers include proprietary analytical outputs.
L0 raw data is not redistributed. All products are Level 1 minimum — transformed, enhanced analytical datasets.
Below is a structured view of what's available. Custom combinations and time ranges available via estimate request.
Every dataset ships with documented columns, metadata.json, and tested sample code. Paste and run.
# Load any MARKETDPRO indicator-enriched dataset import pandas as pd # Option A: Load single year (fast) df = pd.read_parquet("BTCUSD/M1/2024.parquet") # Option B: Load all years at once df = pd.read_parquet("BTCUSD/M1/") # loads all *.parquet files # Option C: Load from CSV df = pd.read_csv("BTCUSD/M1/BTCUSD_M1_full.csv", parse_dates=["time"]) df = df.set_index("time") # Check what's included — columns are pre-calculated print(df.columns.tolist()) # ['open', 'high', 'low', 'close', 'volume', # 'ma20', 'ma50', 'ma100', 'ma200', # 'atr14', 'rsi14', 'rsi14_zone'] # Check data range and quality print(f"Range: {df.index.min()} to {df.index.max()}") print(f"Total bars: {len(df):,}") print(df.describe())
# MA Cross Strategy — using pre-calculated MA columns import pandas as pd df = pd.read_parquet("EURUSD/M1/") # MA columns are already in the dataset — no recalculation needed # Generate signals from EMA12/26 cross (calculate from MA20/50) df['ema12'] = df['close'].ewm(span=12).mean() df['ema26'] = df['close'].ewm(span=26).mean() # Golden cross (EMA12 crosses above EMA26) df['golden_cross'] = ( (df['ema12'] > df['ema26']) & (df['ema12'].shift(1) <= df['ema26'].shift(1)) ) # Filter: only crosses where RSI is in 'bullish' zone (RSI 50-70) golden_filtered = df[ df['golden_cross'] & (df['rsi14_zone'] == 'bullish') ] # Calculate 24h forward return for each signal df['return_24h'] = df['close'].pct_change(1440).shift(-1440) signal_returns = df.loc[golden_filtered.index, 'return_24h'] print(f"Total signals: {len(golden_filtered)}") print(f"Win rate: {(signal_returns > 0).mean():.1%}") print(f"Avg return: {signal_returns.mean():.4%}")
# RSI Zone Analysis — zone-based return statistics import pandas as pd df = pd.read_parquet("XAUUSD/M1/") # Gold M1 — 25 years # RSI zone column is pre-tagged in every bar # Values: 'overbought' | 'bullish' | 'bearish' | 'oversold' # Forward return (next 24 bars = ~24 minutes for M1) df['fwd_return'] = df['close'].pct_change(24).shift(-24) # Group by RSI zone and calculate stats zone_stats = df.groupby('rsi14_zone')['fwd_return'].agg([ 'count', 'mean', ('win_rate', lambda x: (x > 0).mean()), ('avg_win', lambda x: x[x > 0].mean()), ('avg_loss', lambda x: x[x < 0].mean()), ]) zone_stats['mean'] = (zone_stats['mean'] * 100).round(4) zone_stats['win_rate'] = (zone_stats['win_rate'] * 100).round(2) print(zone_stats.to_string())
# Correlation Break Events — proprietary dataset import pandas as pd # Load the correlation event database (347K+ events) events = pd.read_csv("correlation_break_events_2000_2026.csv", parse_dates=["event_date"]) # Columns: event_date, symbol, pair, corr_before, corr_after, # rsi14, rsi_zone, phase, direction, # return_1d, return_3d, return_7d, return_30d # Example: Events where RSI is in oversold zone oversold_events = events[events['rsi_zone'] == 'oversold'] # Calculate directional accuracy at 7-day horizon correct = ( (oversold_events['direction'] == 'up') & (oversold_events['return_7d'] > 0) ) | ( (oversold_events['direction'] == 'down') & (oversold_events['return_7d'] < 0) ) print(f"Oversold zone events: {len(oversold_events):,}") print(f"7-day directional accuracy: {correct.mean():.1%}") print(f"Average 7d return: {oversold_events['return_7d'].mean():.4%}")
# Yield Curve Intelligence — inversion analysis import pandas as pd # Load yield curve data (6,556 days, 2000–2026) yc = pd.read_csv("yield_curve_2000_2026.csv", parse_dates=["date"]) # Columns: date, dgs10, dgs2, dgs3mo, dgs30, # spread_10y2y, spread_10y3m, spread_30y10y, # curve_regime, inversion_days, event_type # curve_regime: 'normal' | 'flat' | 'inverted' # Count inversion episodes inversions = yc[yc['curve_regime'] == 'inverted'] print(f"Total inversion days: {len(inversions)}") # Show all 34 inversion episodes episodes = yc[yc['event_type'] == 'INVERSION_START'][['date', 'spread_10y2y']] print(episodes.to_string()) # Backtest: market behavior after inversion end yc['next_regime'] = yc['curve_regime'].shift(-60) # 60 days forward
From individual researchers to SaaS teams, here's what the data enables.
All packages include metadata.json, README, sample code, and verified QC reports. Delivered via secure download or API endpoint.
All prices are for one-time data delivery licenses. Annual API access for live data updates available separately. Custom bundles quoted individually.
We take data classification seriously. Here is exactly how each product type is categorized and what you can do with it.
For detailed licensing terms, white-label agreements, or exclusive usage rights, contact contact@marketdpro.com. This data is for research and analytical purposes. Nothing here constitutes investment advice.
Tell us what you need — market, timeframe, period, and purpose. We'll put together a custom estimate within 24 hours.