1
0
Fork 0

Make zip naming consistent and start marketsim project

master
Felix Martin 2020-10-08 20:24:49 -04:00
parent 4e2a7a8e77
commit 0429c497c7
16 changed files with 648 additions and 0 deletions

View File

@ -0,0 +1,384 @@
"""MC2-P1: Market simulator - grading script.
Usage:
- Switch to a student feedback directory first (will write "points.txt" and "comments.txt" in pwd).
- Run this script with both ml4t/ and student solution in PYTHONPATH, e.g.:
PYTHONPATH=ml4t:MC1-P2/jdoe7 python ml4t/mc2_p1_grading/grade_marketsim.py
Copyright 2018, Georgia Institute of Technology (Georgia Tech)
Atlanta, Georgia 30332
All Rights Reserved
Template code for CS 4646/7646
Georgia Tech asserts copyright ownership of this template and all derivative
works, including solutions to the projects assigned in this course. Students
and other users of this template code are advised not to share it with others
or to make it available on publicly viewable websites including repositories
such as github and gitlab. This copyright statement should not be removed
or edited.
We do grant permission to share solutions privately with non-students such
as potential employers. However, sharing with other current or future
students of CS 7646 is prohibited and subject to being investigated as a
GT honor code violation.
-----do not edit anything above this line---
"""
import pytest
from grading.grading import grader, GradeResult, time_limit, run_with_timeout, IncorrectOutput
import os
import sys
import traceback as tb
import numpy as np
import pandas as pd
from collections import namedtuple
from util import get_data
from util import get_orders_data_file
# Student code
main_code = "marketsim" # module name to import
# Test cases
MarketsimTestCase = namedtuple('MarketsimTestCase', ['description', 'group', 'inputs', 'outputs'])
marketsim_test_cases = [
MarketsimTestCase(
description="Orders 1",
group='basic',
inputs=dict(
orders_file='orders-01.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 245 ,
last_day_portval = 1115569.2,
sharpe_ratio = 0.612340613407 ,
avg_daily_ret = 0.00055037432146
)
),
MarketsimTestCase(
description="Orders 2",
group='basic',
inputs=dict(
orders_file='orders-02.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 245 ,
last_day_portval = 1095003.35,
sharpe_ratio = 1.01613520942,
avg_daily_ret = 0.000390534819609
)
),
MarketsimTestCase(
description="Orders 3",
group='basic',
inputs=dict(
orders_file='orders-03.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 240,
last_day_portval = 857616.0,
sharpe_ratio = -0.759896272199,
avg_daily_ret = -0.000571326189931
)
),
MarketsimTestCase(
description="Orders 4",
group='basic',
inputs=dict(
orders_file='orders-04.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 233,
last_day_portval = 923545.4,
sharpe_ratio = -0.266030146916,
avg_daily_ret = -0.000240200768212
)
),
MarketsimTestCase(
description="Orders 5",
group='basic',
inputs=dict(
orders_file='orders-05.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 296,
last_day_portval = 1415563.0,
sharpe_ratio = 2.19591520826,
avg_daily_ret = 0.00121733290744
)
),
MarketsimTestCase(
description="Orders 6",
group='basic',
inputs=dict(
orders_file='orders-06.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 210,
last_day_portval = 894604.3,
sharpe_ratio = -1.23463930987,
avg_daily_ret = -0.000511281541086
)
),
MarketsimTestCase(
description="Orders 7",
group='basic',
inputs=dict(
orders_file='orders-07.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 237,
last_day_portval = 1106563.3,
sharpe_ratio = 2.10356512897,
avg_daily_ret = 0.0004345040621
)
),
MarketsimTestCase(
description="Orders 8",
group='basic',
inputs=dict(
orders_file='orders-08.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 229,
last_day_portval = 1074884.1,
sharpe_ratio = 0.941858298061,
avg_daily_ret = 0.000332404156893
)
),
MarketsimTestCase(
description="Orders 9",
group='basic',
inputs=dict(
orders_file='orders-09.csv',
start_val=1000000,
commission=0.,
impact=0.
),
outputs=dict(
num_days = 37,
last_day_portval = 1067710.0,
sharpe_ratio = 2.90848480553,
avg_daily_ret = 0.00187252252117
)
),
#########################
# Commission and impact #
#########################
MarketsimTestCase(
description="Orders 11, commission",
group='commission',
inputs=dict(
orders_file='orders-11.csv',
start_val=1000000,
commission=9.95,
impact=0.
),
outputs=dict(
num_days = 37,
last_day_portval = 1045700.45,
sharpe_ratio = 1.80327835983,
avg_daily_ret = 0.00130745837411
)
),
MarketsimTestCase(
description="Orders 12, impact",
group='impact',
inputs=dict(
orders_file='orders-12.csv',
start_val=1000000,
commission=0.,
impact=0.005
),
outputs=dict(
num_days = 240,
last_day_portval = 1705686.6665,
sharpe_ratio = 1.26427802107,
avg_daily_ret = 0.00290246139389
)
),
MarketsimTestCase(
description="Orders 10, impact and commission",
group='both',
inputs=dict(
orders_file='orders-10.csv',
start_val=1000000,
commission=9.95,
impact=0.005
),
outputs=dict(
num_days = 141,
last_day_portval = 1026658.3265,
sharpe_ratio = 0.627643575702,
avg_daily_ret = 0.000222013722594
)
),
MarketsimTestCase(
description="author() test",
group='author',
inputs=None,
outputs=None
),
#######################
# Withheld test cases #
#######################
]
seconds_per_test_case = 10 # execution time limit
# Grading parameters (picked up by module-level grading fixtures)
max_points = 100.0 # 9.5 * 10 + 2.5 * 2 + 1 secret point
html_pre_block = True # surround comments with HTML <pre> tag (for T-Square comments field)
# Test functon(s)
@pytest.mark.parametrize("description,group,inputs,outputs", marketsim_test_cases)
def test_marketsim(description, group, inputs, outputs, grader):
"""Test compute_portvals() returns correct daily portfolio values.
Requires test description, test case group, inputs, expected outputs, and a grader fixture.
"""
points_earned = 0.0 # initialize points for this test case
try:
# Try to import student code (only once)
if not main_code in globals():
import importlib
# * Import module
mod = importlib.import_module(main_code)
globals()[main_code] = mod
# * Import methods to test
for m in ['compute_portvals']:
globals()[m] = getattr(mod, m)
incorrect = False
msgs = []
if group == 'author':
try:
auth_string = run_with_timeout(marketsim.author,seconds_per_test_case,(),{})
if auth_string == 'tb34':
incorrect = True
msgs.append(" Incorrect author name (tb34)")
points_earned = -10
elif auth_string == '':
incorrect = True
msgs.append(" Empty author name")
points_earned = -10
except Exception as e:
incorrect = True
msgs.append(" Exception occured when calling author() method: {}".format(e))
points_earned = -10
else:
# Unpack test case
orders_file = inputs['orders_file']
start_val = inputs['start_val']
impct = inputs['impact']
commish = inputs['commission']
portvals = None
fullpath_orders_file = get_orders_data_file(orders_file)
portvals = run_with_timeout(compute_portvals,seconds_per_test_case,(),{'orders_file':fullpath_orders_file,'start_val':start_val,'commission':commish,'impact':impct})
# * Check return type is correct, coax into Series
assert (type(portvals) == pd.Series) or (type(portvals) == pd.DataFrame and len(portvals.columns) == 1), "You must return a Series or single-column DataFrame!"
if type(portvals) == pd.DataFrame:
portvals = portvals[portvals.columns[0]] # convert single-column DataFrame to Series
if portvals.isnull().values.any():
incorrect=True
msgs.append("Portfolio values cannot be NaNs!")
else:
if group == 'basic':
if len(portvals) != outputs['num_days']:
incorrect=True
msgs.append(" Incorrect number of days: {}, expected {}".format(len(portvals), outputs['num_days']))
else:
points_earned += 2.0
if abs(portvals[-1]-outputs['last_day_portval']) > (0.001*outputs['last_day_portval']):
incorrect=True
msgs.append(" Incorrect final value: {}, expected {}".format(portvals[-1],outputs['last_day_portval']))
else:
points_earned += 5.0
adr,sr = get_stats(portvals)
if abs(sr-outputs['sharpe_ratio']) > abs(0.001*outputs['sharpe_ratio']):
incorrect=True
msgs.append(" Incorrect sharpe ratio: {}, expected {}".format(sr,outputs['sharpe_ratio']))
else:
points_earned += 1.0
if abs(adr-outputs['avg_daily_ret']) > abs(0.001*outputs['avg_daily_ret']):
incorrect=True
msgs.append(" Incorrect avg daily return: {}, expected {}".format(adr,outputs['avg_daily_ret']))
else:
points_earned += 1.0
elif group=='commission' or group=='impact' or group=='both':
if abs(portvals[-1]-outputs['last_day_portval']) > 0.001:#(0.001*outputs['last_day_portval']):
incorrect = True
msgs.append(" Incorrect final value: {}, expected {}".format(portvals[-1],outputs['last_day_portval']))
else:
points_earned += 2.0
if incorrect:
# inputs_str = " orders_file: {}\n" \
# " start_val: {}\n".format(orders_file, start_val)
raise IncorrectOutput("Test failed on one or more output criteria.\n Inputs:\n{}\n Failures:\n{}".format(inputs, "\n".join(msgs)))
except Exception as e:
# Test result: failed
msg = "Test case description: {}\n".format(description)
# Generate a filtered stacktrace, only showing erroneous lines in student file(s)
tb_list = tb.extract_tb(sys.exc_info()[2])
if 'grading_traceback' in dir(e):
tb_list = e.grading_traceback
for i in range(len(tb_list)):
row = tb_list[i]
tb_list[i] = (os.path.basename(row[0]), row[1], row[2], row[3]) # show only filename instead of long absolute path
tb_list = [row for row in tb_list if row[0] == 'marketsim.py']
if tb_list:
msg += "Traceback:\n"
msg += ''.join(tb.format_list(tb_list)) # contains newlines
msg += "{}: {}".format(e.__class__.__name__, str(e))
# Report failure result to grader, with stacktrace
grader.add_result(GradeResult(outcome='failed', points=max(points_earned,0), msg=msg))
raise
else:
# Test result: passed (no exceptions)
grader.add_result(GradeResult(outcome='passed', points=points_earned, msg=None))
def get_stats(port_val):
daily_rets = (port_val / port_val.shift(1)) - 1
daily_rets = daily_rets[1:]
avg_daily_ret = daily_rets.mean()
std_daily_ret = daily_rets.std()
sharpe_ratio = np.sqrt(252) * daily_rets.mean() / std_daily_ret
return avg_daily_ret, sharpe_ratio
if __name__ == "__main__":
pytest.main(["-s", __file__])

