Get in touch with Limex team!
import pandas as pd
token = 'WFU9EF92HF' # set token
symbol = 'AMZN' # set asset
boostedsignals = pd.read_json('https://hub.limex.com/v1/signals?vendor=boosted&token='+token+'&model=50678d2d-fd0f-4841-aaee-7feac83cb3a1&from=2022-01-01') #download signals
b_signal = boostedsignals[boostedsignals['symbol']==symbol]
stock_data=pd.read_json('https://hub.limex.com/v1/candles?symbol='+symbol+'&token='+token+'&from=2022-01-01')
stock_data['trade_date'] = pd.to_datetime(stock_data['ts'], utc=True).dt.date
result_df = pd.merge(stock_data, b_signal,on='trade_date' ,how='inner')
result_df['Future_Return'] = result_df['c'].pct_change(1) * 100
result_df['pnl'] = result_df['Future_Return'] * result_df['allocation']
pnl = result_df.groupby('trade_date')['pnl'].mean().cumsum()
pnl
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
token := "WFU9EF92HF" // set token
symbol := "AMZN" // set asset
apiURL := fmt.Sprintf("https://hub.limex.com/v1/news?symbol=%s&token=%s&from=2023-10-01", symbol, token)
// Make HTTP request
response, err := http.Get(apiURL)
if err != nil {
fmt.Println("Error making HTTP request:", err)
return
}
defer response.Body.Close()
// Read response body
body, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println("Error reading response body:", err)
return
}
// Parse JSON
var news []interface{}
err = json.Unmarshal(body, &news)
if err != nil {
fmt.Println("Error parsing JSON:", err)
return
}
// Display the first two elements
for i := 0; i < 2 && i < len(news); i++ {
fmt.Println(news[i])
}
}
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class NewsDownloader {
public static void main(String[] args) {
String token = "WFU9EF92HF"; // set token
String symbol = "AMZN"; // set asset
try {
// Download news
String apiUrl = "https://hub.limex.com/v1/news?symbol=" + symbol + "&token=" + token + "&from=2023-10-01";
String jsonResponse = makeHttpRequest(apiUrl);
// Parse JSON response
ObjectMapper objectMapper = new ObjectMapper();
JsonNode newsNode = objectMapper.readTree(jsonResponse);
// Display the first two elements
for (int i = 0; i < 2 && i < newsNode.size(); i++) {
System.out.println(newsNode.get(i));
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String makeHttpRequest(String apiUrl) throws IOException {
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
} else {
throw new IOException("HTTP request failed with response code: " + responseCode);
}
}
}
library(jsonlite)
library(data.table)
token = 'WFU9EF92HF' # set token
symbol = 'AMZN' # set asset
# download boosted signals and transform
boostedsignals = (fromJSON(paste0('https://hub.limex.com/v1/signals?vendor=boosted&token=',token,'&model=50678d2d-fd0f-4841-aaee-7feac83cb3a1&from=2022-01-01')))
boostedsignals = data.table(boostedsignals)
boostedsignals[,trade_date:=as.Date(trade_date)]
# download ohlcv data
stock_data=fromJSON(paste0('https://hub.limex.com/v1/candles?symbol=',symbol,'&token=',token,'&from=2022-01-01'))
stock_data$trade_date = as.Date(stock_data$ts)
stock_data$symbol = symbol
stock_data = data.table(stock_data)
# merge this data
total_data = merge(boostedsignals,stock_data,by=c('symbol','trade_date'))
total_data[,ret:=shift(c,-1)/c-1]
total_data[,pnl:=ret*allocation/max(allocation)]
plot(cumprod(total_data$pnl+1)-1,type='l')
grid()