Ejemplo n.º 1
0
    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"])
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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'])
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
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()