91
marketsim/marketsim.py Normal file
View File

@ -0,0 +1,91 @@
"""MC2-P1: Market simulator.
Copyright 2018, Georgia Institute of Technology (Georgia Tech)
Atlanta, Georgia 30332
All Rights Reserved
Template code for CS 4646/7646
Georgia Tech asserts copyright ownership of this template and all derivative
works, including solutions to the projects assigned in this course. Students
and other users of this template code are advised not to share it with others
or to make it available on publicly viewable websites including repositories
such as github and gitlab. This copyright statement should not be removed
or edited.
We do grant permission to share solutions privately with non-students such
as potential employers. However, sharing with other current or future
students of CS 7646 is prohibited and subject to being investigated as a
GT honor code violation.
-----do not edit anything above this line---
Student Name: Tucker Balch (replace with your name)
GT User ID: tb34 (replace with your User ID)
GT ID: 900897987 (replace with your GT ID)
"""
import pandas as pd
import numpy as np
import datetime as dt
import os
from util import get_data, plot_data
def compute_portvals(orders_file = "./orders/orders.csv", start_val = 1000000, commission=9.95, impact=0.005):
# this is the function the autograder will call to test your code
# NOTE: orders_file may be a string, or it may be a file object. Your
# code should work correctly with either input
# TODO: Your code here
# In the template, instead of computing the value of the portfolio, we just
# read in the value of IBM over 6 months
start_date = dt.datetime(2008,1,1)
end_date = dt.datetime(2008,6,1)
portvals = get_data(['IBM'], pd.date_range(start_date, end_date))
portvals = portvals[['IBM']] # remove SPY
rv = pd.DataFrame(index=portvals.index, data=portvals.values)
return rv
return portvals
def test_code():
# this is a helper function you can use to test your code
# note that during autograding his function will not be called.
# Define input parameters
of = "./orders/orders2.csv"
sv = 1000000
# Process orders
portvals = compute_portvals(orders_file = of, start_val = sv)
if isinstance(portvals, pd.DataFrame):
portvals = portvals[portvals.columns[0]] # just get the first column
else:
"warning, code did not return a DataFrame"
# Get portfolio stats
# Here we just fake the data. you should use your code from previous assignments.
start_date = dt.datetime(2008,1,1)
end_date = dt.datetime(2008,6,1)
cum_ret, avg_daily_ret, std_daily_ret, sharpe_ratio = [0.2,0.01,0.02,1.5]
cum_ret_SPY, avg_daily_ret_SPY, std_daily_ret_SPY, sharpe_ratio_SPY = [0.2,0.01,0.02,1.5]
# Compare portfolio against $SPX
print(f"Date Range: {start_date} to {end_date}")
print()
print(f"Sharpe Ratio of Fund: {sharpe_ratio}")
print(f"Sharpe Ratio of SPY : {sharpe_ratio_SPY}")
print()
print(f"Cumulative Return of Fund: {cum_ret}")
print(f"Cumulative Return of SPY : {cum_ret_SPY}")
print()
print(f"Standard Deviation of Fund: {std_daily_ret}")
print(f"Standard Deviation of SPY : {std_daily_ret_SPY}")
print()
print(f"Average Daily Return of Fund: {avg_daily_ret}")
print(f"Average Daily Return of SPY : {avg_daily_ret_SPY}")
print()
print(f"Final Portfolio Value: {portvals[-1]}")
if __name__ == "__main__":
test_code()

