Reinforcement Learning
Flair
medical
music
legal
code
chemistry
File size: 1,243 Bytes
354a78a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def f(z):
    c = 0.1
    n = 2
    return c * abs(z)**n * (np.cos(n * np.angle(z)) + 1j * np.sin(n * np.angle(z)))

def buy_signal(data):
    if f(data['Close'].iloc[-1]) > 0:
        return True
    else:
        return False

def sell_signal(data):
    if f(data['Close'].iloc[-1]) < 0:
        return True
    else:
        return False

def trade(data):
    bought = False
    for i in range(len(data)):
        if buy_signal(data.iloc[i:i+1]):
            if not bought:
                bought = True
                data.loc[i, 'Action'] = 'Buy'
        elif sell_signal(data.iloc[i:i+1]):
            if bought:
                bought = False
                data.loc[i, 'Action'] = 'Sell'

def backtest(data):
    trade(data)
    data['Return'] = data['Close'].pct_change()
    data['Strategy Return'] = data['Action'].shift(1) * data['Return']
    strategy_return = data['Strategy Return'].sum()
    print(f"Strategy Return: {strategy_return}")

# Load data
data = pd.read_csv('data.csv', index_col='Date', parse_dates=True)

# Backtest strategy
backtest(data)

# Plot results
plt.plot(data['Close'])
plt.plot(data['Strategy Return'] + data['Close'])
plt.show()