Problem returned: stock sell showing up as payment

Jonatan Cloutier cloutier.jo at gmail.com
Fri Aug 26 04:28:17 BST 2022


Hello,

When doing my auto import script using kmm statement import I had an 
issue that I thought was related to the data I was inputing, but seem 
very related to what you are seeing. Even more confusing, I'm almost 
certain the behaviour wasn't consistent while I tested. I put that on 
bad tracking of my trial, but maybe not. In the end, I made those 
changes that worked well to import about 6 months of dca investments 
correctly. This diff is not to be applied blindly as signs in the input 
statement file might be wrong compared to ofx standard. Haven’t had time 
to search more, but in any case it might give some clues on the issue 
behind this.

diff --git a/kmymoney/converter/mymoneystatementreader.cpp 
b/kmymoney/converter/mymoneystatementreader.cpp index 
a93c38197..14d068f99 100644 --- 
a/kmymoney/converter/mymoneystatementreader.cpp +++ 
b/kmymoney/converter/mymoneystatementreader.cpp @@ -802,7 +802,7 @@ void 
MyMoneyStatementReader::processTransactionEntry(const 
MyMoneyStatement::Tra                      KMessageBox::information(0, 
i18n("This imported statement contains investment transactions with no 
share amount.  These transactions will be ignored."), i18n("No share 
amount provided"), QString("BlankAmount"));                      return; 
                  } -                MyMoneyMoney total = 
-statementTransactionUnderImport.m_amount - 
statementTransactionUnderImport.m_fees; +                MyMoneyMoney 
total = statementTransactionUnderImport.m_amount - 
statementTransactionUnderImport.m_fees;                  
s1.setPrice(MyMoneyMoney((total / 
statementTransactionUnderImport.m_shares).convertPrecision(file->security(thisaccount.currencyId()).pricePrecision()))); 
              } @@ -882,12 +882,17 @@ void 
MyMoneyStatementReader::processTransactionEntry(const 
MyMoneyStatement::Tra                  MyMoneyMoney total = 
statementTransactionUnderImport.m_amount + 
statementTransactionUnderImport.m_fees.abs();                  
s1.setPrice(MyMoneyMoney((total / 
statementTransactionUnderImport.m_shares).abs().convertPrecision(file->security(thisaccount.currencyId()).pricePrecision()))); 
              } -            if 
(statementTransactionUnderImport.m_eAction == 
eMyMoney::Transaction::Action::Buy) +            if 
(statementTransactionUnderImport.m_eAction == 
eMyMoney::Transaction::Action::Buy){                  
s1.setShares(statementTransactionUnderImport.m_shares.abs()); 
-            else +                
s1.setValue((statementTransactionUnderImport.m_amount + 
statementTransactionUnderImport.m_fees.abs())); +                
transfervalue = -statementTransactionUnderImport.m_amount; +            
} else {                  
s1.setShares(-statementTransactionUnderImport.m_shares.abs()); 
-            s1.setValue(-(statementTransactionUnderImport.m_amount + 
statementTransactionUnderImport.m_fees.abs())); -            
transfervalue = statementTransactionUnderImport.m_amount; 
+                s1.setValue(-(statementTransactionUnderImport.m_amount 
+ statementTransactionUnderImport.m_fees.abs())); +                
transfervalue = statementTransactionUnderImport.m_amount; +            } 
+ +          } else if ((statementTransactionUnderImport.m_eAction == 
eMyMoney::Transaction::Action::Shrsin) ||                     
(statementTransactionUnderImport.m_eAction == 
eMyMoney::Transaction::Action::Shrsout)) {

Regards,

Jonatan Cloutier

Le 2022-08-24 à 16 h 02, Jack via KMyMoney-devel a écrit :
> On 2022.08.05 14:05, Jack via KMyMoney-devel wrote:
>> On 2022.08.03 10:19, Jack via KMyMoney-devel wrote:
>>> On 8/3/22 02:03, Thomas Baumgart via KMyMoney-devel wrote:
>>>> On Mittwoch, 3. August 2022 01:40:50 CEST Jack via KMyMoney-devel 
>>>> wrote:
>>>>> I just looked at on of my investment account to reconcile the new 
>>>>> statement, and the brokerage account has a large negative balance. 
>>>>> Without doing a full audit, it appears that two stock sell 
>>>>> transactions (for the same security) last month are showing up in 
>>>>> the brokerage account as Payments instead of Deposits.  I'm know I 
>>>>> did a proper reconciliation last month, but now those numbers 
>>>>> don't match.  I have not yet gone through all my saved copies to 
>>>>> see when it changed, but that's next on my list.
>>>>>
>>>>> Just in case anyone has any ideas, one of the transactions is 
>>>>> below. I've trimmed the memo of lots of excess details Merrill 
>>>>> Lynch includes, and I trimmed the bankid.
>>>>>
>>>>>     <TRANSACTION commodity="USD" entrydate="2022-07-02"
>>>>> id="T000000000000025879" memo="Sale: PUTNAM ULTRA SHORT DURATION 
>>>>> INCOME
>>>>> FD..." postdate="2022-06-15">
>>>>>      <SPLITS>
>>>>>       <SPLIT account="A000345" action="" bankid="" id="S0001"
>>>>> memo="Sale: PUTNAM ULTRA SHORT DURATION INCOME FD..." number=""
>>>>> payee="" price="1/1" reconciledate="2022-06-30" reconcileflag="2"
>>>>> shares="-55723/50" value="-55723/50"/>
>>>>>       <SPLIT account="A000941" action="Buy" bankid="ID 20220614..."
>>>>> id="S0002" memo="Sale: PUTNAM ULTRA SHORT DURATION INCOME FD..."
>>>>> number="" payee="" price="-10/1" reconciledate="2022-06-30"
>>>>> reconcileflag="2" shares="-55723/500" value="55723/50"/>
>>>>>      </SPLITS>
>>>>>     </TRANSACTION>
>>>>>
>>>>> Account 345 is the brokerage account and 941 is the stock account
>>>>> within the investment account.
>>>> Looks like
>>>>
>>>>    shares="-55723/500" value="55723/50"
>>>>
>>>> is probably the source of the problem. That is simply wrong and may 
>>>> be caused by some bug. Somewhere, the split of the brokerage 
>>>> account (S0001) is created based on the value part of the security 
>>>> split (S0002) by simply inverting the value. Since value in S0001 
>>>> has the wrong sign you see those results. It could well be that 
>>>> this is still a problem within the investment transaction editor 
>>>> (which is the new kid on the block here).
>>>>
>>>>> One thing which caught my eye is that the split for the security 
>>>>> has 'action="Buy"' which worried me more before I noticed that it 
>>>>> has that value for lots of transactions other then stock sales.  
>>>>> Might that be an issue, or is it likely a red herring?
>>>> Within the XML file, the action string is always presented as "buy" 
>>>> and the sign of the split controls if it is actually a buy or a 
>>>> sell operation. The conversions happen in 
>>>> MyMoneySplit::investmentTransactionType and 
>>>> MyMoneySplit::setAction. So that is not a problem.
>>>>
>>>>> I'll post more when I have a tighter window on when the problem 
>>>>> started.
>>>> Did you enter the transactions manually or did you import them and 
>>>> edited them afterwards?
>>>
>>> First, on history, I have a backup on 7/2 prior to the creation of 
>>> that transaction.  My next backup was 7/27, which shows the 
>>> problem.  I had hoped to have a backup after the import and before 
>>> the reconciliation.  I was going to say I'm sure the problem was 
>>> introduced after 7/2, but the actual earliest possible date would be 
>>> closer to the beginning of June, when I did my prior large import 
>>> from Merrill Lynch.
>>>
>>> I'm pretty sure that was an imported transaction, and I do not 
>>> remember having to edit it, as I do with many other Merrill Lynch 
>>> transactions.  However, I am quite sure I was using git master when 
>>> I did that import.
>>>
>>> Also note that the sign is reversed for only two transactions, both 
>>> selling the same security, several days apart.  There are plenty of 
>>> other sell transactions in that same account which are correct.
>>>
>>> Would it help for me to test importing that account again for June?  
>>> I suppose I can download those transactions as OFX, if file import 
>>> would give the same values as direct connect. That way, I can test 
>>> several times, without repeatedly going back to the server.
>> Curiouser and curiouser.  I downloaded an OFX file for all investment 
>> transaction for that account for that month. Importing it into my 
>> current file said 22 matches and 2 added transaction.  Rhe ledger for 
>> the brokerage account shows that the new transactions identical to 
>> the two above problem transactions but shown (correctly) as deposits 
>> instead of payments.  However, those transactions are nowhere to be 
>> seen in the Investment account.  If I use the context menu to go the 
>> the investment account from one of the new transactions, it takes me 
>> to the old transaction.
>> Additional issue - the new transactions are not for the same 
>> security.  KMM creates new security accounts using something it 
>> extracts from the downloaded transaction, and for Merrill Lynch, in 
>> includes lots of extraneous stuff, such as date and/or price.  When I 
>> edit the transaction and change the security to the account name I 
>> use, the transaction now shows up properly in the Investment 
>> account.  However, when I use the context menu to switch between the 
>> Investment and Brokerage accounts, all is correct going from 
>> Investment to Brokerage, but going the other way, both the old and 
>> new transaction take me to the old one.
>> Then, deleting both old (wrong) transactions, and marking the new 
>> ones as reconciled, everything is back to normal - so I can continue 
>> with my daily use of the files.  I also now have enough backups that 
>> I can at least partly recreate some of these problems.  However, 
>> given that the current git master imports correctly, I suppose I have 
>> to assume it was a transient issue, so there's no real point in 
>> trying to track down the exact cause.  However, I'll be glad to do 
>> further testing if anyone thinks it would be useful.
>>
>> Separate note:  At some point during this process, I actually found a 
>> few transactions which were marked "R" for reconciled, but were also 
>> still marked as Imported.  These were all rather old transactions, 
>> and I can only assume that marking them Cleared at the time did not 
>> also clear the Imported marking. This is with git master (KMyMoney 
>> Version 5.1.80-932e4a272) so I don't know how it relates to bug 
>> 457484 (https://bugs.kde.org/show_bug.cgi?id=457484) which is with 
>> 5.1.2.
>
> Now I'm more confused than ever.  When I sent my previous message (5 
> Aug) the account in KMM was all correct, and matched the online bank 
> records.  I just looked at that account now, and the same two 
> transactions (from Jue 8 and 15) have reversed again, leaving me with 
> a negative cash balance.  There are no new transactions in that 
> account since prior to the reconciliation for 29 July.  I've been 
> running git master, compiled at least every three or four days.  I 
> know I can just create new transactions and delete the old ones, but 
> I'm having trouble even comprehending how this could have happened 
> without any editing of those transactions.
>
> Jack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20220825/bce2dfd8/attachment-0001.htm>


More information about the KMyMoney-devel mailing list