Skip to content

Commit ae5661d

Browse files
author
rob
committed
2 parents 46faa3e + 4c358d5 commit ae5661d

File tree

7 files changed

+69
-47
lines changed

7 files changed

+69
-47
lines changed

sysdata/production/historic_positions.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import pandas as pd
2+
3+
from syscore.exceptions import missingData
24
from syscore.objects import arg_not_supplied, missing_data
35
from sysobjects.contracts import futuresContract, listOfFuturesContracts
46

@@ -413,8 +415,9 @@ def any_positions_for_contract_in_date_range(
413415
end_date: datetime.datetime,
414416
) -> bool:
415417

416-
df_positions = self.get_position_as_df_for_contract_object(contract)
417-
if df_positions is missing_data:
418+
try:
419+
df_positions = self.get_position_as_df_for_contract_object(contract)
420+
except missingData:
418421
return False
419422
any_positions = any_positions_since_start_date(
420423
df_positions, start_date, end_date

sysobjects/production/timed_storage.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import pandas as pd
55

6+
from syscore.exceptions import missingData
67
from syscore.objects import success, arg_not_supplied, missing_data
78

89
DATE_KEY_NAME = "date"
@@ -265,7 +266,7 @@ def as_pd_df(self):
265266
:return: pd.DataFrame
266267
"""
267268
if len(self) == 0:
268-
return missing_data
269+
raise missingData
269270
(
270271
list_of_dates,
271272
dict_of_lists,

sysproduction/backup_arctic_to_csv.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import os
22
import pandas as pd
33

4+
from syscore.exceptions import missingData
45
from syscore.pandas.pdutils import check_df_equals, check_ts_equals
5-
from syscore.objects import missing_data
66
from syscore.dateutils import CALENDAR_DAYS_IN_YEAR
77
from sysdata.data_blob import dataBlob
88

@@ -337,19 +337,18 @@ def backup_contract_position_data(data):
337337
)
338338
)
339339
for contract in contract_list:
340-
mongo_data = (
341-
data.mongo_contract_position.get_position_as_df_for_contract_object(
342-
contract
343-
)
344-
)
345340
try:
341+
mongo_data = (
342+
data.mongo_contract_position.get_position_as_df_for_contract_object(
343+
contract
344+
)
345+
)
346+
except missingData:
347+
print("No data to write to .csv")
348+
else:
346349
data.csv_contract_position.write_position_df_for_contract(
347350
contract, mongo_data
348351
)
349-
except:
350-
## deals with weird corner case
351-
print("Couldn't write %s to .csv" % str(mongo_data))
352-
pass
353352
data.log.msg(
354353
"Backed up %s %s contract position data" % (instrument_code, contract)
355354
)
@@ -365,10 +364,11 @@ def backup_strategy_position_data(data):
365364
instrument_strategy = instrumentStrategy(
366365
strategy_name=strategy_name, instrument_code=instrument_code
367366
)
368-
mongo_data = data.mongo_strategy_position.get_position_as_df_for_instrument_strategy_object(
369-
instrument_strategy
370-
)
371-
if mongo_data is missing_data:
367+
try:
368+
mongo_data = data.mongo_strategy_position.get_position_as_df_for_instrument_strategy_object(
369+
instrument_strategy
370+
)
371+
except missingData:
372372
continue
373373
data.csv_strategy_position.write_position_df_for_instrument_strategy(
374374
instrument_strategy, mongo_data
@@ -446,10 +446,11 @@ def backup_optimal_positions(data):
446446
)
447447

448448
for instrument_strategy in strategy_instrument_list:
449-
mongo_data = data.mongo_optimal_position.get_optimal_position_as_df_for_instrument_strategy(
450-
instrument_strategy
451-
)
452-
if mongo_data is missing_data:
449+
try:
450+
mongo_data = data.mongo_optimal_position.get_optimal_position_as_df_for_instrument_strategy(
451+
instrument_strategy
452+
)
453+
except missingData:
453454
continue
454455
data.csv_optimal_position.write_position_df_for_instrument_strategy(
455456
instrument_strategy, mongo_data

sysproduction/interactive_diagnostics.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -479,10 +479,14 @@ def optimal_positions(data):
479479
instrument_strategy = instrumentStrategy(
480480
instrument_code=instrument_code, strategy_name=strategy_name
481481
)
482-
data_series = optimal_data.get_optimal_position_as_df_for_instrument_strategy(
483-
instrument_strategy
484-
)
485-
print(data_series)
482+
try:
483+
data_series = optimal_data.get_optimal_position_as_df_for_instrument_strategy(
484+
instrument_strategy
485+
)
486+
except missingData:
487+
print("missing data")
488+
else:
489+
print(data_series)
486490

487491
return None
488492

@@ -518,10 +522,14 @@ def actual_instrument_position(data):
518522
strategy_name=strategy_name, instrument_code=instrument_code
519523
)
520524

521-
pos_series = diag_positions.get_position_df_for_instrument_strategy(
522-
instrument_strategy
523-
)
524-
print(pos_series)
525+
try:
526+
pos_series = diag_positions.get_position_df_for_instrument_strategy(
527+
instrument_strategy
528+
)
529+
except missingData:
530+
print("missing data")
531+
else:
532+
print(pos_series)
525533
return None
526534

527535

@@ -544,8 +552,12 @@ def actual_contract_position(data):
544552
# ignore warnings can be str
545553
contract = futuresContract(instrument_code, contract_date_str)
546554

547-
pos_series = diag_positions.get_position_df_for_contract(contract)
548-
print(pos_series)
555+
try:
556+
pos_series = diag_positions.get_position_df_for_contract(contract)
557+
except missingData:
558+
print("missing data")
559+
else:
560+
print(pos_series)
549561
return None
550562

551563

sysproduction/reporting/data/pandl.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import pandas as pd
55

6-
from syscore.exceptions import missingContract
6+
from syscore.exceptions import missingContract, missingData
77
from syscore.objects import arg_not_supplied, missing_data
88
from sysobjects.contracts import futuresContract
99
from sysobjects.production.tradeable_object import instrumentStrategy
@@ -458,10 +458,11 @@ def get_position_series_for_instrument_strategy(data, instrument_code, strategy_
458458
strategy_name=strategy_name, instrument_code=instrument_code
459459
)
460460

461-
pos_series = diag_positions.get_position_df_for_instrument_strategy(
462-
instrument_strategy
463-
)
464-
if pos_series is missing_data:
461+
try:
462+
pos_series = diag_positions.get_position_df_for_instrument_strategy(
463+
instrument_strategy
464+
)
465+
except missingData:
465466
return pd.Series()
466467

467468
return pd.Series(pos_series.position)
@@ -492,8 +493,9 @@ def get_position_series_for_contract(data, instrument_code: str, contract_id: st
492493
diag_positions = diagPositions(data)
493494
contract = futuresContract(instrument_code, contract_id)
494495

495-
pos_series = diag_positions.get_position_df_for_contract(contract)
496-
if pos_series is missing_data:
496+
try:
497+
pos_series = diag_positions.get_position_df_for_contract(contract)
498+
except missingData:
497499
return pd.Series()
498500

499501
return pd.Series(pos_series.position)

sysproduction/reporting/data/status.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,10 +248,11 @@ def get_last_position_update_for_strategy_instrument(
248248
instrument_code=instrument_code, strategy_name=strategy_name
249249
)
250250

251-
pos_data = op.get_optimal_position_as_df_for_instrument_strategy(
252-
instrument_strategy
253-
)
254-
if pos_data is missing_data:
251+
try:
252+
pos_data = op.get_optimal_position_as_df_for_instrument_strategy(
253+
instrument_strategy
254+
)
255+
except missingData:
255256
return None
256257
last_update = pos_data.index[-1]
257258
key = "%s/%s" % (strategy_name, instrument_code)

sysproduction/strategy_code/report_system_classic.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
from collections import namedtuple
66

7-
from syscore.objects import header, table, body_text, missing_data
7+
from syscore.exceptions import missingData
8+
from syscore.objects import header, table, body_text
89
from syscore.dateutils import ROOT_BDAYS_INYEAR, from_marker_string_to_datetime
910
from sysproduction.data.positions import diagPositions
1011

@@ -454,10 +455,11 @@ def get_position_for_instrument_code_at_timestamp(data_backtest, data, instrumen
454455
strategy_name=strategy_name, instrument_code=instrument_code
455456
)
456457

457-
positions_over_time = diag_positions.get_position_df_for_instrument_strategy(
458-
instrument_strategy
459-
)
460-
if positions_over_time is missing_data:
458+
try:
459+
positions_over_time = diag_positions.get_position_df_for_instrument_strategy(
460+
instrument_strategy
461+
)
462+
except missingData:
461463
return np.nan
462464

463465
datetime_cutoff = from_marker_string_to_datetime(data_backtest.timestamp)

0 commit comments

Comments
 (0)