def __init__(self, sec_id: str = 'AAPL'): self.sec_id = sec_id self.sf_data_client = DataAPI(which_API = 'SimFin') self.yh_data_client = DataAPI(which_API = 'yahoo') self.period = 'annual' self.market = 'us' self.IS_revenue = None
def Implement_RSI(self, sec_id='AAPL', qty=10, period=14, start_date="2018-10-30"): # Get real time data from Interactive Broker user1 = DataAPI() df = user1.yahoo_pricing_data(sec_id, start_date=start_date) # Check the signal # -- sma -- BT_user1 = Backtesting(df) df = BT_user1.RSI_single_stock(period=14) print('signal: {}'.format(df.loc[df.shape[0] - 1, 'signal'])) # check the most recent signal if df.loc[df.shape[0] - 1, 'signal'] == 'buy': self.submit_buy_order(sec_id, qty) self.Email_client.send_buy_notification(self.email_add, sec_id) elif df.loc[df.shape[0] - 1, 'signal'] == 'sell': self.submit_sell_order(sec_id, qty) self.Email_client.send_sell_notification(self.email_add, sec_id)
from data import DataAPI from backtesting import Backtesting from Visualization import Visualization import pandas as pd import matplotlib.pyplot as plt # user_yf = DataAPI('yahoo') # df = user_yf.yahoo_pricing_data() # print(df) user1 = DataAPI("SimFin") # df_income = user1.SF_income_statement() # print('Income statement') # print(df_income) # df_bs = user1.SF_balance_sheet() # print('balancesheet statement') # print(df_bs) # df_cf = user1.SF_cashflow_statment() # print('cashflow statement') # print(df_cf) #// test sma_backtesting single # df = user1.SF_pricing_data(start_date='2016-01-01') # # df = user1.SF_daily_pricing_data_from_local()
from data import DataAPI from backtesting import Backtesting from Visualization import Visualization import pandas as pd import matplotlib.pyplot as plt user1 = DataAPI("yahoo") df = user1.yahoo_pricing_data('AAPL', start_date= "2015-10-30") # -- sma -- # bt1 = Backtesting(df) # df1 = bt1.backtesting_sma_single_stock(sma_short=5, sma_long=30) # v1 = Visualize(df1) # v1.sma_plot_result() # -- rsi -- # bt1 = Backtesting(df) # df1 = bt1.RSI_single_stock(period= 28) # v1 = Visualize(df1) # v1.sma_plot_result() # path = r'D:\K\HU\HU - Courses\CISC 695 Research Methodology and Writing\Assignments\sample_data\rsi_aapl_data.csv' # df1.to_csv(path) #// test sma_backtesting bulk
def test_SF_daily_pricing_data(self): usr = DataAPI(which_API='SimFin', token ='free') result = usr.SF_pricing_data('AAPL', period='Daily', market = 'us', start_date='2018-01-01', end_date= '2020-10-30') self.assertIsInstance(result, pd.DataFrame)
def test_yahoo_pricing_data(self): usr = DataAPI(which_API='yahoo') result = usr.yahoo_pricing_data('AAPL', start_date='2018-01-01', end_date= '2020-10-30') self.assertIsInstance(result, pd.DataFrame)
def test_SF_cashflow_statment(self): usr = DataAPI(which_API='SimFin', token ='free') result = usr.SF_cashflow_statment('AAPL', period='quarterly', market = 'us') self.assertIsInstance(result, pd.DataFrame)
from data import DataAPI from backtesting import Backtesting from Visualization import Visualize import pandas as pd import matplotlib.pyplot as plt user1 = DataAPI("IEX", IEX_token) # path_aapl2y = r'D:\K\HU\HU - Courses\CISC 695 Research Methodology and Writing\Assignments\sample_data\aapl2y.csv' # df = pd.read_csv(path_aapl2y) # df = pd.read_csv(path_aapl2y) df = user1.IEX_daily_pricing_data('AAPL', '2y') bt1 = Backtesting(df) df1 = bt1.RSI_single_stock(notification=False) v1 = Visualize(df1) v1.sma_plot_result() # df2 = bt1.sma_backteting_bulk() # print(df2)