View File

@ -0,0 +1,18 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,1500
2011-01-13,AAPL,SELL,1500
2011-01-13,IBM,BUY,4000
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,4000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-03-03,GOOG,SELL,2200
2011-06-03,IBM,SELL,3300
2011-05-03,IBM,BUY,1500
2011-06-10,AAPL,BUY,1200
2011-08-01,GOOG,BUY,55
2011-08-01,GOOG,SELL,55
2011-12-20,AAPL,SELL,1200
2011-12-21,AAPL,BUY,20
2011-12-27,GOOG,BUY,2200
2011-12-28,IBM,SELL,2200
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 1500
3 2011-01-13 AAPL SELL 1500
4 2011-01-13 IBM BUY 4000
5 2011-01-26 GOOG BUY 1000
6 2011-02-02 XOM SELL 4000
7 2011-02-10 XOM BUY 4000
8 2011-03-03 GOOG SELL 1000
9 2011-03-03 GOOG SELL 2200
10 2011-06-03 IBM SELL 3300
11 2011-05-03 IBM BUY 1500
12 2011-06-10 AAPL BUY 1200
13 2011-08-01 GOOG BUY 55
14 2011-08-01 GOOG SELL 55
15 2011-12-20 AAPL SELL 1200
16 2011-12-21 AAPL BUY 20
17 2011-12-27 GOOG BUY 2200
18 2011-12-28 IBM SELL 2200

