Re: Timezones and price fetcher
Fixed: https://bitbucket.org/blais/beancount/commits/2171ff658cc4ed507376fed1811b9e9b798fb30f Green CI build now: https://bitbucket.org/blais/beancount/addon/pipelines/home#!/results/17 On Sun, Apr 15, 2018 at 12:51 PM, Martin Michlmayr wrote: > * Martin Blais [2018-04-11 16:29]: > > You ask at 14:00 in which timezone? US 14:00 or Europe 14:00? > > If you don't know the instrument trades in the US, you ask at 14:00 in > > Europe timezone? > > Sorry, I thought you told the API "I want the exchange rate at 14:00 > time". If so, we'd all get the same answer regardless of our local > timezone. It would be nice to know what the APIs timezone is so we > know what "14:00" really means but that doesn't matter for beancount. > > If you only tell the API "I want the exchange rate now", then I think > beancount should store the time in UTC. > > > Our current API doesn't support you providing a time, just a date. > > You request for a price at a particular date. > > Ok, (I think) I see the problem. > > If the API queried by beancount only provides 1 rate per day, we could > easily find out what a "day" is according to them by doing a query > every hour for 24 hours. > > Or just pick mid-day UTC. > > -- > Martin Michlmayr > http://www.cyrius.com/ > > -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/20180415165103.zaixqwtthtn35fuu%40jirafa.cyrius.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhNe%2BNhNQxQ%3DUPs5b9kTBgnrQ9U-QdT3PU%2Bm8Kd7eC-M2g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: Timezones and price fetcher
On Sun, Apr 15, 2018 at 12:51 PM, Martin Michlmayr wrote: > * Martin Blais [2018-04-11 16:29]: > > You ask at 14:00 in which timezone? US 14:00 or Europe 14:00? > > If you don't know the instrument trades in the US, you ask at 14:00 in > > Europe timezone? > > Sorry, I thought you told the API "I want the exchange rate at 14:00 > time". If so, we'd all get the same answer regardless of our local > timezone. It would be nice to know what the APIs timezone is so we > know what "14:00" really means but that doesn't matter for beancount. > If you only tell the API "I want the exchange rate now", then I think > beancount should store the time in UTC. > If you store the timezone, there's no ambiguity. I made a couple decisions staring at this long enough: - The API will accept a time, not a date. bean-price will be in charge of deciding how to convert that (and for now, using the local time, because problems highlighted in prior discussion). - All the datetime instances have to be aware. No more usage of naive datetime instances anywhere. (I'm coming around to think that support naive datetimes in the Python datetime module API is a design flaw.) > > > Our current API doesn't support you providing a time, just a date. > > You request for a price at a particular date. > > Ok, (I think) I see the problem. > > If the API queried by beancount only provides 1 rate per day, we could > easily find out what a "day" is according to them by doing a query > every hour for 24 hours. > > Or just pick mid-day UTC. > > -- > Martin Michlmayr > http://www.cyrius.com/ > > -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/20180415165103.zaixqwtthtn35fuu%40jirafa.cyrius.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhN6F7atoQ1ie7Mo_8FuUhw9hhogexL1a%2BpfcMpnOwOQ8w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: Timezones and price fetcher
* Martin Blais [2018-04-11 16:29]: > You ask at 14:00 in which timezone? US 14:00 or Europe 14:00? > If you don't know the instrument trades in the US, you ask at 14:00 in > Europe timezone? Sorry, I thought you told the API "I want the exchange rate at 14:00 time". If so, we'd all get the same answer regardless of our local timezone. It would be nice to know what the APIs timezone is so we know what "14:00" really means but that doesn't matter for beancount. If you only tell the API "I want the exchange rate now", then I think beancount should store the time in UTC. > Our current API doesn't support you providing a time, just a date. > You request for a price at a particular date. Ok, (I think) I see the problem. If the API queried by beancount only provides 1 rate per day, we could easily find out what a "day" is according to them by doing a query every hour for 24 hours. Or just pick mid-day UTC. -- Martin Michlmayr http://www.cyrius.com/ -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/20180415165103.zaixqwtthtn35fuu%40jirafa.cyrius.com. For more options, visit https://groups.google.com/d/optout.
Re: Timezones and price fetcher
On Thu, Apr 12, 2018 at 2:15 AM, Justus Pendleton wrote: > I don't see "lining up with markets" as a necessary condition since that's > poorly defined for dealing with other timezones anyway. > > If I run bean-price when the market is open I'm going to get a quasi-real > time quote that is delayed an arbitrary and possibly unknown amount of time > anyway. It won't **really** be the price at 12:07pm. (This will vary > depending on the source and the price fetcher, of course.) > > Just using the user's timezone seems to make the most since to me. But > what happens with downloaded prices when the user moves to a different > timezone? Nothing changes. > Or is the timezone going to be stored with the fetched price? > No, unless there's a good reason to. That would break things (dates changing unexpectedly). Want to keep it simple. -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/c6450704-b02f-4698-9b5f-b0dc8d699f75%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhPRqX4YkgkW3nAxGFR2ekffv1oDvpdXSzQHtBvRiCUD6A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: Timezones and price fetcher
On Wed, Apr 11, 2018 at 3:23 PM, Martin Michlmayr wrote: > * Martin Blais [2018-04-10 22:07]: > > Any thoughts welcome. I lean toward (B), but I'm annoyed. > > Maybe I misunderstand the problem, but with option (A) even if I don't > know what timezone they use, I should get a consistent result if I ask > the API for an exchange rate for a specific time (X) on a specific > day. What do you mean by "consistent"? Consistently one day off if it is? > Maybe I don't know what timezone X is (as you say, only one > publishes that info), but X is always going to be X from the POV of > the source (i.e. the API). (Similarly, if I in Europe ask the API for > a rate at, let's say, 14:00, and you in New York ask for the rate at > 14:00, we should get the same result. And I don't mean asking at > 14:00 hours but asking for the rate at 14:00) > You ask at 14:00 in which timezone? US 14:00 or Europe 14:00? If you don't know the instrument trades in the US, you ask at 14:00 in Europe timezone? It also depends how the API expects its input. If it expects a date, it's implicitly that of the instruments. If it expects a timestamp, there's no date, it's up to you to take the user's input date and convert it to a timestamp, assuming some timezone. Our current API doesn't support you providing a time, just a date. You request for a price at a particular date. The output is also coerced to be only a date too (the Price directive, like all other directives, supports only a date). (I don't think adding time support to all directives would be a reasonable compromise just for this.) If I understand (B) correctly, someone moving from Japan to the US > would suddenly get different results, Yes, the date might differ. > and I think making the result > dependent on where you are is a bad idea. > I agree, but then I need the timezone of those instruments, and some instruments don't have a timezone (FX). I don't think there's any good solution for this than to input/output time from those fetchers, but I do need to choose how to convert timestamps to dates and dates to timestamps consistently (that's why unit tests are broken if you run them from Europe right now). -- > Martin Michlmayr > http://www.cyrius.com/ > > -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to beancount+unsubscr...@googlegroups.com. > To post to this group, send email to beancount@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/beancount/20180411192331.nnbpxcox6jepe3ro%40jirafa.cyrius.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhO261Mcqgk-vYhSyxWC69ep%3D5VtCeehjU7LDHxjTQkefg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
Re: Timezones and price fetcher
* Martin Blais [2018-04-10 22:07]: > Any thoughts welcome. I lean toward (B), but I'm annoyed. Maybe I misunderstand the problem, but with option (A) even if I don't know what timezone they use, I should get a consistent result if I ask the API for an exchange rate for a specific time (X) on a specific day. Maybe I don't know what timezone X is (as you say, only one publishes that info), but X is always going to be X from the POV of the source (i.e. the API). (Similarly, if I in Europe ask the API for a rate at, let's say, 14:00, and you in New York ask for the rate at 14:00, we should get the same result. And I don't mean asking at 14:00 hours but asking for the rate at 14:00) If I understand (B) correctly, someone moving from Japan to the US would suddenly get different results, and I think making the result dependent on where you are is a bad idea. -- Martin Michlmayr http://www.cyrius.com/ -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscr...@googlegroups.com. To post to this group, send email to beancount@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/20180411192331.nnbpxcox6jepe3ro%40jirafa.cyrius.com. For more options, visit https://groups.google.com/d/optout.