Initial commit
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Rolling Window Market Movement Analysis\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Fetched 316 rows of data.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import sys\n",
|
||||
"sys.path.append('../')\n",
|
||||
"import asyncio\n",
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import seaborn as sns\n",
|
||||
"from datetime import datetime, timedelta\n",
|
||||
"from IPython.display import display\n",
|
||||
"from tqdm.notebook import tqdm\n",
|
||||
"\n",
|
||||
"from market_predictor.market_data_fetcher import MarketDataFetcher\n",
|
||||
"from market_predictor.data_processor import MarketDataProcessor\n",
|
||||
"from market_predictor.rag_engine import RAGEngine\n",
|
||||
"from market_predictor.performance_metrics import PerformanceMetrics\n",
|
||||
"from market_predictor.prediction_service import PredictionService\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"symbol = \"BTC-USD\"\n",
|
||||
"end_date = datetime.now()\n",
|
||||
"start_date = end_date - timedelta(days=5)\n",
|
||||
"fetcher = MarketDataFetcher(symbol)\n",
|
||||
"market_data = fetcher.fetch_data(\n",
|
||||
" start_date=start_date.strftime('%Y-%m-%d'),\n",
|
||||
" end_date=end_date.strftime('%Y-%m-%d'),\n",
|
||||
" interval='5m'\n",
|
||||
")\n",
|
||||
"print(f\"Fetched {len(market_data)} rows of data.\")\n",
|
||||
"\n",
|
||||
"rag_engine = RAGEngine()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Define Rolling Window Prediction Functions"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Processing: 58%|████████████████▉ | 142/244 [10:00<18:10, 10.69s/it]"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import asyncio\n",
|
||||
"import pandas as pd\n",
|
||||
"from tqdm import tqdm\n",
|
||||
"import nest_asyncio\n",
|
||||
"\n",
|
||||
"# Enable nested event loops\n",
|
||||
"nest_asyncio.apply()\n",
|
||||
"\n",
|
||||
"async def analyze_market_data(\n",
|
||||
" market_data: pd.DataFrame,\n",
|
||||
" training_window_size: int = 36,\n",
|
||||
" inference_window_size: int = 12,\n",
|
||||
" inference_offset: int = 0\n",
|
||||
") -> pd.DataFrame:\n",
|
||||
" processor = MarketDataProcessor(market_data)\n",
|
||||
" processed_data = processor.df\n",
|
||||
" \n",
|
||||
" service = PredictionService(\n",
|
||||
" market_data=processed_data,\n",
|
||||
" training_window_size=training_window_size,\n",
|
||||
" inference_window_size=inference_window_size,\n",
|
||||
" inference_offset=inference_offset\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
" total_size = training_window_size + inference_offset + inference_window_size\n",
|
||||
" total_windows = len(processed_data) - total_size\n",
|
||||
" \n",
|
||||
" predictions = []\n",
|
||||
" with tqdm(total=total_windows, desc=\"Processing\", ncols=80) as pbar:\n",
|
||||
" async for pred in service.generate_rolling_predictions():\n",
|
||||
" if pred:\n",
|
||||
" # print(pred)\n",
|
||||
" predictions.append(pred)\n",
|
||||
" pbar.update(1)\n",
|
||||
" \n",
|
||||
" return pd.DataFrame(predictions) if predictions else pd.DataFrame()\n",
|
||||
"\n",
|
||||
"# Run analysis\n",
|
||||
"try:\n",
|
||||
" predictions_df = await analyze_market_data(\n",
|
||||
" market_data,\n",
|
||||
" training_window_size=60,\n",
|
||||
" inference_window_size=12,\n",
|
||||
" inference_offset=0\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
" if not predictions_df.empty:\n",
|
||||
" metrics = PerformanceMetrics(predictions_df, market_data)\n",
|
||||
" report = metrics.generate_report()\n",
|
||||
" print(\"\\nPerformance Report:\")\n",
|
||||
" print(report)\n",
|
||||
" \n",
|
||||
" print(\"\\nPredictions Summary:\")\n",
|
||||
" print(predictions_df.head())\n",
|
||||
" else:\n",
|
||||
" print(\"No predictions generated\")\n",
|
||||
" \n",
|
||||
"except Exception as e:\n",
|
||||
" print(f\"Analysis failed: {str(e)}\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "DeepSeek Playground (Poetry)",
|
||||
"language": "python",
|
||||
"name": "deepseek_playground"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.12.8"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 4
|
||||
}
|
||||
Reference in New Issue
Block a user