View File

@ -0,0 +1,18 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,1500
2011-01-10,AAPL,SELL,1500
2011-01-13,AAPL,SELL,1500
2011-01-13,IBM,BUY,4000
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,4000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-06-03,IBM,SELL,3300
2011-05-03,IBM,BUY,1500
2011-06-10,AAPL,BUY,1200
2011-08-01,GOOG,BUY,55
2011-08-01,GOOG,SELL,55
2011-08-01,GOOG,BUY,55
2011-12-20,AAPL,SELL,1200
2011-12-21,AAPL,BUY,20
2011-12-28,IBM,SELL,2200
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 1500
3 2011-01-10 AAPL SELL 1500
4 2011-01-13 AAPL SELL 1500
5 2011-01-13 IBM BUY 4000
6 2011-01-26 GOOG BUY 1000
7 2011-02-02 XOM SELL 4000
8 2011-02-10 XOM BUY 4000
9 2011-03-03 GOOG SELL 1000
10 2011-06-03 IBM SELL 3300
11 2011-05-03 IBM BUY 1500
12 2011-06-10 AAPL BUY 1200
13 2011-08-01 GOOG BUY 55
14 2011-08-01 GOOG SELL 55
15 2011-08-01 GOOG BUY 55
16 2011-12-20 AAPL SELL 1200
17 2011-12-21 AAPL BUY 20
18 2011-12-28 IBM SELL 2200

