|
---
|
|
license: llama3.3
|
|
datasets:
|
|
- HuggingFaceTB/finemath
|
|
base_model:
|
|
- Datou1111/shou_xin
|
|
---
|
|
from llama_index import SimpleKeywordTableIndex, Document |
|
from datetime import datetime, timedelta |
|
import requests |
|
import numpy as np |
|
import pandas as pd |
|
|
|
# Fetch historical price data |
|
def fetch_price_data(symbol="ETHUSDT", interval="1h", limit=500): |
|
""" |
|
Fetch historical price data from Binance API. |
|
""" |
|
url = f"https://api.binance.com/api/v3/klines?symbol={symbol}&interval={interval}&limit={limit}" |
|
response = requests.get(url) |
|
data = response.json() |
|
|
|
# Parse to DataFrame |
|
df = pd.DataFrame(data, columns=[ |
|
"timestamp", "open", "high", "low", "close", "volume", "close_time", |
|
"quote_asset_volume", "number_of_trades", "taker_buy_base", |
|
"taker_buy_quote", "ignore" |
|
]) |
|
df["timestamp"] = pd.to_datetime(df["timestamp"], unit="ms") |
|
df["close"] = df["close"].astype(float) |
|
return df[["timestamp", "close"]] |
|
|
|
# Prepare price history as documents |
|
def prepare_documents(df, window_size=5): |
|
""" |
|
Convert sliding price windows into Llama documents. |
|
""" |
|
prices = df["close"].values |
|
timestamps = df["timestamp"].values |
|
|
|
documents = [] |
|
for i in range(len(prices) - window_size): |
|
time_range = f"{timestamps[i]} to {timestamps[i + window_size]}" |
|
price_window = prices[i:i + window_size] |
|
content = f"Price trend from {time_range}: {price_window.tolist()}" |
|
documents.append(Document(content)) |
|
return documents |
|
|
|
# LlamaIndex-based predictive task |
|
def train_with_llama_index(documents): |
|
""" |
|
Create a Simple Keyword Table Index to simulate trend prediction using LlamaIndex. |
|
""" |
|
index = SimpleKeywordTableIndex.from_documents(documents) |
|
|
|
# Simulating a market prediction |
|
prompt = ( |
|
"Based on historical trends, what might be the next ETH/USDT price, " |
|
"assuming consistent linear progression? Focus on patterns." |
|
) |
|
response = index.query(prompt) |
|
return response |
|
|
|
# Main pipeline |
|
def main(): |
|
# Step 1: Fetch historical data |
|
symbol = "ETHUSDT" |
|
df = fetch_price_data(symbol) |
|
print("Fetched historical data:") |
|
print(df.head()) |
|
|
|
# Step 2: Prepare documents for LlamaIndex |
|
window_size = 5 |
|
documents = prepare_documents(df, window_size) |
|
|
|
# Step 3: Train a Simple Keyword Table Index and predict trends |
|
prediction_response = train_with_llama_index(documents) |
|
|
|
# Step 4: Display response |
|
print(f"\nPrediction response from LlamaIndex:\n{prediction_response}") |
|
|
|
# Entry point |
|
if __name__ == "__main__": |
|
main() |