コード例 #1
0
 def load(self):
     exo_data = self.datasource.exostorage.load_exo(self.name)
     if exo_data is not None:
         self._position = Position.from_dict(exo_data['position'], self.datasource, self.date)
         self._old_transactions = exo_data['transactions']
         self._series = pickle.loads(exo_data['series'])
     return exo_data
コード例 #2
0
    def test_from_dict(self):
        pos = Position()
        trans = Transaction(self.fut_contract,
                            self.date,
                            4.0,
                            12.3,
                            leg_name='fut1')
        pos.add(trans)

        trans2 = Transaction(self.fut_contract, self.date, -2.0, 13.3)
        pos.add(trans2)

        positions = pos.netpositions
        self.assertEqual(1, len(positions))
        self.assertEqual(100, pos._realized_pnl)

        self.assertEqual(1, len(positions))
        self.assertEqual(True, self.fut_contract in positions)
        p = positions[self.fut_contract]

        self.assertEqual(p['qty'], 2.0)
        self.assertEqual(p['value'], trans.usdvalue / 2)

        self.fut_contract._price = 14.3
        self.assertEqual(100, pos._realized_pnl)
        self.assertEqual(pos.pnl, 100 + 200)

        pos_dic = pos.as_dict()

        # Deserealizing position

        p2 = Position.from_dict(pos_dic, self.datasource, self.date)

        positions = p2.netpositions
        self.assertEqual(100, p2._realized_pnl)

        self.assertEqual(1, len(positions))
        self.assertEqual(True, self.fut_contract in positions)
        p = positions[self.fut_contract]

        # Wrong - because we have new object from datsource
        #self.fut_contract._price = 14.3

        for k in positions.keys():
            k._price = 14.3

        self.assertEqual(p['qty'], 2.0)
        self.assertEqual(p['value'], trans.usdvalue / 2)

        self.assertEqual(1, len(p2.legs))
        self.assertEqual(True, 'fut1' in p2.legs)
        self.assertEqual(self.fut_contract, p2.legs['fut1'])

        self.assertEqual(100, p2._realized_pnl)
        self.assertEqual(p2.pnl, 100 + 200)