fixed fine tuning script
This commit is contained in:
parent
7b1f8c6d9a
commit
16d1a7e1fa
3
fine_tune_data.jsonl
Normal file
3
fine_tune_data.jsonl
Normal file
File diff suppressed because one or more lines are too long
68
main.py
68
main.py
@ -41,55 +41,48 @@ from market_predictor.performance_metrics import PerformanceMetrics
|
||||
nest_asyncio.apply()
|
||||
|
||||
async def analyze_market_data(
|
||||
market_data: pd.DataFrame,
|
||||
training_window_size: int = 60,
|
||||
market_data: pd.DataFrame,
|
||||
training_window_size: int = 78,
|
||||
inference_window_size: int = 12,
|
||||
inference_offset: int = 0
|
||||
) -> pd.DataFrame:
|
||||
"""Analyze market data using rolling windows."""
|
||||
# Validate required columns
|
||||
required_columns = {'Close', 'VWAP', 'Volume'}
|
||||
missing_columns = required_columns - set(market_data.columns)
|
||||
"""
|
||||
Analyze market data and generate predictions
|
||||
|
||||
if missing_columns:
|
||||
# Map yfinance columns to required columns
|
||||
column_mapping = {
|
||||
'Adj Close': 'Close',
|
||||
'Volume': 'Volume'
|
||||
}
|
||||
market_data = market_data.rename(columns=column_mapping)
|
||||
Args:
|
||||
market_data: DataFrame containing market data
|
||||
training_window_size: Size of training window
|
||||
inference_window_size: Size of inference window
|
||||
inference_offset: Offset for inference window
|
||||
|
||||
# Calculate VWAP if missing
|
||||
if 'VWAP' not in market_data.columns:
|
||||
market_data['VWAP'] = (
|
||||
(market_data['High'] + market_data['Low'] + market_data['Close']) / 3 *
|
||||
market_data['Volume']
|
||||
).cumsum() / market_data['Volume'].cumsum()
|
||||
|
||||
processor = MarketDataProcessor(market_data)
|
||||
processed_data = processor.df
|
||||
|
||||
service = PredictionService(
|
||||
market_data=processed_data,
|
||||
Returns:
|
||||
pd.DataFrame: DataFrame containing predictions
|
||||
"""
|
||||
# Initialize processor and service
|
||||
processor = MarketDataProcessor(
|
||||
df=market_data,
|
||||
training_window_size=training_window_size,
|
||||
inference_window_size=inference_window_size,
|
||||
inference_offset=inference_offset
|
||||
)
|
||||
|
||||
total_size = training_window_size + inference_offset + inference_window_size
|
||||
total_windows = len(processed_data) - total_size
|
||||
service = PredictionService(
|
||||
market_data=processor.df,
|
||||
training_window_size=training_window_size,
|
||||
inference_window_size=inference_window_size,
|
||||
inference_offset=inference_offset
|
||||
)
|
||||
|
||||
predictions = []
|
||||
with tqdm(total=total_windows, desc="Processing", ncols=80) as pbar:
|
||||
async for pred in service.generate_rolling_predictions():
|
||||
if pred:
|
||||
predictions.append(pred)
|
||||
pbar.update(1)
|
||||
# Get predictions and convert to DataFrame
|
||||
predictions = await service.main()
|
||||
if not predictions: # Handle empty list case
|
||||
return pd.DataFrame()
|
||||
|
||||
predictions_df = pd.DataFrame(predictions)
|
||||
|
||||
predictions_df = pd.DataFrame(predictions) if predictions else pd.DataFrame()
|
||||
|
||||
if not predictions_df.empty:
|
||||
metrics = PerformanceMetrics(predictions_df, processed_data)
|
||||
# Generate performance report if we have predictions
|
||||
if len(predictions_df) > 0:
|
||||
metrics = PerformanceMetrics(predictions_df, processor.df)
|
||||
report = metrics.generate_report()
|
||||
print("\nPerformance Report:")
|
||||
print(report)
|
||||
@ -130,6 +123,7 @@ async def main():
|
||||
inference_offset=args.inference_offset
|
||||
)
|
||||
|
||||
print(predictions_df)
|
||||
if args.output and not predictions_df.empty:
|
||||
predictions_df.to_csv(args.output)
|
||||
print(f"\nPredictions saved to: {args.output}")
|
||||
|
||||
@ -9,7 +9,7 @@ if not OPENAI_API_KEY:
|
||||
raise ValueError("OpenAI API key not found in environment variables")
|
||||
|
||||
# Model Configuration
|
||||
MODEL_NAME = 'ft:gpt-4o-mini-2024-07-18:yasha-sheynin::AwgWhL48' #"gpt-4o-2024-08-06" #"ft:gpt-4o-mini-2024-07-18:yasha-sheynin::Awacdfg6"
|
||||
MODEL_NAME = 'gpt-4o-2024-08-06' #'ft:gpt-4o-mini-2024-07-18:yasha-sheynin::AwgWhL48' #"gpt-4o-2024-08-06" #"ft:gpt-4o-mini-2024-07-18:yasha-sheynin::Awacdfg6"
|
||||
|
||||
# RAG Configuration
|
||||
VECTOR_STORE_TYPE = "faiss"
|
||||
|
||||
@ -5,10 +5,41 @@ from typing import List, Dict
|
||||
class MarketDataProcessor:
|
||||
REQUIRED_COLUMNS = ['Close', 'VWAP', 'Volume']
|
||||
|
||||
def __init__(self, df: pd.DataFrame):
|
||||
def __init__(self, df: pd.DataFrame, training_window_size: int = 78,
|
||||
inference_offset = 1, inference_window_size: int = 12):
|
||||
self.df = df.copy()
|
||||
self.training_window_size = training_window_size
|
||||
self.inference_offset = inference_offset
|
||||
self.inference_window_size = inference_window_size
|
||||
self._validate_columns()
|
||||
self._initialize_moving_averages()
|
||||
self.create_prediction_windows()
|
||||
|
||||
def _ensure_technical_indicators(self, window: pd.DataFrame) -> pd.DataFrame:
|
||||
"""
|
||||
Ensure all technical indicators are calculated for the window
|
||||
|
||||
Args:
|
||||
window: DataFrame containing market data
|
||||
|
||||
Returns:
|
||||
DataFrame with technical indicators added
|
||||
"""
|
||||
if len(window) == 0:
|
||||
return window
|
||||
|
||||
# Create copy to avoid modifying original
|
||||
window = window.copy()
|
||||
|
||||
# Calculate moving averages if not present
|
||||
if 'MA5' not in window.columns:
|
||||
window['MA5'] = window['Close'].rolling(window=5, min_periods=1).mean()
|
||||
if 'MA20' not in window.columns:
|
||||
window['MA20'] = window['Close'].rolling(window=20, min_periods=1).mean()
|
||||
if 'Volume_MA5' not in window.columns:
|
||||
window['Volume_MA5'] = window['Volume'].rolling(window=5, min_periods=1).mean()
|
||||
|
||||
return window
|
||||
|
||||
def _validate_columns(self):
|
||||
"""Verify required columns exist"""
|
||||
@ -21,66 +52,144 @@ class MarketDataProcessor:
|
||||
self.df['MA5'] = self.df['Close'].rolling(window=5, min_periods=1).mean()
|
||||
self.df['MA20'] = self.df['Close'].rolling(window=20, min_periods=1).mean()
|
||||
self.df['Volume_MA5'] = self.df['Volume'].rolling(window=5, min_periods=1).mean()
|
||||
|
||||
def create_windows(self, data: pd.DataFrame = None, window_size: int = 20) -> List[str]:
|
||||
"""Create window descriptions ensuring MA columns exist"""
|
||||
df = data.copy() if data is not None else self.df.copy()
|
||||
if 'MA5' not in df.columns:
|
||||
df['MA5'] = df['Close'].rolling(window=5, min_periods=1).mean()
|
||||
df['MA20'] = df['Close'].rolling(window=20, min_periods=1).mean()
|
||||
df['Volume_MA5'] = df['Volume'].rolling(window=5, min_periods=1).mean()
|
||||
|
||||
windows = []
|
||||
for i in range(len(df) - window_size + 1):
|
||||
window = df.iloc[i:i+window_size]
|
||||
description = self.generate_description(window)
|
||||
windows.append(description)
|
||||
return windows
|
||||
|
||||
def generate_description(self, window: pd.DataFrame, is_training: bool = False) -> str:
|
||||
"""
|
||||
Generates market context with VWAP movement for training data only.
|
||||
"""
|
||||
# If the window is missing technical indicator columns, compute them.
|
||||
required_cols = ['MA5', 'MA20', 'Volume_MA5']
|
||||
missing = [col for col in required_cols if col not in window.columns]
|
||||
if missing:
|
||||
window = window.copy()
|
||||
if "Close" in window.columns:
|
||||
window["MA5"] = window["Close"].rolling(window=5, min_periods=1).mean().bfill()
|
||||
window["MA20"] = window["Close"].rolling(window=20, min_periods=1).mean().bfill()
|
||||
else:
|
||||
window["MA5"] = 0
|
||||
window["MA20"] = 0
|
||||
if "Volume" in window.columns:
|
||||
window["Volume_MA5"] = window["Volume"].rolling(window=5, min_periods=1).mean().bfill()
|
||||
else:
|
||||
window["Volume_MA5"] = 0
|
||||
|
||||
latest = window.iloc[-1]
|
||||
prev = window.iloc[-2] if len(window) > 1 else latest
|
||||
|
||||
volume_change = (
|
||||
((latest['Volume'] - prev['Volume'])/prev['Volume']*100)
|
||||
if prev['Volume'] > 0
|
||||
else 0
|
||||
)
|
||||
# Calculate VWAP movement from previous interval
|
||||
vwap_change = (latest["VWAP"] - prev["VWAP"]) / prev["VWAP"] * 100
|
||||
"""Generate market state description using main DataFrame for calculations"""
|
||||
# Get timestamp from window
|
||||
current_timestamp = window.index[0]
|
||||
|
||||
# Find position in main DataFrame
|
||||
current_idx = self.df.index.get_loc(current_timestamp)
|
||||
|
||||
# Get current and previous values
|
||||
current = self.df.iloc[current_idx]
|
||||
prev = self.df.iloc[current_idx - 1] if current_idx > 0 else current
|
||||
|
||||
# Calculate changes
|
||||
price_change = ((current['Close'] - prev['Close']) / prev['Close'] * 100) if prev['Close'] != 0 else 0
|
||||
volume_change = ((current['Volume'] - prev['Volume']) / prev['Volume'] * 100) if prev['Volume'] != 0 else 0
|
||||
vwap_change = ((current['VWAP'] - prev['VWAP']) / prev['VWAP'] * 100) if prev['VWAP'] != 0 else 0
|
||||
|
||||
vwap_direction = "up" if vwap_change > 0 else "down"
|
||||
|
||||
# Base description
|
||||
desc = f"""
|
||||
Current Price: {latest['Close']:.2f}
|
||||
VWAP: {latest['VWAP']:.2f}
|
||||
Volume: {latest['Volume']}
|
||||
MA5: {latest['MA5']:.2f}
|
||||
MA20: {latest['MA20']:.2f}
|
||||
Volume MA5: {latest['Volume_MA5']:.2f}
|
||||
Price Change: {((latest['Close'] - prev['Close'])/prev['Close']*100):.2f}%
|
||||
Volume Change: {volume_change:.2f}%
|
||||
Previous 5min VWAP Movement: {vwap_direction} ({vwap_change:.2f}%)
|
||||
"""
|
||||
return f"""
|
||||
Current Price: {current['Close']:.2f}
|
||||
VWAP: {current['VWAP']:.2f}
|
||||
Volume: {current['Volume']}
|
||||
MA5: {current['MA5']:.2f}
|
||||
MA20: {current['MA20']:.2f}
|
||||
Volume MA5: {current['Volume_MA5']:.2f}
|
||||
Price Change: {price_change:.2f}%
|
||||
Volume Change: {volume_change:.2f}%
|
||||
Previous 5min VWAP Movement: {vwap_direction} ({vwap_change:.2f}%)
|
||||
"""
|
||||
|
||||
def create_prediction_windows(self):
|
||||
"""Create sliding windows for prediction with proper bounds checking"""
|
||||
# Calculate total required length
|
||||
prediction_offset = 1
|
||||
total_required = self.training_window_size + self.inference_window_size + prediction_offset
|
||||
|
||||
return desc
|
||||
if len(self.df) < total_required:
|
||||
raise ValueError(f"Insufficient data: need {total_required} intervals, but got {len(self.df)}")
|
||||
|
||||
windows = []
|
||||
# Adjust the range to prevent out-of-bounds access
|
||||
max_start = len(self.df) - (self.inference_window_size + self.inference_offset + prediction_offset)
|
||||
|
||||
for i in range(self.training_window_size, max_start):
|
||||
try:
|
||||
window = {
|
||||
'training': self.df.iloc[i - self.training_window_size:i],
|
||||
'current': self.df.iloc[i:i + self.inference_window_size],
|
||||
'target': self.df.iloc[i + self.inference_window_size]
|
||||
}
|
||||
windows.append(window)
|
||||
except IndexError as e:
|
||||
print(f"Warning: Skipping window at index {i} due to bounds error: {e}")
|
||||
continue
|
||||
|
||||
self.windows = windows
|
||||
return self.windows
|
||||
|
||||
|
||||
def combine_intervals(self, window: pd.DataFrame, is_training: bool = False) -> str:
|
||||
"""
|
||||
Combine multiple interval descriptions into single text.
|
||||
For training: Creates multiple sets of concatenated intervals with supervision
|
||||
For inference: Creates single set of concatenated intervals
|
||||
"""
|
||||
if window.empty:
|
||||
raise ValueError("Empty window provided")
|
||||
|
||||
def _create_interval_description(interval: pd.DataFrame, timestamp) -> str:
|
||||
"""Create description for single interval with timestamp"""
|
||||
desc = self.generate_description(interval)
|
||||
return f"Time: {timestamp}\n{desc}"
|
||||
|
||||
def _get_vwap_supervision(target: pd.Series, last: pd.Series) -> str:
|
||||
"""Calculate and format VWAP movement supervision info"""
|
||||
vwap_change = ((target['VWAP'] - last['VWAP']) / last['VWAP'] * 100)
|
||||
vwap_direction = "up" if vwap_change > 0 else "down"
|
||||
return f"\nNext Interval VWAP Movement: {vwap_direction} ({vwap_change:.2f}%)"
|
||||
|
||||
if is_training:
|
||||
combined_texts = []
|
||||
for i in range(len(window) - self.inference_window_size + 1):
|
||||
# Create window of intervals
|
||||
intervals = window.iloc[i:i + self.inference_window_size]
|
||||
|
||||
# Generate descriptions for each interval
|
||||
interval_descriptions = [
|
||||
_create_interval_description(pd.DataFrame([interval]), timestamp)
|
||||
for timestamp, interval in intervals.iterrows()
|
||||
]
|
||||
|
||||
# Combine descriptions
|
||||
window_text = "\n===\n".join(interval_descriptions)
|
||||
|
||||
# Add supervision if next interval exists
|
||||
target_idx = i + self.inference_window_size
|
||||
if target_idx < len(window):
|
||||
supervision = _get_vwap_supervision(
|
||||
window.iloc[target_idx],
|
||||
window.iloc[target_idx - 1]
|
||||
)
|
||||
window_text += supervision
|
||||
|
||||
combined_texts.append(window_text)
|
||||
|
||||
return combined_texts
|
||||
|
||||
else:
|
||||
# For inference: create single set of concatenated intervals
|
||||
interval_descriptions = [
|
||||
_create_interval_description(pd.DataFrame([interval]), timestamp)
|
||||
for timestamp, interval in window.iterrows()
|
||||
]
|
||||
return "\n===\n".join(interval_descriptions)
|
||||
|
||||
def reconstruct_prediction_window(self, prediction_timestamp: pd.Timestamp) -> Dict[str, pd.DataFrame]:
|
||||
"""
|
||||
Reconstruct the window used for prediction based on target timestamp
|
||||
|
||||
Args:
|
||||
prediction_timestamp: Timestamp of the prediction target
|
||||
|
||||
Returns:
|
||||
Dict containing training, current, and target windows
|
||||
"""
|
||||
# Calculate indices
|
||||
target_idx = self.df.index.get_loc(prediction_timestamp)
|
||||
current_end = target_idx
|
||||
current_start = current_end - self.inference_window_size
|
||||
training_start = current_start - self.training_window_size
|
||||
|
||||
# Extract windows
|
||||
window = {
|
||||
'training': self.df.iloc[training_start:current_start],
|
||||
'current': self.df.iloc[current_start:current_end],
|
||||
'target': self.df.iloc[target_idx]
|
||||
}
|
||||
|
||||
return window
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import sys
|
||||
import os
|
||||
import asyncio
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
import asyncio
|
||||
import pandas as pd
|
||||
from datetime import datetime, timedelta
|
||||
from tqdm import tqdm
|
||||
from openai import OpenAI
|
||||
from typing import List, Dict
|
||||
from typing import List, Dict, Optional, Any
|
||||
from collections import Counter
|
||||
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
@ -15,15 +15,19 @@ from .market_data_fetcher import MarketDataFetcher
|
||||
from .data_processor import MarketDataProcessor
|
||||
from .config import OPENAI_API_KEY
|
||||
from .rag_engine import RAGEngine
|
||||
from .utils.formatting import FormatMixin
|
||||
|
||||
|
||||
class FineTuneDatasetGenerator:
|
||||
def __init__(self,
|
||||
symbols: List[str],
|
||||
lookback_days: int = 30,
|
||||
training_window_size: int = 60,
|
||||
inference_window_size: int = 12,
|
||||
inference_offset: int = 0,
|
||||
interval: str = '5m'):
|
||||
def __init__(
|
||||
self,
|
||||
symbols: List[str],
|
||||
lookback_days: int = 3,
|
||||
training_window_size: int = 65,
|
||||
inference_window_size: int = 8,
|
||||
inference_offset: int = 1,
|
||||
interval: str = "5m",
|
||||
):
|
||||
self.symbols = symbols
|
||||
self.lookback_days = lookback_days
|
||||
self.training_window_size = training_window_size
|
||||
@ -32,153 +36,177 @@ class FineTuneDatasetGenerator:
|
||||
self.interval = interval
|
||||
self.client = OpenAI(api_key=OPENAI_API_KEY)
|
||||
self.rag_engine = RAGEngine()
|
||||
|
||||
|
||||
async def generate_dataset(self) -> List[Dict]:
|
||||
"""Generate labeled dataset using correct predictions only"""
|
||||
examples = []
|
||||
|
||||
"""Generate fine-tuning dataset from correct predictions."""
|
||||
all_examples = []
|
||||
for symbol in tqdm(self.symbols, desc="Processing symbols"):
|
||||
try:
|
||||
market_data = await self.fetch_market_data(symbol)
|
||||
if market_data is None or market_data.empty:
|
||||
continue
|
||||
|
||||
# Initialize processor
|
||||
self.processor = MarketDataProcessor(
|
||||
df=market_data,
|
||||
training_window_size=self.training_window_size,
|
||||
inference_window_size=self.inference_window_size,
|
||||
inference_offset=self.inference_offset
|
||||
)
|
||||
|
||||
# Generate predictions
|
||||
predictions = await analyze_market_data(
|
||||
market_data,
|
||||
training_window_size=self.training_window_size,
|
||||
inference_window_size=self.inference_window_size,
|
||||
inference_offset=self.inference_offset
|
||||
)
|
||||
if not isinstance(predictions, pd.DataFrame):
|
||||
predictions = pd.DataFrame(predictions)
|
||||
|
||||
# Filter and create examples
|
||||
correct_predictions = predictions[
|
||||
predictions['predicted_movement'] == predictions['actual_movement']
|
||||
]
|
||||
for _, row in correct_predictions.iterrows():
|
||||
example = await self._create_training_example(row)
|
||||
if example:
|
||||
all_examples.append(example)
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error processing {symbol}: {e}")
|
||||
continue
|
||||
|
||||
return all_examples
|
||||
|
||||
async def fetch_market_data(self, symbol: str) -> Optional[pd.DataFrame]:
|
||||
"""Fetch market data with fallback if intervals are insufficient."""
|
||||
try:
|
||||
fetcher = MarketDataFetcher(symbol)
|
||||
end_date = datetime.now()
|
||||
start_date = end_date - timedelta(days=self.lookback_days)
|
||||
|
||||
# Get predictions using analyze_market_data
|
||||
fetcher = MarketDataFetcher(symbol)
|
||||
market_data = fetcher.fetch_data(
|
||||
df = fetcher.fetch_data(
|
||||
start_date=start_date.strftime('%Y-%m-%d'),
|
||||
end_date=end_date.strftime('%Y-%m-%d'),
|
||||
interval=self.interval
|
||||
)
|
||||
if len(df) < (self.training_window_size + self.inference_window_size + self.inference_offset):
|
||||
print(f"Insufficient data for {symbol}")
|
||||
return None
|
||||
return df
|
||||
except Exception as e:
|
||||
print(f"Error fetching data for {symbol}: {e}")
|
||||
return None
|
||||
|
||||
async def _create_training_example(self, pred: pd.Series) -> Optional[Dict]:
|
||||
"""Reconstruct full prompt for a correct prediction."""
|
||||
try:
|
||||
window = self.processor.reconstruct_prediction_window(pred['timestamp_prediction'])
|
||||
current_context = self.processor.combine_intervals(window['current'])
|
||||
|
||||
predictions_df = await analyze_market_data(
|
||||
market_data=market_data,
|
||||
training_window_size=self.training_window_size,
|
||||
inference_window_size=self.inference_window_size,
|
||||
inference_offset=self.inference_offset
|
||||
training = self.processor.combine_intervals(window['training'], is_training=True)
|
||||
|
||||
self.rag_engine.create_vectorstore(training),
|
||||
|
||||
historical_context = self.rag_engine.get_relevant_context(current_context)
|
||||
# print(f'historical_context : {historical_context}')
|
||||
|
||||
example = {
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": self.rag_engine.system_prompt # from RAGEngine
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": (
|
||||
f"Historical context:\n{historical_context}\n\n"
|
||||
f"Current market state:\n{current_context}"
|
||||
)
|
||||
},
|
||||
{
|
||||
"role": "assistant",
|
||||
"content": json.dumps({
|
||||
"vwap_direction_next_5min": pred['predicted_movement'],
|
||||
"confidence_score": float(pred['confidence_score']),
|
||||
"expected_vwap_change": float(pred.get('expected_vwap_change', 0.0)),
|
||||
"volatility_estimate": float(pred.get('volatility_estimate', 0.0)),
|
||||
"suggested_entry": float(pred.get('suggested_entry', 0.0)),
|
||||
"suggested_stop_loss": float(pred.get('suggested_stop_loss', 0.0)),
|
||||
"suggested_take_profit": float(pred.get('suggested_take_profit', 0.0)),
|
||||
"key_signals": pred.get('key_signals', []),
|
||||
"reasoning": pred.get('reasoning', '')
|
||||
})
|
||||
}
|
||||
]
|
||||
}
|
||||
return example
|
||||
except Exception as e:
|
||||
print(f"Error creating example: {e}")
|
||||
return None
|
||||
|
||||
async def save_jsonl(self, examples: List[Dict], output_path: str = "fine_tune_data.jsonl"):
|
||||
"""Save examples to JSONL."""
|
||||
try:
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
for ex in examples:
|
||||
line = json.dumps(ex, ensure_ascii=False)
|
||||
f.write(line + "\n")
|
||||
print(f"Saved {len(examples)} examples to {output_path}")
|
||||
except Exception as e:
|
||||
print(f"Error saving JSONL: {e}")
|
||||
|
||||
async def start_fine_tuning_job(self, dataset_path: str) -> None:
|
||||
"""Upload file and create fine-tuning job"""
|
||||
try:
|
||||
client = OpenAI(api_key=OPENAI_API_KEY)
|
||||
|
||||
# First upload the file
|
||||
print(f"Uploading file: {dataset_path}")
|
||||
with open(dataset_path, "rb") as file:
|
||||
upload_response = client.files.create(
|
||||
file=file,
|
||||
purpose="fine-tune"
|
||||
)
|
||||
|
||||
file_id = upload_response.id
|
||||
print(f"File uploaded successfully. ID: {file_id}")
|
||||
|
||||
# Wait for file processing
|
||||
import time
|
||||
time.sleep(5)
|
||||
|
||||
# Create fine-tuning job
|
||||
print("Creating fine-tuning job...")
|
||||
job = client.fine_tuning.jobs.create(
|
||||
training_file=file_id,
|
||||
model="gpt-4o-mini-2024-07-18", # Changed from invalid model name
|
||||
hyperparameters={
|
||||
"n_epochs": 3
|
||||
}
|
||||
)
|
||||
|
||||
if not predictions_df.empty:
|
||||
correct_examples = self._convert_to_training_examples(predictions_df)
|
||||
examples.extend(correct_examples)
|
||||
print(f"Added {len(correct_examples)} examples from {symbol}")
|
||||
|
||||
return examples
|
||||
|
||||
def _convert_to_training_examples(self, predictions_df: pd.DataFrame) -> List[Dict]:
|
||||
"""Convert correct predictions to training examples with validation"""
|
||||
examples = []
|
||||
|
||||
# Print DataFrame info for debugging
|
||||
print("\nDataFrame Info:")
|
||||
print(predictions_df.info())
|
||||
print("\nSample row:")
|
||||
print(predictions_df.iloc[0])
|
||||
|
||||
# Filter for correct predictions
|
||||
correct_mask = predictions_df['vwap_direction_next_5min'] == predictions_df['actual_movement']
|
||||
correct_predictions = predictions_df[correct_mask].copy()
|
||||
|
||||
print(f"Found {len(correct_predictions)} correct predictions out of {len(predictions_df)} total")
|
||||
|
||||
for _, pred in correct_predictions.iterrows():
|
||||
try:
|
||||
context = self._create_market_context(pred)
|
||||
label = self._create_prediction_label(pred)
|
||||
|
||||
examples.append({
|
||||
"messages": [
|
||||
{"role": "system", "content": self.rag_engine.system_prompt},
|
||||
{"role": "user", "content": context},
|
||||
{"role": "assistant", "content": json.dumps(label)}
|
||||
]
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error processing prediction: {str(e)}")
|
||||
continue
|
||||
|
||||
return examples
|
||||
|
||||
def _create_market_context(self, row: pd.Series) -> str:
|
||||
"""Create market state description with column validation"""
|
||||
# Print available columns for debugging
|
||||
print(f"Available columns: {row.index.tolist()}")
|
||||
|
||||
# Use safe column access with defaults
|
||||
return f"""Current Market State:
|
||||
Current Price: {row.get('close', row.get('Close', 0.0)):.2f}
|
||||
VWAP: {row.get('vwap', row.get('VWAP', 0.0)):.2f}
|
||||
Volume: {row.get('volume', row.get('Volume', 0))}
|
||||
MA5: {row.get('ma5', row.get('MA5', 0.0)):.2f}
|
||||
MA20: {row.get('ma20', row.get('MA20', 0.0)):.2f}
|
||||
Volume MA5: {row.get('volume_ma5', row.get('Volume_MA5', 0.0)):.2f}
|
||||
Price Change: {row.get('price_change', 0.0):.2f}%
|
||||
Volume Change: {row.get('volume_change', 0.0):.2f}%
|
||||
Previous VWAP Movement: {row.get('prev_vwap_direction', 'none')}
|
||||
Time: {row.name}
|
||||
"""
|
||||
|
||||
def _create_prediction_label(self, row: pd.Series) -> Dict:
|
||||
"""Create prediction label from actual data"""
|
||||
return {
|
||||
"vwap_direction_next_5min": row['vwap_direction_next_5min'],
|
||||
"confidence_score": row['confidence_score'],
|
||||
"expected_vwap_change": row['expected_vwap_change'],
|
||||
"volatility_estimate": row['volatility_estimate'],
|
||||
"suggested_entry": row['suggested_entry'],
|
||||
"suggested_stop_loss": row['suggested_stop_loss'],
|
||||
"suggested_take_profit": row['suggested_take_profit'],
|
||||
"key_signals": row['key_signals'],
|
||||
"reasoning": row['reasoning']
|
||||
}
|
||||
|
||||
async def create_fine_tuning_job(self, examples: List[Dict]):
|
||||
"""Create and monitor fine-tuning job"""
|
||||
if not examples:
|
||||
raise ValueError("No examples provided for fine-tuning")
|
||||
print(f"Fine-tuning job created: {job.id}")
|
||||
print(f"Status: {job.status}")
|
||||
return job.id
|
||||
|
||||
# Save examples to JSONL file
|
||||
output_path = 'training_data.jsonl'
|
||||
with open(output_path, 'w') as f:
|
||||
for example in examples:
|
||||
f.write(json.dumps(example) + '\n')
|
||||
except Exception as e:
|
||||
print(f"Error in fine-tuning job creation: {str(e)}")
|
||||
raise
|
||||
|
||||
print(f"Saved {len(examples)} examples to {output_path}")
|
||||
|
||||
# Upload training file
|
||||
training_file = self.client.files.create(
|
||||
file=open(output_path, 'rb'),
|
||||
purpose='fine-tune'
|
||||
)
|
||||
|
||||
# Create fine-tuning job
|
||||
job = self.client.fine_tuning.jobs.create(
|
||||
training_file=training_file.id,
|
||||
model="gpt-4o-mini-2024-07-18",
|
||||
hyperparameters={
|
||||
"n_epochs": 3
|
||||
}
|
||||
)
|
||||
|
||||
print(f"Fine-tuning job created: {job.id}")
|
||||
return job.id
|
||||
|
||||
# If run standalone
|
||||
async def main():
|
||||
"""Run dataset generation and fine-tuning"""
|
||||
symbols = ['BTC-USD', 'NVDA', 'META', 'LTC-USD']
|
||||
generator = FineTuneDatasetGenerator(
|
||||
symbols=symbols,
|
||||
lookback_days=2,
|
||||
training_window_size=60,
|
||||
inference_window_size=12,
|
||||
inference_offset=0,
|
||||
interval='5m'
|
||||
)
|
||||
|
||||
symbols = ["BTC-USD", 'AAPL']# "ETH-USD", 'AAPL', 'TSLA', 'NVDA']
|
||||
generator = FineTuneDatasetGenerator(symbols)
|
||||
examples = await generator.generate_dataset()
|
||||
print(f"Generated {len(examples)} training examples")
|
||||
|
||||
if examples:
|
||||
job_id = await generator.create_fine_tuning_job(examples)
|
||||
print(f"Fine-tuning job started. Monitor progress using job ID: {job_id}")
|
||||
output_file = "fine_tune_data.jsonl"
|
||||
await generator.save_jsonl(examples, output_file)
|
||||
await generator.start_fine_tuning_job(output_file)
|
||||
else:
|
||||
print("No valid examples collected.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
asyncio.run(main())
|
||||
|
||||
|
||||
@ -37,7 +37,8 @@ class PerformanceMetrics:
|
||||
skipped_timestamps = 0
|
||||
|
||||
for idx, row in self.predictions_df.iterrows():
|
||||
timestamp = row['prediction_timestamp']
|
||||
# print(row)
|
||||
timestamp = row['timestamp_prediction']
|
||||
try:
|
||||
current_idx = self.market_data.index.get_loc(timestamp)
|
||||
if current_idx + 1 < len(self.market_data):
|
||||
@ -153,7 +154,7 @@ class PerformanceMetrics:
|
||||
|
||||
# Get next VWAP value safely
|
||||
try:
|
||||
timestamp_idx = self.market_data.index.get_loc(row['prediction_timestamp'])
|
||||
timestamp_idx = self.market_data.index.get_loc(row['timestamp_prediction'])
|
||||
if timestamp_idx + 1 >= len(self.market_data):
|
||||
continue
|
||||
|
||||
@ -166,7 +167,7 @@ class PerformanceMetrics:
|
||||
hits += 1
|
||||
|
||||
except (KeyError, IndexError):
|
||||
print(f"Warning: Could not find next VWAP for timestamp {row['prediction_timestamp']}")
|
||||
print(f"Warning: Could not find next VWAP for timestamp {row['timestamp_prediction']}")
|
||||
continue
|
||||
|
||||
return hits / total if total > 0 else 0.0
|
||||
@ -188,7 +189,7 @@ class PerformanceMetrics:
|
||||
|
||||
try:
|
||||
# Get next VWAP value safely using index location
|
||||
timestamp_idx = self.market_data.index.get_loc(row['prediction_timestamp'])
|
||||
timestamp_idx = self.market_data.index.get_loc(row['timestamp_prediction'])
|
||||
if timestamp_idx + 1 >= len(self.market_data):
|
||||
continue
|
||||
|
||||
@ -201,7 +202,7 @@ class PerformanceMetrics:
|
||||
hits += 1
|
||||
|
||||
except (KeyError, IndexError):
|
||||
print(f"Warning: Could not find next VWAP for timestamp {row['prediction_timestamp']}")
|
||||
print(f"Warning: Could not find next VWAP for timestamp {row['timestamp_prediction']}")
|
||||
continue
|
||||
|
||||
return hits / total if total > 0 else 0.0
|
||||
@ -281,7 +282,7 @@ class PerformanceMetrics:
|
||||
|
||||
for _, row in self.predictions_df.iterrows():
|
||||
# Get stock price at prediction time
|
||||
timestamp = row['prediction_timestamp']
|
||||
timestamp = row['timestamp_prediction']
|
||||
stock_price = self.market_data.loc[timestamp, 'VWAP']
|
||||
|
||||
# Calculate position size and return
|
||||
@ -410,8 +411,8 @@ Top Signals:
|
||||
|
||||
Time Coverage:
|
||||
-----------
|
||||
Start: {self.predictions_df['prediction_timestamp'].min()}
|
||||
End: {self.predictions_df['prediction_timestamp'].max()}
|
||||
Start: {self.predictions_df['timestamp_prediction'].min()}
|
||||
End: {self.predictions_df['timestamp_prediction'].max()}
|
||||
"""
|
||||
|
||||
return existing_report + trading_metrics
|
||||
|
||||
@ -4,138 +4,125 @@ from datetime import datetime, date
|
||||
from typing import List, Dict, Optional, Callable, Tuple
|
||||
from .data_processor import MarketDataProcessor
|
||||
from .rag_engine import RAGEngine
|
||||
import json
|
||||
from tqdm import tqdm
|
||||
import asyncio
|
||||
from typing import List, Dict
|
||||
|
||||
class PredictionService:
|
||||
def __init__(self,
|
||||
market_data: pd.DataFrame,
|
||||
training_window_size: int = 78,
|
||||
inference_window_size: int = 12,
|
||||
inference_offset: int = 0,
|
||||
max_concurrent: int = 3):
|
||||
self.processor = MarketDataProcessor(market_data)
|
||||
def __init__(
|
||||
self,
|
||||
market_data: pd.DataFrame,
|
||||
training_window_size: int = 78,
|
||||
inference_window_size: int = 12,
|
||||
inference_offset: int = 0,
|
||||
max_concurrent: int = 3,
|
||||
):
|
||||
self.processor = MarketDataProcessor(
|
||||
df=market_data,
|
||||
training_window_size=training_window_size,
|
||||
inference_window_size=inference_window_size,
|
||||
inference_offset=inference_offset,
|
||||
)
|
||||
self.engine = RAGEngine()
|
||||
self.semaphore = asyncio.Semaphore(max_concurrent)
|
||||
self.training_window_size = training_window_size
|
||||
self.inference_window_size = inference_window_size
|
||||
self.inference_offset = inference_offset
|
||||
self.market_data = market_data
|
||||
|
||||
def get_rolling_windows(self, window_days: int = 4) -> List[Tuple[pd.DataFrame, pd.DataFrame]]:
|
||||
df = self.processor.df.copy()
|
||||
dates = pd.to_datetime(df.index.date).unique()
|
||||
windows = []
|
||||
async def main(self) -> List[Dict]:
|
||||
"""Coordinate prediction process using sliding windows"""
|
||||
|
||||
for i in range(len(dates) - window_days):
|
||||
train_dates = dates[i:i+window_days]
|
||||
test_date = dates[i+window_days]
|
||||
|
||||
train_mask = df.index.date.isin([d.date() for d in train_dates])
|
||||
test_mask = df.index.date == test_date.date()
|
||||
|
||||
train_data = df[train_mask]
|
||||
test_data = df[test_mask]
|
||||
|
||||
if not train_data.empty and not test_data.empty:
|
||||
windows.append((train_data, test_data))
|
||||
|
||||
return windows
|
||||
# Get prediction windows from data processor
|
||||
windows = self.processor.create_prediction_windows(
|
||||
)
|
||||
|
||||
async def process_batch(
|
||||
self,
|
||||
window_size: int = 4,
|
||||
callback: Optional[Callable] = None
|
||||
) -> List[Dict]:
|
||||
windows = self.get_rolling_windows(window_size)
|
||||
predictions = []
|
||||
|
||||
for train_data, test_data in windows:
|
||||
# Process windows and generate predictions
|
||||
train_windows = self.processor.create_windows(train_data)
|
||||
self.engine.create_vectorstore(train_windows)
|
||||
|
||||
test_windows = self.processor.create_windows(test_data)
|
||||
for window, timestamp in zip(test_windows, test_data.index):
|
||||
prediction = await self.predict_window(window, timestamp)
|
||||
if prediction:
|
||||
predictions.append(prediction)
|
||||
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
# Add progress bar
|
||||
with tqdm(total=len(windows),
|
||||
desc=f"Processing predictions",
|
||||
leave=False) as pbar:
|
||||
for window in windows:
|
||||
# Initialize RAG with training window
|
||||
self.engine.create_vectorstore(
|
||||
self.processor.combine_intervals(window["training"], is_training=True)
|
||||
)
|
||||
|
||||
# Create current state description
|
||||
current_state = self.processor.combine_intervals(window["current"])
|
||||
|
||||
# Predict next interval
|
||||
prediction = await self._predict_next_interval(
|
||||
current_state, window["target"].name
|
||||
)
|
||||
predictions.append(prediction)
|
||||
pbar.update(1)
|
||||
|
||||
return predictions
|
||||
|
||||
def split_data(self, train_ratio: float = 0.8) -> tuple:
|
||||
"""Split data into training and testing periods"""
|
||||
total_periods = len(self.processor.df)
|
||||
train_size = int(total_periods * train_ratio)
|
||||
|
||||
train_data = self.processor.df.iloc[:train_size]
|
||||
test_data = self.processor.df.iloc[train_size:]
|
||||
|
||||
return train_data, test_data
|
||||
|
||||
async def predict_window(self, historical_data: pd.DataFrame, current_window: pd.DataFrame, timestamp: datetime) -> Dict:
|
||||
async with self.semaphore:
|
||||
try:
|
||||
# Create historical context excluding current window
|
||||
historical_contexts = self.processor.create_windows(historical_data, window_size=self.inference_window_size)
|
||||
self.engine.create_vectorstore(historical_contexts)
|
||||
|
||||
# Generate current context
|
||||
current_context = self.processor.generate_description(current_window)
|
||||
prediction = await self.engine.predict(current_context, timestamp)
|
||||
if not prediction:
|
||||
print(f"No prediction generated for timestamp {timestamp}")
|
||||
return prediction
|
||||
except Exception as e:
|
||||
print(f"Error in predict_window: {e}")
|
||||
return None
|
||||
async def _predict_next_interval(
|
||||
self, current_state: str, target_timestamp: pd.Timestamp
|
||||
) -> Dict:
|
||||
"""
|
||||
Predict next interval using LLM with RAG context
|
||||
|
||||
async def generate_rolling_predictions(self):
|
||||
data = self.processor.df.copy().sort_index()
|
||||
total_size = self.training_window_size + self.inference_offset + self.inference_window_size
|
||||
total_windows = len(data) - total_size
|
||||
|
||||
for i in range(total_windows):
|
||||
historical_start = i
|
||||
historical_end = i + self.training_window_size
|
||||
historical_data = data.iloc[historical_start:historical_end]
|
||||
|
||||
current_start = historical_end + self.inference_offset
|
||||
current_end = current_start + self.inference_window_size
|
||||
current_window = data.iloc[current_start:current_end]
|
||||
|
||||
if current_end < len(data):
|
||||
prediction_timestamp = data.index[current_end]
|
||||
prediction = await self.predict_window(
|
||||
historical_data=historical_data,
|
||||
current_window=current_window,
|
||||
timestamp=prediction_timestamp
|
||||
)
|
||||
if prediction:
|
||||
prediction.update({
|
||||
'historical_start': historical_data.index[0],
|
||||
'historical_end': historical_data.index[-1],
|
||||
'current_window_start': current_window.index[0],
|
||||
'current_window_end': current_window.index[-1],
|
||||
'prediction_timestamp': prediction_timestamp
|
||||
})
|
||||
yield prediction
|
||||
else:
|
||||
print(f"No prediction for window ending at {prediction_timestamp}")
|
||||
else:
|
||||
print(f"Skipping window ending at {current_end} due to insufficient data")
|
||||
Args:
|
||||
current_state: Combined description of current market intervals
|
||||
target_timestamp: Timestamp of interval to predict
|
||||
|
||||
Returns:
|
||||
Dict containing prediction and metadata
|
||||
"""
|
||||
try:
|
||||
async with self.semaphore: # Added semaphore for concurrent control
|
||||
# Get historical context
|
||||
historical_context = self.engine.get_relevant_context(current_state)
|
||||
# print(historical_context)
|
||||
# Format messages for LLM
|
||||
messages = [
|
||||
{"role": "system", "content": self.engine.system_prompt},
|
||||
{
|
||||
"role": "user",
|
||||
"content": f"Historical context:\n{historical_context}\n\nCurrent market state:\n{current_state}",
|
||||
},
|
||||
]
|
||||
|
||||
# Get LLM prediction
|
||||
response = await self.engine.llm.ainvoke(messages)
|
||||
raw_content = response.content.strip()
|
||||
|
||||
# Parse and validate response
|
||||
if not raw_content:
|
||||
raise ValueError("Empty response from LLM")
|
||||
|
||||
# Clean JSON format
|
||||
if not raw_content.startswith("{"):
|
||||
raw_content = "{" + raw_content.split("{", 1)[1]
|
||||
if not raw_content.endswith("}"):
|
||||
raw_content = raw_content.rsplit("}", 1)[0] + "}"
|
||||
|
||||
# Parse prediction
|
||||
prediction = json.loads(raw_content)
|
||||
prediction["timestamp_prediction"] = target_timestamp
|
||||
|
||||
return prediction
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"Prediction error for {target_timestamp}: {str(e)}")
|
||||
return None
|
||||
|
||||
async def batch_predictions(
|
||||
market_data: pd.DataFrame,
|
||||
training_window_size: int = 78, # 1 trading day
|
||||
inference_window_size: int = 12, # 1 hour
|
||||
inference_offset: int = 0
|
||||
training_window_size: int = 78, # 1 trading day
|
||||
inference_window_size: int = 12, # 1 hour
|
||||
inference_offset: int = 0,
|
||||
) -> pd.DataFrame:
|
||||
service = PredictionService(
|
||||
market_data,
|
||||
training_window_size=training_window_size,
|
||||
inference_window_size=inference_window_size,
|
||||
inference_offset=inference_offset
|
||||
inference_offset=inference_offset,
|
||||
)
|
||||
predictions = await service.generate_rolling_predictions()
|
||||
return pd.DataFrame(predictions)
|
||||
predictions = await service.main(market_data, training_window_size, inference_window_size)
|
||||
return pd.DataFrame(predictions)
|
||||
|
||||
@ -4,11 +4,13 @@ from .config import OPENAI_API_KEY, MODEL_NAME, EMBEDDING_MODEL
|
||||
from langchain_core.messages import HumanMessage, SystemMessage
|
||||
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
|
||||
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
|
||||
from langchain.docstore.document import Document
|
||||
from langchain_community.vectorstores import FAISS
|
||||
import pandas as pd
|
||||
import json
|
||||
import numpy as np
|
||||
import logging
|
||||
from .data_processor import MarketDataProcessor
|
||||
|
||||
|
||||
class RAGEngine:
|
||||
@ -20,112 +22,106 @@ class RAGEngine:
|
||||
openai_api_key=OPENAI_API_KEY, model=MODEL_NAME, temperature=0.1
|
||||
)
|
||||
self.vectorstore = None
|
||||
|
||||
|
||||
|
||||
# Define system prompt
|
||||
self.system_prompt = """
|
||||
You are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.
|
||||
Predict the VWAP movement for the next 5-minute interval using historical and current market data. Aim for high accuracy, estimate movement magnitude, assess volatility, and provide actionable trading insights.
|
||||
|
||||
Input Data:
|
||||
Historical Context Windows:
|
||||
Input Data:
|
||||
Historical Context Windows:
|
||||
- Top 5 similar past market windows based on resemblance to the current market window.
|
||||
- Each window consists of multiple 5-minute intervals leading up to the current window.
|
||||
- These windows help identify patterns preceding previous VWAP movements.
|
||||
|
||||
These represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.
|
||||
Each historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.
|
||||
The length of each window is flexible, meaning the amount of time covered varies.
|
||||
These historical windows help identify patterns that preceded previous VWAP movements.
|
||||
Current Window:
|
||||
Current Window:
|
||||
- Recent 5-minute intervals, with the latest interval being the most recent market data.
|
||||
- Metrics include: Price, VWAP, Volume, MA5, MA20, Volume MA5, Price Change, Volume Change, VWAP Change.
|
||||
|
||||
A dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.
|
||||
The next interval (immediately following the latest one) is what you need to predict.
|
||||
Available market metrics for the latest interval include:
|
||||
Price (Current)
|
||||
VWAP (Current)
|
||||
Volume
|
||||
MA5 (5-interval moving average)
|
||||
MA20 (20-interval moving average)
|
||||
Volume MA5 (5-interval volume moving average)
|
||||
Price Change from Previous 5-Minute Interval
|
||||
Volume Change from Previous 5-Minute Interval
|
||||
VWAP Change from Previous 5-Minute Interval
|
||||
Your Tasks:
|
||||
Analyze the Current Window:
|
||||
Tasks:
|
||||
1. Analyze the Current Window:
|
||||
- Extract key trends, anomalies, or signals.
|
||||
2. Compare Against Historical Context:
|
||||
- Identify how similar historical windows evolved.
|
||||
- Detect patterns indicating VWAP increases or decreases.
|
||||
3. Predict the Next Interval’s VWAP Movement:
|
||||
- Determine if VWAP will move up or down.
|
||||
- Provide a confidence score (0.0 to 1.0).
|
||||
4. Estimate Movement Magnitude and Volatility:
|
||||
- Predict expected VWAP change.
|
||||
- Assess short-term volatility.
|
||||
5. Optimize Trade Execution and Risk Management:
|
||||
- Recommend trade levels: Entry Price, Stop-Loss Level, Take-Profit Level.
|
||||
- Ensure realistic market conditions and risk-adjusted reward expectations.
|
||||
6. Identify Key Signals Used in Prediction:
|
||||
- List relevant signals or indicators.
|
||||
7. Provide Justification for the Prediction:
|
||||
- Offer data-driven reasoning for the prediction and trade levels.
|
||||
|
||||
Extract key trends, anomalies, or signals from the most recent market data.
|
||||
Compare Against Historical Context:
|
||||
Output Format (strict JSON):
|
||||
{
|
||||
"vwap_direction_next_5min": "up" or "down",
|
||||
"confidence_score": <float between 0.0 and 1.0>,
|
||||
"expected_vwap_change": <float (absolute or percentage)>,
|
||||
"volatility_estimate": <float (estimated short-term volatility)>,
|
||||
"suggested_entry": <float (price level)>,
|
||||
"suggested_stop_loss": <float (price level)>,
|
||||
"suggested_take_profit": <float (price level)>,
|
||||
"key_signals": ["list of relevant signals or indicators used"],
|
||||
"reasoning": "concise explanation of the logic behind your prediction and recommendations"
|
||||
}
|
||||
"""
|
||||
|
||||
Identify how similar historical windows evolved after reaching a state comparable to the current window.
|
||||
Detect patterns or indicators that historically preceded VWAP increases or decreases.
|
||||
Predict the Next Interval’s VWAP Movement:
|
||||
# def calculate_recency_weights(self, num_contexts: int) -> np.ndarray:
|
||||
# """Calculate exponential decay weights for contexts"""
|
||||
# decay_rate = 0.1 # Adjustable decay rate
|
||||
# positions = np.arange(num_contexts)
|
||||
# weights = np.exp(-decay_rate * (num_contexts - 1 - positions))
|
||||
# return weights / weights.sum() # Normalize weights
|
||||
|
||||
Determine if VWAP is likely to move up or down in the next 5-minute interval.
|
||||
Provide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.
|
||||
Estimate Movement Magnitude and Volatility:
|
||||
def create_vectorstore(self, texts: List[str]) -> None:
|
||||
"""Create vector store from texts"""
|
||||
logging.info(f"Creating vector store with {len(texts)} documents")
|
||||
try:
|
||||
# Create document objects
|
||||
documents = [Document(page_content=text) for text in texts]
|
||||
# Initialize vector store
|
||||
self.vectorstore = FAISS.from_documents(documents, self.embeddings)
|
||||
logging.info("Vector store created successfully")
|
||||
except Exception as e:
|
||||
logging.error(f"Vector store creation failed: {str(e)}")
|
||||
self.vectorstore = None
|
||||
|
||||
Predict the expected VWAP change (absolute or percentage).
|
||||
Assess short-term volatility, considering recent fluctuations and historical variance.
|
||||
Optimize Trade Execution and Risk Management:
|
||||
|
||||
Recommend ideal trade levels based on the prediction:
|
||||
Suggested Entry Price
|
||||
Suggested Stop-Loss Level
|
||||
Suggested Take-Profit Level
|
||||
Ensure these levels reflect realistic market conditions and risk-adjusted reward expectations.
|
||||
Identify Key Signals Used in Prediction:
|
||||
|
||||
Clearly list which features, patterns, or statistical relationships influenced the decision.
|
||||
Provide Justification for the Prediction:
|
||||
|
||||
Offer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.
|
||||
Output Format:
|
||||
Your response must be structured in strict JSON format as follows:
|
||||
|
||||
{
|
||||
"vwap_direction_next_5min": "up" or "down",
|
||||
"confidence_score": <float between 0.0 and 1.0>,
|
||||
"expected_vwap_change": <float (absolute or percentage)>,
|
||||
"volatility_estimate": <float (estimated short-term volatility)>,
|
||||
"suggested_entry": <float (price level)>,
|
||||
"suggested_stop_loss": <float (price level)>,
|
||||
"suggested_take_profit": <float (price level)>,
|
||||
"key_signals": ["list of relevant signals or indicators used"],
|
||||
"reasoning": "concise explanation of the logic behind your prediction and recommendations"
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
def calculate_recency_weights(self, num_contexts: int) -> np.ndarray:
|
||||
"""Calculate exponential decay weights for contexts"""
|
||||
decay_rate = 0.1 # Adjustable decay rate
|
||||
positions = np.arange(num_contexts)
|
||||
weights = np.exp(-decay_rate * (num_contexts - 1 - positions))
|
||||
return weights / weights.sum() # Normalize weights
|
||||
|
||||
def create_vectorstore(self, texts: List[str]):
|
||||
"""Create weighted vectorstore with recency bias"""
|
||||
weights = self.calculate_recency_weights(len(texts))
|
||||
|
||||
# Create metadata with weights
|
||||
metadatas = [
|
||||
{
|
||||
"index": i,
|
||||
"recency_weight": float(weights[i]) # Convert to float for JSON
|
||||
}
|
||||
for i in range(len(texts))
|
||||
]
|
||||
|
||||
self.vectorstore = FAISS.from_texts(
|
||||
texts, self.embeddings, metadatas=metadatas
|
||||
)
|
||||
def get_relevant_context(self, current_state: str, similarity_threshold: float = 0.1) -> str:
|
||||
if not self.vectorstore:
|
||||
logging.warning("No vectorstore available")
|
||||
return ""
|
||||
|
||||
try:
|
||||
docs_and_scores = self.vectorstore.similarity_search_with_score(
|
||||
current_state,
|
||||
k=3
|
||||
)
|
||||
|
||||
contexts = []
|
||||
for doc, score in docs_and_scores:
|
||||
logging.debug(f"Found context with score {score:.4f}")
|
||||
contexts.append(f"Similar context (score: {score:.4f}):\n{doc.page_content}")
|
||||
|
||||
return "\n===\n".join(contexts) if contexts else ""
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"Context search failed: {e}")
|
||||
return ""
|
||||
|
||||
async def predict(self, query: str, timestamp: pd.Timestamp) -> Optional[Dict]:
|
||||
try:
|
||||
similar_docs = self.vectorstore.similarity_search(
|
||||
query,
|
||||
k=5,
|
||||
search_kwargs={"score_threshold": 0.5}
|
||||
)
|
||||
|
||||
|
||||
# Build context string
|
||||
context = "\n".join([doc.page_content for doc in similar_docs])
|
||||
context = self.get_relevant_context(query)
|
||||
|
||||
|
||||
messages = [
|
||||
SystemMessage(content=self.system_prompt),
|
||||
|
||||
10
market_predictor/utils/formatting.py
Normal file
10
market_predictor/utils/formatting.py
Normal file
@ -0,0 +1,10 @@
|
||||
class FormatMixin:
|
||||
"""Utility mixin for safe value formatting"""
|
||||
|
||||
@staticmethod
|
||||
def _format_float(value: float, precision: int = 2) -> str:
|
||||
"""Safely format float values"""
|
||||
try:
|
||||
return f"{float(value):.{precision}f}"
|
||||
except (TypeError, ValueError):
|
||||
return "0.00"
|
||||
@ -1,20 +1,2 @@
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 0\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"up\", \"confidence_score\": 0.85, \"expected_vwap_change\": 0.05, \"volatility_estimate\": 0.02, \"suggested_entry\": 105162.55, \"suggested_stop_loss\": 104800.0, \"suggested_take_profit\": 105500.0, \"key_signals\": [\"Current Price above MA5 and MA20\", \"Consistent upward VWAP movement in historical context\", \"High volume with significant increase\", \"Positive price change\"], \"reasoning\": \"The current market state shows a strong upward trend with the current price above both MA5 and MA20, indicating bullish momentum. Historical windows with similar conditions have consistently shown upward VWAP movements. The significant increase in volume suggests strong market interest, supporting the likelihood of continued upward movement. The suggested trade levels are based on the current price, with a stop-loss set below recent support levels and a take-profit reflecting a reasonable risk-reward ratio.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 1\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"up\", \"confidence_score\": 0.75, \"expected_vwap_change\": 0.15, \"volatility_estimate\": 0.05, \"suggested_entry\": 105000.0, \"suggested_stop_loss\": 104600.0, \"suggested_take_profit\": 105500.0, \"key_signals\": [\"Current Price significantly above VWAP\", \"MA5 and MA20 trending upwards\", \"Price Change positive despite zero volume\"], \"reasoning\": \"The current price is significantly higher than the VWAP, indicating potential upward pressure. Both MA5 and MA20 are trending upwards, suggesting a bullish trend. Despite zero volume, the price change is positive, which historically has led to VWAP increases in similar contexts. The suggested trade levels are set to capture potential gains while managing risk, with a stop-loss below the current VWAP and a take-profit at a level reflecting recent price highs.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 3\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"up\", \"confidence_score\": 0.75, \"expected_vwap_change\": 0.12, \"volatility_estimate\": 0.15, \"suggested_entry\": 105500.0, \"suggested_stop_loss\": 105200.0, \"suggested_take_profit\": 106000.0, \"key_signals\": [\"Current VWAP above MA5 and MA20\", \"Consistent VWAP upward movement in historical context\", \"High volume indicating strong market interest\", \"Price above MA5 and MA20\"], \"reasoning\": \"The current VWAP is above both the MA5 and MA20, indicating a bullish trend. Historical windows show consistent VWAP increases following similar setups, with high volume supporting the trend. The price is also above both moving averages, reinforcing the upward momentum. Given these factors, a continued VWAP increase is likely, with a moderate confidence score due to the strong volume and historical patterns.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 4\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"up\", \"confidence_score\": 0.75, \"expected_vwap_change\": 0.5, \"volatility_estimate\": 0.3, \"suggested_entry\": 105700.0, \"suggested_stop_loss\": 105500.0, \"suggested_take_profit\": 106000.0, \"key_signals\": [\"Current Price significantly above VWAP\", \"MA5 and MA20 trending upwards\", \"Price Change positive despite zero volume\"], \"reasoning\": \"The current market state shows a significant increase in the current price compared to the VWAP, indicating potential upward pressure. The MA5 and MA20 are both trending upwards, suggesting a bullish trend. Despite the volume being zero, the price change is positive, which could imply latent buying interest. Historical patterns with similar setups have often led to an increase in VWAP. Therefore, the prediction is for an upward movement in VWAP with a moderate confidence score. The suggested trade levels are set to capture potential gains while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 0\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.05, \"volatility_estimate\": 0.03, \"suggested_entry\": 120.0, \"suggested_stop_loss\": 121.0, \"suggested_take_profit\": 119.5, \"key_signals\": [\"Consistent downward VWAP movement in historical windows\", \"Current VWAP significantly higher than current price\", \"High volume with increasing trend\", \"Price consistently below MA5 and MA20\"], \"reasoning\": \"The current market state shows a significant discrepancy between the VWAP and the current price, with the VWAP being much higher. This, combined with a consistent downward trend in VWAP across similar historical windows, suggests a continued downward movement. The high volume and its increasing trend further support this prediction, indicating strong selling pressure. The price is also consistently below both the MA5 and MA20, reinforcing the bearish outlook. Therefore, a downward VWAP movement is expected with a high confidence score. Suggested trade levels are set to capitalize on this expected movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 1\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.03, \"volatility_estimate\": 0.02, \"suggested_entry\": 120.0, \"suggested_stop_loss\": 120.5, \"suggested_take_profit\": 119.5, \"key_signals\": [\"Consistent downward VWAP movement in historical windows\", \"Current VWAP below MA5 and MA20\", \"High volume with decreasing VWAP\", \"Negative price change\"], \"reasoning\": \"The current market state shows a consistent pattern of VWAP decline, similar to historical windows where VWAP continued to decrease. The VWAP is below both MA5 and MA20, indicating a bearish trend. The high volume with a decreasing VWAP suggests selling pressure. These factors, combined with a negative price change, support a prediction of further VWAP decline. The suggested trade levels are set to capitalize on this expected movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 2\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.05, \"volatility_estimate\": 0.02, \"suggested_entry\": 119.5, \"suggested_stop_loss\": 120.0, \"suggested_take_profit\": 119.0, \"key_signals\": [\"Current Price below MA5 and MA20\", \"Consistent VWAP downtrend in historical context\", \"High volume with negative price change\", \"Previous VWAP movements consistently down\"], \"reasoning\": \"The current market state shows a significant drop in price with a high volume increase, indicating strong selling pressure. The VWAP has been consistently moving down in both the current and historical windows, suggesting a continuation of this trend. The current price is below both the MA5 and MA20, reinforcing the bearish outlook. Historical patterns show that similar conditions have led to further VWAP declines. Therefore, a downward movement in VWAP is expected with a high confidence score. The suggested trade levels are set to capitalize on the expected downward movement while managing risk effectively.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 3\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.05, \"volatility_estimate\": 0.02, \"suggested_entry\": 119.0, \"suggested_stop_loss\": 120.0, \"suggested_take_profit\": 118.5, \"key_signals\": [\"Current VWAP significantly higher than current price\", \"Consistent downward VWAP movement in historical context\", \"High volume with negative price change\", \"MA5 and MA20 both trending downwards\"], \"reasoning\": \"The current market state shows a significant gap between the VWAP and the current price, indicating potential downward pressure. Historical windows with similar VWAP and price discrepancies have shown continued VWAP declines. The high volume with a negative price change suggests selling pressure. Both MA5 and MA20 are trending downwards, reinforcing the likelihood of a continued VWAP decrease. The suggested trade levels are set to capitalize on the expected downward movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 4\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.05, \"volatility_estimate\": 0.02, \"suggested_entry\": 119.5, \"suggested_stop_loss\": 120.5, \"suggested_take_profit\": 118.5, \"key_signals\": [\"Current VWAP significantly higher than MA5 and MA20\", \"Consistent downward VWAP movement in historical context\", \"High volume with increasing trend\", \"Price consistently below VWAP\"], \"reasoning\": \"The current market state shows a VWAP significantly higher than both MA5 and MA20, indicating a potential overvaluation. Historical windows with similar VWAP and price relationships have consistently shown a downward VWAP movement. The current high volume, which is increasing, suggests strong selling pressure. The price is consistently below the VWAP, reinforcing the likelihood of a continued downward movement. Therefore, the prediction is for a downward VWAP movement with a high confidence score. Suggested trade levels are set to capitalize on this expected movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 0\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.02, \"volatility_estimate\": 0.03, \"suggested_entry\": 686.5, \"suggested_stop_loss\": 688.0, \"suggested_take_profit\": 684.5, \"key_signals\": [\"Current Price below MA5 and MA20\", \"Consistent VWAP downtrend\", \"Volume above Volume MA5\", \"Negative Price Change\"], \"reasoning\": \"The current market state shows a consistent downtrend in VWAP, with the current price below both MA5 and MA20, indicating bearish momentum. The volume is above its 5-interval moving average, suggesting increased selling pressure. Historical patterns with similar setups have typically resulted in further VWAP declines. Therefore, a downward movement in VWAP is expected with a high confidence score. The suggested trade levels are set to capitalize on the expected decline while managing risk appropriately.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 1\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.02, \"volatility_estimate\": 0.03, \"suggested_entry\": 685.5, \"suggested_stop_loss\": 688.0, \"suggested_take_profit\": 683.0, \"key_signals\": [\"Consistent downward VWAP movement in historical context\", \"Current VWAP significantly higher than current price\", \"Increased volume with decreasing price\", \"MA5 and MA20 both trending downwards\"], \"reasoning\": \"The current market state shows a consistent pattern of VWAP decreasing over the past intervals, with the current VWAP significantly higher than the current price, indicating potential for further decline. The increased volume with a decreasing price suggests selling pressure. Historical windows with similar conditions also showed continued VWAP decline. Therefore, a downward movement in VWAP is predicted with high confidence. The suggested trade levels are set to capitalize on the expected decline while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 2\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.02, \"volatility_estimate\": 0.03, \"suggested_entry\": 686.5, \"suggested_stop_loss\": 688.0, \"suggested_take_profit\": 684.5, \"key_signals\": [\"Consistent downward VWAP movement in historical context\", \"Current VWAP is above the current price\", \"High volume with decreasing VWAP\", \"MA5 and MA20 are both above the current price\"], \"reasoning\": \"The historical context shows a consistent pattern of VWAP decreasing in similar market conditions, with the current VWAP above the current price indicating potential further downward movement. The high volume suggests significant market activity, but the VWAP continues to trend downwards, aligning with the historical pattern. The moving averages (MA5 and MA20) being above the current price further support the likelihood of a downward VWAP movement. The suggested trade levels are set to capitalize on the expected downward movement while managing risk with a stop-loss slightly above the current price and a take-profit level that reflects the expected VWAP change.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 3\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.85, \"expected_vwap_change\": -0.02, \"volatility_estimate\": 0.03, \"suggested_entry\": 687.0, \"suggested_stop_loss\": 690.0, \"suggested_take_profit\": 684.5, \"key_signals\": [\"Consistent downward VWAP movement in historical context\", \"Current VWAP significantly higher than current price\", \"High volume with slight price increase\", \"MA5 and MA20 both trending downwards\"], \"reasoning\": \"The historical context shows a consistent pattern of VWAP decreasing in similar market conditions, with the current VWAP significantly higher than the current price, indicating potential for further decline. The high volume with only a slight price increase suggests selling pressure. Both MA5 and MA20 are trending downwards, reinforcing the likelihood of a continued VWAP decrease. The suggested trade levels are set to capitalize on the expected downward movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 4\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.02, \"volatility_estimate\": 0.03, \"suggested_entry\": 688.0, \"suggested_stop_loss\": 690.0, \"suggested_take_profit\": 685.5, \"key_signals\": [\"Consistent downward VWAP movement in historical windows\", \"Current VWAP is higher than current price\", \"Volume decrease compared to Volume MA5\", \"Price below MA5 and MA20\"], \"reasoning\": \"The historical context shows a consistent pattern of VWAP decreasing in similar market conditions, with the current VWAP higher than the current price, indicating potential for further decline. The volume is decreasing compared to its 5-interval moving average, suggesting weakening buying pressure. The price is also below both MA5 and MA20, reinforcing a bearish outlook. Therefore, a downward VWAP movement is predicted with a confidence score of 0.75. Suggested trade levels are set to capitalize on the expected decline while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 0\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.05, \"volatility_estimate\": 0.02, \"suggested_entry\": 129.85, \"suggested_stop_loss\": 130.1, \"suggested_take_profit\": 129.6, \"key_signals\": [\"Consistent VWAP decline in historical context\", \"Current VWAP below MA5 and MA20\", \"Price consistently below VWAP\", \"No volume indicating lack of buying pressure\"], \"reasoning\": \"The VWAP has consistently been moving down in the historical context windows, and the current VWAP is below both the MA5 and MA20, indicating a bearish trend. The price is consistently below the VWAP, and there is no volume, suggesting a lack of buying pressure. These factors, combined with the historical pattern of VWAP decline, suggest a continued downward movement in the next interval. The suggested trade levels are set to capitalize on this expected movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 1\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.05, \"volatility_estimate\": 0.02, \"suggested_entry\": 130.5, \"suggested_stop_loss\": 131.0, \"suggested_take_profit\": 130.0, \"key_signals\": [\"Current VWAP significantly higher than MA5 and MA20\", \"Recent VWAP movement trend is downward\", \"Volume is significantly higher than Volume MA5\", \"Price is below VWAP\"], \"reasoning\": \"The current VWAP is significantly higher than both the MA5 and MA20, indicating a potential overvaluation in the short term. The recent trend shows a downward movement in VWAP, and the current price is below the VWAP, suggesting further downward pressure. The volume is significantly higher than the Volume MA5, which could indicate a potential reversal, but given the downward VWAP trend and the price being below VWAP, a further decrease is more likely. The suggested trade levels are set to capitalize on this expected movement while managing risk with a stop-loss slightly above the current price and a take-profit at a level reflecting the expected VWAP decrease.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 2\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.1, \"volatility_estimate\": 0.05, \"suggested_entry\": 130.8, \"suggested_stop_loss\": 131.5, \"suggested_take_profit\": 130.2, \"key_signals\": [\"Current VWAP below MA5 and MA20\", \"Consistent VWAP downtrend in historical windows\", \"High volume with decreasing VWAP\", \"Price below VWAP\"], \"reasoning\": \"The current VWAP is below both the MA5 and MA20, indicating a bearish trend. Historical windows with similar VWAP and price patterns showed a continuation of the downtrend. The high volume with a decreasing VWAP suggests selling pressure. The price is also below the VWAP, reinforcing the likelihood of a downward movement. Therefore, a short position is recommended with a suggested entry at 130.80, a stop-loss at 131.50 to manage risk, and a take-profit at 130.20 to capitalize on the expected VWAP decline.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 3\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.03, \"volatility_estimate\": 0.02, \"suggested_entry\": 130.5, \"suggested_stop_loss\": 131.0, \"suggested_take_profit\": 130.0, \"key_signals\": [\"Current VWAP below MA5 and MA20\", \"Consistent downward VWAP movement in historical windows\", \"Decreasing volume trend\", \"Price below VWAP\"], \"reasoning\": \"The current VWAP is below both the MA5 and MA20, indicating a bearish trend. Historical windows with similar VWAP and price movements have shown a continuation of the downward trend. The volume is decreasing, which suggests a lack of buying pressure to reverse the trend. The price is also below the VWAP, reinforcing the likelihood of a continued downward movement. Based on these signals, a short position is recommended with a suggested entry at 130.50, a stop-loss at 131.00 to manage risk, and a take-profit at 130.00 to capitalize on the expected VWAP decline.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 4\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.3, \"volatility_estimate\": 0.15, \"suggested_entry\": 130.6, \"suggested_stop_loss\": 131.0, \"suggested_take_profit\": 130.3, \"key_signals\": [\"Consistent VWAP decline in historical windows\", \"Current VWAP below MA5 and MA20\", \"Zero volume indicating lack of buying pressure\", \"Negative price change trend\"], \"reasoning\": \"The current market state shows a consistent decline in VWAP with zero volume, indicating a lack of buying pressure. Historical windows with similar VWAP and price trends also showed continued VWAP decline. The VWAP is below both MA5 and MA20, reinforcing the downward trend. Given these factors, a further VWAP decline is expected with moderate confidence. Suggested trade levels are set to capture the expected movement while managing risk.\"}"}]}
|
||||
{"messages": [{"role": "system", "content": "\nYou are tasked with predicting the VWAP movement for the next 5-minute interval based on historical and current market data. Your goal is to maximize predictive accuracy, estimate the magnitude of movement, assess volatility, and provide actionable trading insights.\n\nInput Data:\nHistorical Context Windows:\n\nThese represent the top 5 most similar past market windows, selected based on their resemblance to the current market window.\nEach historical window consists of a variable number of 5-minute intervals leading up to but not including the current window.\nThe length of each window is flexible, meaning the amount of time covered varies.\nThese historical windows help identify patterns that preceded previous VWAP movements.\nCurrent Window:\n\nA dynamically sized collection of recent 5-minute intervals, with the latest interval being the most recent market data available.\nThe next interval (immediately following the latest one) is what you need to predict.\nAvailable market metrics for the latest interval include:\nPrice (Current)\nVWAP (Current)\nVolume\nMA5 (5-interval moving average)\nMA20 (20-interval moving average)\nVolume MA5 (5-interval volume moving average)\nPrice Change from Previous 5-Minute Interval\nVolume Change from Previous 5-Minute Interval\nVWAP Change from Previous 5-Minute Interval\nYour Tasks:\nAnalyze the Current Window:\n\nExtract key trends, anomalies, or signals from the most recent market data.\nCompare Against Historical Context:\n\nIdentify how similar historical windows evolved after reaching a state comparable to the current window.\nDetect patterns or indicators that historically preceded VWAP increases or decreases.\nPredict the Next Interval\u2019s VWAP Movement:\n\nDetermine if VWAP is likely to move up or down in the next 5-minute interval.\nProvide a confidence score (0.0 to 1.0) reflecting the probability of correctness based on historical precedent and current conditions.\nEstimate Movement Magnitude and Volatility:\n\nPredict the expected VWAP change (absolute or percentage).\nAssess short-term volatility, considering recent fluctuations and historical variance.\nOptimize Trade Execution and Risk Management:\n\nRecommend ideal trade levels based on the prediction:\nSuggested Entry Price\nSuggested Stop-Loss Level\nSuggested Take-Profit Level\nEnsure these levels reflect realistic market conditions and risk-adjusted reward expectations.\nIdentify Key Signals Used in Prediction:\n\nClearly list which features, patterns, or statistical relationships influenced the decision.\nProvide Justification for the Prediction:\n\nOffer a concise, data-driven reasoning explaining why the prediction was made, how historical patterns support it, and why the suggested trade levels are optimal.\nOutput Format:\nYour response must be structured in strict JSON format as follows:\n\n{\n \"vwap_direction_next_5min\": \"up\" or \"down\",\n \"confidence_score\": <float between 0.0 and 1.0>,\n \"expected_vwap_change\": <float (absolute or percentage)>,\n \"volatility_estimate\": <float (estimated short-term volatility)>,\n \"suggested_entry\": <float (price level)>,\n \"suggested_stop_loss\": <float (price level)>,\n \"suggested_take_profit\": <float (price level)>,\n \"key_signals\": [\"list of relevant signals or indicators used\"],\n \"reasoning\": \"concise explanation of the logic behind your prediction and recommendations\"\n}\n\n"}, {"role": "user", "content": "Current Market State:\nCurrent Price: 0.00\nVWAP: 0.00\nVolume: 0\nMA5: 0.00\nMA20: 0.00\nVolume MA5: 0.00\nPrice Change: 0.00%\nVolume Change: 0.00%\nPrevious VWAP Movement: none\nTime: 5\n"}, {"role": "assistant", "content": "{\"vwap_direction_next_5min\": \"down\", \"confidence_score\": 0.75, \"expected_vwap_change\": -0.03, \"volatility_estimate\": 0.02, \"suggested_entry\": 130.8, \"suggested_stop_loss\": 131.1, \"suggested_take_profit\": 130.5, \"key_signals\": [\"Current VWAP below MA5 and MA20\", \"Consistent downward VWAP movement in historical context\", \"Low volume compared to Volume MA5\", \"Price below VWAP\"], \"reasoning\": \"The current VWAP is below both the MA5 and MA20, indicating a bearish trend. Historical context shows consistent downward VWAP movements in similar conditions. The current volume is significantly lower than the Volume MA5, suggesting weak buying pressure. Additionally, the price is below the VWAP, reinforcing the likelihood of a continued downward movement. Based on these signals, a downward VWAP movement is predicted with a confidence score of 0.75. Suggested trade levels are set to optimize risk-reward based on expected volatility and historical patterns.\"}"}]}
|
||||
{"vwap_direction_next_5min": "up", "confidence_score": 0.75, "expected_vwap_change": 0.02, "volatility_estimate": 0.03, "suggested_entry": 105700.0, "suggested_stop_loss": 105500.0, "suggested_take_profit": 105900.0, "key_signals": ["Current Price above VWAP", "MA5 and MA20 trending upwards", "High volume with price increase", "Previous VWAP movements mostly up"], "reasoning": "The current market state shows a significant increase in volume with a corresponding increase in price, indicating strong buying pressure. The VWAP has been trending upwards in the previous intervals, and the MA5 and MA20 are also showing upward trends. These factors suggest a continuation of the upward VWAP movement. The suggested trade levels are set to capitalize on this expected movement while managing risk.", "timestamp_prediction": "2025-01-31T15:45:00+00:00", "actual_movement": "up", "predicted_movement": "up"}
|
||||
{"vwap_direction_next_5min": "up", "confidence_score": 0.75, "expected_vwap_change": 0.05, "volatility_estimate": 0.03, "suggested_entry": 3406.0, "suggested_stop_loss": 3400.0, "suggested_take_profit": 3412.0, "key_signals": ["Current Price above VWAP", "MA5 and MA20 trending upwards", "Consistent VWAP increase in historical context", "High volume with price increase"], "reasoning": "The current market state shows a consistent upward trend in VWAP with a significant increase in volume, indicating strong buying pressure. The current price is above the VWAP, and both MA5 and MA20 are trending upwards, suggesting a bullish momentum. Historical context shows similar patterns with VWAP continuing to rise. Therefore, a further increase in VWAP is expected with a moderate confidence score. Suggested trade levels are set to capitalize on the expected upward movement while managing risk.", "timestamp_prediction": "2025-01-31T15:50:00+00:00", "actual_movement": "up", "predicted_movement": "up"}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user