View File

@ -0,0 +1,14 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,1500
2011-01-13,AAPL,BUY,1500
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,4000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-03-03,IBM,SELL,1200
2011-06-03,IBM,SELL,3300
2011-05-03,IBM,BUY,1500
2011-06-10,AAPL,SELL,3000
2011-08-01,GOOG,BUY,55
2011-08-01,GOOG,BUY,55
2011-12-20,GOOG,SELL,110
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 1500
3 2011-01-13 AAPL BUY 1500
4 2011-01-26 GOOG BUY 1000
5 2011-02-02 XOM SELL 4000
6 2011-02-10 XOM BUY 4000
7 2011-03-03 GOOG SELL 1000
8 2011-03-03 IBM SELL 1200
9 2011-06-03 IBM SELL 3300
10 2011-05-03 IBM BUY 1500
11 2011-06-10 AAPL SELL 3000
12 2011-08-01 GOOG BUY 55
13 2011-08-01 GOOG BUY 55
14 2011-12-20 GOOG SELL 110

View File

@ -0,0 +1,15 @@
Date,Symbol,Order,Shares
2008-01-14,GOOG,SELL,1000
2008-01-17,GOOG,BUY,1000
2008-03-19,AAPL,SELL,3000
2008-03-31,IBM,SELL,2000
2008-05-02,BAC,BUY,5000
2008-05-09,BAC,SELL,5000
2008-06-02,IBM,BUY,2000
2008-06-02,AAPL,BUY,3100
2008-06-02,AAPL,BUY,4300
2008-07-23,AAPL,SELL,3500
2008-07-10,GOOG,SELL,1000
2008-08-07,IBM,SELL,55
2008-08-11,IBM,BUY,55
2008-12-12,GOOG,BUY,1000
1 Date Symbol Order Shares
2 2008-01-14 GOOG SELL 1000
3 2008-01-17 GOOG BUY 1000
4 2008-03-19 AAPL SELL 3000
5 2008-03-31 IBM SELL 2000
6 2008-05-02 BAC BUY 5000
7 2008-05-09 BAC SELL 5000
8 2008-06-02 IBM BUY 2000
9 2008-06-02 AAPL BUY 3100
10 2008-06-02 AAPL BUY 4300
11 2008-07-23 AAPL SELL 3500
12 2008-07-10 GOOG SELL 1000
13 2008-08-07 IBM SELL 55
14 2008-08-11 IBM BUY 55
15 2008-12-12 GOOG BUY 1000

View File

@ -0,0 +1,15 @@
Date,Symbol,Order,Shares
2009-05-04,GLD,BUY,3000
2009-06-08,AAPL,BUY,1500
2009-07-07,IBM,BUY,4000
2009-07-07,GOOG,BUY,1000
2009-10-19,IBM,SELL,4000
2010-01-13,XOM,BUY,3000
2010-02-26,GOOG,SELL,1000
2010-03-09,XOM,SELL,900
2010-04-20,GLD,SELL,3000
2010-05-03,BAC,BUY,1500
2010-05-27,BAC,SELL,1500
2010-06-29,XOM,SELL,2100
2010-07-02,AAPL,SELL,300
2010-07-06,AAPL,SELL,1200
1 Date Symbol Order Shares
2 2009-05-04 GLD BUY 3000
3 2009-06-08 AAPL BUY 1500
4 2009-07-07 IBM BUY 4000
5 2009-07-07 GOOG BUY 1000
6 2009-10-19 IBM SELL 4000
7 2010-01-13 XOM BUY 3000
8 2010-02-26 GOOG SELL 1000
9 2010-03-09 XOM SELL 900
10 2010-04-20 GLD SELL 3000
11 2010-05-03 BAC BUY 1500
12 2010-05-27 BAC SELL 1500
13 2010-06-29 XOM SELL 2100
14 2010-07-02 AAPL SELL 300
15 2010-07-06 AAPL SELL 1200

