Setup and Run anfederico/Clairvoyant for social/historical cues for short term stock movement

Setup and Run anfederico/Clairvoyant for social/historical cues for short term stock movement

A git project I have been very much interested in at the moment is a way of machine learning Stock Predicitons. Here are my findings.

Step 1

$git clone $https://github.com/anfederico/Clairvoyant.git BackTest
$cd BackTest/
$pip install clairvoyant
$python setup.py
cd clairvoyant/
$python __init__.py
$pip install -r requirements.txt 
cd clairvoyant/
pip install nsepy

Step 2

Create a folder Tests in BackTest/clairvoyant.

Step 3

You can get Stock Codes for this example from NSE, I'm using RELIANCE. Create a file called RELIANCE.py and add the following.
from clairvoyant import Backtest
from pandas import read_csv
from nsepy import get_history
from datetime import date

# Testing performance on a single stock

variables  = ["Open", "Close", "High", "Low", "Volume"]     # Financial indicators of choice # "SSO", "SSC"
trainStart = '2013-02-01'       # Start of training period
trainEnd   = '2015-07-15'       # End of training period
testStart  = '2015-07-16'       # Start of testing period
testEnd    = '2016-07-16'       # End of testing period
buyThreshold  = 0.1            # Confidence threshold for predicting buy (default = 0.65)
sellThreshold = 0.1            # Confidence threshold for predicting sell (default = 0.65)
C = 1                           # Penalty parameter (default = 1)
gamma = 10                      # Kernel coefficient (default = 10)
continuedTraining = False       # Continue training during testing period? (default = false)
history = get_history(symbol="RELIANCE",
                      start=date(2013, 1, 1),
                      end=date(2017, 1, 1),
                      index=False)
history[['Open','High','Low','Close','Volume','Close']].to_csv("RELIANCE.csv")
backtest = Backtest(variables, trainStart, trainEnd, testStart, testEnd, buyThreshold = 0.1, sellThreshold = 0.1)
data = read_csv("RELIANCE.csv")      # Read in data
data = data.round(3)                    # Round all values
backtest.stocks.append("RELIANCE")          # Inform the model which stock is being tested
for i in range(0,10):                   # Run the model 10-15 times
    backtest.runModel(data)
backtest.displayConditions()
backtest.displayStats()

Step 5

$ python RELIANCE.py 
Conditions
X1: Open
X2: Close
X3: High
X4: Low
X5: Volume
Buy Threshold: 10.0%
Sell Threshold: 10.0%
C: 1
gamma: 10
Continued Training: False
Stats
Stock(s):
RELIANCE | Training: 02/01/2013-07/15/2015 Testing: 07/16/2015-07/15/2016

Total Buys: 2460
Buy Accuracy: 50.81%
Total Sells: 0
Sell Accuracy: 0.0%

Notes

How to remove the single quote from in front of the number Libre Office

Download the sample data as a CSV from Yahoo Data In Libre Office convert the date column to the Format US MM/DD/YYYY Highlight the column and then click Data->Text to Columns.

Categories: Posts