The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Quant::Framework::Document - Binds data with Chronicle

DESCRIPTION

Internal representation of persistend data. Do not create the class directly outside of Quant::Framework, although the usage of public fields outside of Quant::Framework is allowed.

The class is responsible for loading and storing data via Data::Chronicle. The data itself is a hash, which content is provided by users of the class (i.e. by CorporateActions).

# create new (transient / not-yet-persisted) Document

my $document = Quant::Framework::Document->new(
 storage_accessor => $storage_accessor,
 symbol           => 'frxUSDJPY',
 data             => {},
 for_date         => Date::Utility->new,
);

# persist document
$document->save('currency');

# load document
my $document2 = Quant::Framework::Document::load(
 $storage_accessor,
 'currency',
 'frxUSDJPY',
 Date::Utility->new, # optional
)

ATTRIBUTES

storage_accessor

Chronicle assessor

recorded_date

The date of document creation (Date::Utility)

data

Hashref of data. Should be defined by the class, which uses Document. Currently the fields date and symbol are reserved.

namespace

The required namespace of document, e.g. 'corporate_actions'

symbol

The domain-specific name of document; e.g. "USAAPL" for corporate actions

SUBROUTINES

load($storage_accessor, $namespace, $symbol, $for_date)

my $recent_document = Quant::Framework::Document::load($storage_accessor, 'corporate_actions', "USAAPL");

my $event_date = Date::Utility->new('02-02-2016')
my $historical_doc = Quant::Framework::Document::load($storage_accessor, 'corporate_actions', "USAAPL", $event_date);

Loads the document. If the argument for_date is ommitted, then loads the most recent document.

If document is not found, returns undef.

save

$document->save;

Stores (persists) the document in Chronicle database.