View File

@ -0,0 +1,15 @@
Date,Symbol,Order,Shares
2007-01-10,AAPL,BUY,2500
2007-01-17,AAPL,SELL,1500
2007-01-19,IBM,BUY,400
2007-01-26,GOOG,BUY,1000
2007-02-02,XOM,SELL,4000
2007-02-16,XOM,BUY,700
2007-03-05,GOOG,SELL,550
2007-03-05,IBM,SELL,2200
2007-05-14,XOM,SELL,880
2007-05-15,XOM,BUY,550
2007-09-13,GOOG,SELL,1000
2007-10-10,XOM,BUY,100
2007-10-12,XOM,SELL,3000
2007-11-07,XOM,BUY,400
1 Date Symbol Order Shares
2 2007-01-10 AAPL BUY 2500
3 2007-01-17 AAPL SELL 1500
4 2007-01-19 IBM BUY 400
5 2007-01-26 GOOG BUY 1000
6 2007-02-02 XOM SELL 4000
7 2007-02-16 XOM BUY 700
8 2007-03-05 GOOG SELL 550
9 2007-03-05 IBM SELL 2200
10 2007-05-14 XOM SELL 880
11 2007-05-15 XOM BUY 550
12 2007-09-13 GOOG SELL 1000
13 2007-10-10 XOM BUY 100
14 2007-10-12 XOM SELL 3000
15 2007-11-07 XOM BUY 400

View File

@ -0,0 +1,15 @@
Date,Symbol,Order,Shares
2009-01-14,AAPL,BUY,150
2009-01-21,AAPL,SELL,150
2009-01-21,IBM,BUY,400
2009-01-30,GOOG,BUY,100
2009-02-02,XOM,SELL,400
2009-02-10,XOM,BUY,400
2009-03-03,GOOG,SELL,100
2009-03-03,IBM,SELL,220
2009-06-03,IBM,SELL,330
2009-05-08,IBM,BUY,1500
2009-06-10,AAPL,BUY,1200
2009-08-03,GOOG,BUY,550
2009-08-03,GOOG,SELL,550
2009-12-21,AAPL,SELL,1200
1 Date Symbol Order Shares
2 2009-01-14 AAPL BUY 150
3 2009-01-21 AAPL SELL 150
4 2009-01-21 IBM BUY 400
5 2009-01-30 GOOG BUY 100
6 2009-02-02 XOM SELL 400
7 2009-02-10 XOM BUY 400
8 2009-03-03 GOOG SELL 100
9 2009-03-03 IBM SELL 220
10 2009-06-03 IBM SELL 330
11 2009-05-08 IBM BUY 1500
12 2009-06-10 AAPL BUY 1200
13 2009-08-03 GOOG BUY 550
14 2009-08-03 GOOG SELL 550
15 2009-12-21 AAPL SELL 1200

View File

@ -0,0 +1,15 @@
Date,Symbol,Order,Shares
2010-01-12,AAPL,BUY,150
2010-01-21,IBM,BUY,400
2010-01-21,GOOG,BUY,100
2010-01-27,AAPL,SELL,150
2010-02-05,XOM,SELL,400
2010-02-11,GOOG,SELL,100
2010-03-10,IBM,SELL,220
2010-04-15,XOM,BUY,400
2010-05-20,GOOG,BUY,550
2010-06-03,IBM,SELL,330
2010-06-24,AAPL,BUY,1200
2010-08-18,IBM,BUY,1500
2010-09-15,GOOG,SELL,550
2010-12-07,AAPL,SELL,1200
1 Date Symbol Order Shares
2 2010-01-12 AAPL BUY 150
3 2010-01-21 IBM BUY 400
4 2010-01-21 GOOG BUY 100
5 2010-01-27 AAPL SELL 150
6 2010-02-05 XOM SELL 400
7 2010-02-11 GOOG SELL 100
8 2010-03-10 IBM SELL 220
9 2010-04-15 XOM BUY 400
10 2010-05-20 GOOG BUY 550
11 2010-06-03 IBM SELL 330
12 2010-06-24 AAPL BUY 1200
13 2010-08-18 IBM BUY 1500
14 2010-09-15 GOOG SELL 550
15 2010-12-07 AAPL SELL 1200

