def test_1(self): """ Loads solution from csv file and test the values Tests ----- 1. Name of the solution Series: cash, equities, portfolio 2. Values of the solution Series: cash, equities, portfolio """ # Set up self.setUpDataAccess() self_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) tests = ["Test_1.csv"] tests = [os.path.join(self_dir, "docs", test) for test in tests] orders = ["orders_1.csv"] orders = [os.path.join(self_dir, "docs", order) for order in orders] for test_file, order in zip(tests, orders): solution = pd.read_csv(test_file) solution = solution.set_index(pd.to_datetime(solution["Date"])) simulator = MarketSimulator() simulator.initial_cash = 1000000 simulator.load_trades(order) simulator.simulate() # Test 1 self.assertEqual(simulator.cash.name, "Cash") self.assertEqual(simulator.equities.name, "Equities value") self.assertEqual(simulator.portfolio.name, "Portfolio value") # Test 2 self.assertEqual(simulator.cash, solution["Cash"]) self.assertEqual(simulator.equities, solution["Equities value"]) self.assertEqual(simulator.portfolio, solution["Portfolio value"])
def test_total_return(self): sim = MarketSimulator('./data') sim.initial_cash = 1000000 sim.simulate("../../sim/test/orders.csv") # Test without giving the column tr1 = BasicUtils.total_return(sim.portfolio) self.assertEquals(tr1, 0.1332629999999999) # Test giving the column we want to calculate tr2 = BasicUtils.total_return(sim.portfolio, 'Portfolio') self.assertEquals(tr2, 0.1332629999999999)
def test_sharpe_ratio(self): sim = MarketSimulator('./data') sim.initial_cash = 1000000 sim.simulate("../../sim/test/orders.csv") # Test without giving the column sr1 = BasicUtils.sharpe_ratio(sim.portfolio, extraAnswers=True) self.assertEquals(sr1['sharpe_ratio'], 1.1825359272456812) self.assertEquals(sr1['std'], 0.0071658104790118396) self.assertEquals(sr1['mean'], 0.00054698326727656884) # Test giving the column we want to calculate sr2 = BasicUtils.sharpe_ratio(sim.portfolio, 'Portfolio', extraAnswers=True) self.assertEquals(sr2['sharpe_ratio'], 1.1825359272456812) self.assertEquals(sr2['std'], 0.0071658104790118396) self.assertEquals(sr2['mean'], 0.00054698326727656884)
def test_1(self): ''' Loads solution from csv file and test the values Tests ----- 1. Name of the solution Series: cash, equities, portfolio 2. Values of the solution Series: cash, equities, portfolio ''' # Set up self.setUpDataAccess() self_dir = os.path.dirname( os.path.abspath(inspect.getfile(inspect.currentframe()))) tests = ['Test_1.csv'] tests = [os.path.join(self_dir, 'docs', test) for test in tests] orders = ['orders_1.csv'] orders = [os.path.join(self_dir, 'docs', order) for order in orders] for test_file, order in zip(tests, orders): solution = pd.read_csv(test_file) solution = solution.set_index(pd.to_datetime(solution['Date'])) simulator = MarketSimulator() simulator.initial_cash = 1000000 simulator.load_trades(order) simulator.simulate() # Test 1 self.assertEqual(simulator.cash.name, 'Cash') self.assertEqual(simulator.equities.name, 'Equities value') self.assertEqual(simulator.portfolio.name, 'Portfolio value') # Test 2 self.assertEqual(simulator.cash, solution['Cash']) self.assertEqual(simulator.equities, solution['Equities value']) self.assertEqual(simulator.portfolio, solution['Portfolio value'])
from datetime import datetime from finance.utils.BasicUtils import * from finance.sim import MarketSimulator sim = MarketSimulator("../sim/test/data") sim.initial_cash = 1000000 sim.simulate("MarketSimulator_orders.csv") print(sim.portfolio[0:10]) print("Total Return:", total_return(sim.portfolio)) print(sharpe_ratio(sim.portfolio, extraAnswers=True))
from datetime import datetime import matplotlib.pyplot as plt from finance.utils import Calculator from finance.sim import MarketSimulator # from finance.utils import DataAccess # DataAccess.path = 'data' sim = MarketSimulator() sim.initial_cash = 1000000 sim.load_trades("MarketSimulator_orders.csv") sim.simulate() print(sim.portfolio[0:10]) print('Total Return:', Calculator.ret(sim.portfolio)) print(Calculator.sharpe_ratio(sim.portfolio)) sim.portfolio.plot() # plt.grid(True) plt.show()