Series tests pass data type as string
This commit is contained in:
parent
306a2d730c
commit
9707c095b0
3
.gitignore
vendored
3
.gitignore
vendored
@ -2,4 +2,5 @@
|
||||
.eggs
|
||||
.env
|
||||
*egg-info
|
||||
__pycache__
|
||||
__pycache__
|
||||
.vscode
|
@ -1,16 +1,19 @@
|
||||
import datetime
|
||||
import time
|
||||
import timeit
|
||||
|
||||
import pandas
|
||||
|
||||
from fincal.fincal import AllFrequencies, Frequency, TimeSeries, create_date_series
|
||||
from fincal.fincal import AllFrequencies, TimeSeries, create_date_series
|
||||
|
||||
dfd = pandas.read_csv('test_files/nav_history_daily - Copy.csv')
|
||||
dfd = pandas.read_csv('test_files/msft.csv')
|
||||
dfm = pandas.read_csv('test_files/nav_history_monthly.csv')
|
||||
dfq = pandas.read_csv('test_files/nav_history_quarterly.csv')
|
||||
|
||||
data_d = [(i.date, i.nav) for i in dfd.itertuples()]
|
||||
data_m = [{'date': i.date, 'value': i.nav} for i in dfm.itertuples()]
|
||||
data_q = {i.date: i.nav for i in dfq.itertuples()}
|
||||
data_q.update({'14-02-2022': 93.7})
|
||||
|
||||
tsd = TimeSeries(data_d, frequency='D')
|
||||
tsm = TimeSeries(data_m, frequency='M', date_format='%d-%m-%Y')
|
||||
@ -18,6 +21,6 @@ tsq = TimeSeries(data_q, frequency='Q', date_format='%d-%m-%Y')
|
||||
|
||||
start = time.time()
|
||||
# ts.calculate_rolling_returns(datetime.datetime(2015, 1, 1), datetime.datetime(2022, 2, 1), years=1)
|
||||
# fdata = tsd.ffill()
|
||||
bdata = tsq.bfill()
|
||||
# rr = tsd.calculate_rolling_returns(datetime.datetime(2022, 1, 1), datetime.datetime(2022, 2, 1), years=1)
|
||||
print(time.time() - start)
|
||||
|
35
test.py
Normal file
35
test.py
Normal file
@ -0,0 +1,35 @@
|
||||
# type: ignore
|
||||
|
||||
import datetime
|
||||
import time
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from fincal.fincal import TimeSeries
|
||||
|
||||
df = pd.read_csv('test_files/nav_history_daily.csv')
|
||||
df = df.sort_values(by=['amfi_code', 'date']) # type: ignore
|
||||
data_list = [(i.date, i.nav) for i in df[df.amfi_code == 118825].itertuples()]
|
||||
|
||||
start = time.time()
|
||||
ts_data = TimeSeries(data_list, frequency='M')
|
||||
print(f"Instantiation took {round((time.time() - start)*1000, 2)} ms")
|
||||
# ts_data.fill_missing_days()
|
||||
start = time.time()
|
||||
# ts_data.calculate_returns(as_on=datetime.datetime(2022, 1, 4), closest='next', years=1)
|
||||
rr = ts_data.calculate_rolling_returns(datetime.datetime(2015, 1, 1),
|
||||
datetime.datetime(2022, 1, 21),
|
||||
frequency='M',
|
||||
as_on_match='next',
|
||||
prior_match='previous',
|
||||
closest='previous',
|
||||
years=1)
|
||||
|
||||
# ffill_data = ts_data.bfill()
|
||||
print(f"Calculation took {round((time.time() - start)*1000, 2)} ms")
|
||||
rr.sort()
|
||||
for i in rr[:10]:
|
||||
print(i)
|
||||
# print(ffill_data)
|
||||
# print(ts_data)
|
||||
# print(repr(ts_data))
|
37
test2.py
Normal file
37
test2.py
Normal file
@ -0,0 +1,37 @@
|
||||
# type: ignore
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
import datetime
|
||||
import time
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from fincal.fincal import TimeSeries
|
||||
|
||||
df = pd.read_csv('test_files/msft.csv')
|
||||
df = df.sort_values(by='Date') # type: ignore
|
||||
data_list = [(i.Date, i.Close) for i in df.itertuples()]
|
||||
|
||||
start = time.time()
|
||||
ts_data = TimeSeries(data_list, frequency='D', date_format='%d-%m-%Y')
|
||||
print(f"Instantiation took {round((time.time() - start)*1000, 2)} ms")
|
||||
# ts_data.fill_missing_days()
|
||||
start = time.time()
|
||||
# ts_data.calculate_returns(as_on=datetime.datetime(2022, 1, 4), closest='next', years=1)
|
||||
rr = ts_data.calculate_rolling_returns(datetime.datetime(1994, 1, 1),
|
||||
datetime.datetime(2022, 2, 17),
|
||||
frequency='D',
|
||||
as_on_match='next',
|
||||
prior_match='previous',
|
||||
closest='previous',
|
||||
years=1)
|
||||
|
||||
# ffill_data = ts_data.bfill()
|
||||
print(f"Calculation took {round((time.time() - start)*1000, 2)} ms")
|
||||
rr.sort()
|
||||
for i in rr[:10]:
|
||||
print(i)
|
||||
# print(ffill_data)
|
||||
# print(ts_data)
|
||||
# print(repr(ts_data))
|
7560
test_files/msft.csv
Normal file
7560
test_files/msft.csv
Normal file
File diff suppressed because it is too large
Load Diff
25
test_series.py
Normal file
25
test_series.py
Normal file
@ -0,0 +1,25 @@
|
||||
import datetime
|
||||
|
||||
from fincal.core import Series
|
||||
|
||||
s1 = Series([2.5, 6.2, 5.6, 8.4, 7.4, 1.5, 9.6, 5])
|
||||
|
||||
dt_lst = [
|
||||
datetime.datetime(2020, 12, 4, 0, 0),
|
||||
datetime.datetime(2019, 5, 16, 0, 0),
|
||||
datetime.datetime(2019, 9, 25, 0, 0),
|
||||
datetime.datetime(2016, 2, 18, 0, 0),
|
||||
datetime.datetime(2017, 8, 14, 0, 0),
|
||||
datetime.datetime(2018, 1, 4, 0, 0),
|
||||
datetime.datetime(2017, 5, 21, 0, 0),
|
||||
datetime.datetime(2018, 7, 17, 0, 0),
|
||||
datetime.datetime(2016, 4, 8, 0, 0),
|
||||
datetime.datetime(2020, 1, 7, 0, 0),
|
||||
datetime.datetime(2016, 12, 24, 0, 0),
|
||||
datetime.datetime(2020, 6, 19, 0, 0),
|
||||
datetime.datetime(2016, 3, 16, 0, 0),
|
||||
datetime.datetime(2017, 4, 25, 0, 0),
|
||||
datetime.datetime(2016, 7, 10, 0, 0)
|
||||
]
|
||||
|
||||
s2 = Series(dt_lst)
|
7560
tests/data/msft.csv
Normal file
7560
tests/data/msft.csv
Normal file
File diff suppressed because it is too large
Load Diff
@ -40,10 +40,10 @@ class TestAllFrequencies:
|
||||
|
||||
class TestSeries:
|
||||
def test_creation(self):
|
||||
series = Series([1, 2, 3, 4, 5, 6, 7], data_type=int)
|
||||
series = Series([1, 2, 3, 4, 5, 6, 7], data_type='number')
|
||||
assert series.dtype == float
|
||||
assert series[2] == 3
|
||||
|
||||
dates = create_date_series('2021-01-01', '2021-01-31', 'D')
|
||||
series = Series(dates, data_type=datetime.datetime)
|
||||
assert Series.dtype == datetime.datetime
|
||||
dates = create_date_series('2021-01-01', '2021-01-31', frequency='D')
|
||||
series = Series(dates, data_type='date')
|
||||
assert series.dtype == datetime.datetime
|
||||
|
Loading…
Reference in New Issue
Block a user