View File

@ -0,0 +1,10 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,2500
2011-01-10,AAPL,BUY,2500
2011-01-13,AAPL,SELL,5000
2011-01-13,IBM,BUY,4000
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,4000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-03-03,IBM,SELL,4000
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 2500
3 2011-01-10 AAPL BUY 2500
4 2011-01-13 AAPL SELL 5000
5 2011-01-13 IBM BUY 4000
6 2011-01-26 GOOG BUY 1000
7 2011-02-02 XOM SELL 4000
8 2011-02-10 XOM BUY 4000
9 2011-03-03 GOOG SELL 1000
10 2011-03-03 IBM SELL 4000

View File

@ -0,0 +1,13 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,1500
2011-01-13,AAPL,SELL,1500
2011-01-13,IBM,BUY,4000
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,4000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-03-03,IBM,SELL,2200
2011-06-03,IBM,SELL,3300
2011-05-03,IBM,BUY,1500
2011-08-01,GOOG,BUY,55
2011-08-01,GOOG,SELL,55
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 1500
3 2011-01-13 AAPL SELL 1500
4 2011-01-13 IBM BUY 4000
5 2011-01-26 GOOG BUY 1000
6 2011-02-02 XOM SELL 4000
7 2011-02-10 XOM BUY 4000
8 2011-03-03 GOOG SELL 1000
9 2011-03-03 IBM SELL 2200
10 2011-06-03 IBM SELL 3300
11 2011-05-03 IBM BUY 1500
12 2011-08-01 GOOG BUY 55
13 2011-08-01 GOOG SELL 55

View File

@ -0,0 +1,10 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,2500
2011-01-10,AAPL,BUY,2500
2011-01-13,AAPL,SELL,5000
2011-01-13,IBM,BUY,4000
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,12000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-03-03,IBM,SELL,4000
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 2500
3 2011-01-10 AAPL BUY 2500
4 2011-01-13 AAPL SELL 5000
5 2011-01-13 IBM BUY 4000
6 2011-01-26 GOOG BUY 1000
7 2011-02-02 XOM SELL 12000
8 2011-02-10 XOM BUY 4000
9 2011-03-03 GOOG SELL 1000
10 2011-03-03 IBM SELL 4000

View File

@ -0,0 +1,15 @@
Date,Symbol,Order,Shares
2011-01-10,AAPL,BUY,1500
2011-01-13,AAPL,SELL,1500
2011-01-13,IBM,BUY,4000
2011-01-26,GOOG,BUY,1000
2011-02-02,XOM,SELL,4000
2011-02-10,XOM,BUY,4000
2011-03-03,GOOG,SELL,1000
2011-03-03,IBM,SELL,2200
2011-06-03,IBM,SELL,3300
2011-05-03,IBM,BUY,1500
2011-06-10,AAPL,BUY,10000
2011-08-01,GOOG,BUY,55
2011-08-01,GOOG,SELL,55
2011-12-20,AAPL,SELL,1200
1 Date Symbol Order Shares
2 2011-01-10 AAPL BUY 1500
3 2011-01-13 AAPL SELL 1500
4 2011-01-13 IBM BUY 4000
5 2011-01-26 GOOG BUY 1000
6 2011-02-02 XOM SELL 4000
7 2011-02-10 XOM BUY 4000
8 2011-03-03 GOOG SELL 1000
9 2011-03-03 IBM SELL 2200
10 2011-06-03 IBM SELL 3300
11 2011-05-03 IBM BUY 1500
12 2011-06-10 AAPL BUY 10000
13 2011-08-01 GOOG BUY 55
14 2011-08-01 GOOG SELL 55
15 2011-12-20 AAPL SELL 1200